
🔥个人主页:Cx330🌸
❄️个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》《C++知识分享》
《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔
《Git深度解析》:版本管理实战全解
🌟心向往之行必能至
🎥Cx330🌸的简介:

前言:
要理解 Linux 进程的本质,必须先回溯现代计算机的底层逻辑 ——冯诺依曼体系结构。这一由冯・诺依曼提出的经典架构,确立了计算机的核心组成范式:运算器、控制器、存储器、输入设备、输出设备五大组件,且关键特征是 “存储程序”—— 将指令和数据一同存储在存储器中,由控制器按顺序读取并驱动运算器执行
在冯诺依曼架构中,存储器(内存) 是核心枢纽:CPU(运算器 + 控制器)从内存中获取指令和数据,完成计算后再将结果写回内存;输入设备(如键盘、磁盘)向内存传入数据,输出设备(如显示器、打印机)从内存读取结果。这种 “CPU – 内存” 为核心的交互模式,决定了后续操作系统和进程设计的底层约束 —— 所有程序必须加载到内存才能被 CPU 执行,而如何高效管理内存、协调 CPU 与设备的资源分配,成为了技术演进的核心命题
AI创作者xAMA第二期,发布AI相关内容得积分,积分可兑换各种奖品哦~对AI感兴趣的朋友还可以来活动里和各位AI大佬们交流,很有价值的活动,感兴趣的朋友可以来参加哦

一. 冯诺依曼体系结构
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系

1.1 计算机的核心组件
截止目前,我们所认识的计算机,都是由一个个的硬件组件组成:
- 输入单元:包括键盘,鼠标,扫描仪,写板等
- 中央处理器(CPU):含有运算器和控制器等
- 输出单元:显示器,打印机等。
- 即可以是输入又是输出单元:网卡,硬盘等

关于冯诺依曼,必须强调几点:
- 这里的存储器指的是内存
- 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)(数据层面)
- 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取
- 一句话总结,CPU不和外设打交道,所有设备都只能直接和内存打打交道
1.2 为什么存在内存?
——给电脑提供性价比,提高电脑的效率!

1.3 CPU 的核心地位
- 运算器和控制器共同组成中央处理器(CPU),是计算机的 “大脑”;
- 现代 CPU 会集成多级缓存(L1、L2、L3),但缓存本质是内存的 “加速延伸”,核心数据交互仍遵循冯诺依曼规则
- 存储层次关系(从快到慢、成本从高到低):CPU 寄存器 → 高速缓存 → 内存 → 本地磁盘 → 远程存储。



二. 操作系统(Operator System)
2.1 操作系统的核心概念
操作系统是一个 “软件集合”,分为广义和狭义两类:
- 狭义 OS(内核 / Kernel):直接与硬件交互,核心包含进程管理、内存管理、文件管理、驱动管理四大模块;
- 广义 OS:内核 + Shell(命令行解释器)+ 函数库(如 glibc)+ 系统工具(如 ls、cp),为用户和应用提供完整运行环境

2.2 为什么要有操作系统
OS 存在就干两件事,刚好卡在 “上下之间”:
- 承上:让用户 / 软件 “省心”—— 你不用懂怎么操控 CPU 寄存器、怎么读写硬盘,点一下鼠标就能启动程序,全靠 OS 把复杂的硬件操作 “包装” 成简单的指令
- 启下:让硬件 “物尽其用”—— 比如 CPU 就一个,却能同时跑多个程序;内存就那么大,却能装下好几个 APP,都是 OS 在背后协调硬件资源,避免浪费
举个例子:你点外卖(应用),不用自己找骑手、抢餐箱(硬件)—— 外卖平台(OS)会帮你协调,这就是 “承上启下” 的作用。

2.3 四大核心功能
这个 “大管家” 的核心活儿就 4 件,覆盖了硬件资源的全生命周期:


2.4 如何理解“管理”
OS 的管理逻辑和现实场景(如学校校长管理学生)完全一致。核心分为两步,这也是Linux内核的设计思路:
- 描述被管理对象:用结构体(struct)记录资源信息
- 组织被管理对象:用高效数据结构(链表,红黑树等)组织结构体
- 总结:先描述,再组织(下面的图要结合之前的图一起理解)


2.5 系统调用与库函数概念
OS 不会 “主动干活”,得等别人 “叫它”—— 这俩就是叫它的方式:
- 系统调用:直接 “喊 OS 干活” 的 “原始指令”。比如程序要读硬盘里的文件,就得通过系统调用,让 OS 去操作硬盘。
- 库函数:把系统调用 “打包好的工具”。比如编程语言里的 “读文件函数”,其实是把系统调用裹了一层,让程序员用起来更方便。
- 调用链路:应用→库函数→系统调用→OS 内核→硬件
💡简单说:系统调用是 “直接找管家要钥匙”,库函数是 “管家把钥匙装在工具箱里给你”

🔔思考:大家想想操作系统是怎么进行进程管理的呢?
- 很简单,先把进程描述起来,再把进程组织起来(简洁来说就是:先描述在组织)!!!





