🔥个人主页: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 件,覆盖了硬件资源的全生命周期:

  1. 进程管理:给程序 “排档期”比如你同时开着微信和视频,OS 会让 CPU 在两个程序之间快速切换(快到你感觉不到卡顿),保证每个程序都能分到 “干活时间”。
  2. 内存管理:给程序 “分工作台”打开一个游戏,OS 会专门划一块内存给它用;游戏关掉后,又把这块内存 “收回来” 给其他程序 —— 避免内存被 “占着不用”。
  3. 文件管理:给数据 “建仓库”你电脑里的文件夹、文档,本质是 OS 把硬盘里的二进制数据,包装成了 “能看懂的文件”,还负责给文件分类、存 / 取、防丢
  4. 设备管理:给外设 “当翻译”你插个 U 盘、连个打印机,OS 会自动识别它们,把设备的 “语言” 翻译成系统能懂的指令 —— 不用你手动调硬件参数

2.4 如何理解“管理”

OS 的管理逻辑和现实场景(如学校校长管理学生)完全一致。核心分为两步,这也是Linux内核的设计思路:

  • 描述被管理对象:用结构体(struct)记录资源信息
  • 组织被管理对象:用高效数据结构(链表,红黑树等)组织结构体
  • 总结:先描述,再组织(下面的图要结合之前的图一起理解)

2.5 系统调用与库函数概念

OS 不会 “主动干活”,得等别人 “叫它”—— 这俩就是叫它的方式:

  • 系统调用:直接 “喊 OS 干活” 的 “原始指令”。比如程序要读硬盘里的文件,就得通过系统调用,让 OS 去操作硬盘。
  • 库函数:把系统调用 “打包好的工具”。比如编程语言里的 “读文件函数”,其实是把系统调用裹了一层,让程序员用起来更方便。
  • 调用链路应用→库函数→系统调用→OS 内核→硬件

💡简单说:系统调用是 “直接找管家要钥匙”,库函数是 “管家把钥匙装在工具箱里给你”

🔔思考:大家想想操作系统是怎么进行进程管理的呢?

  • 很简单,先把进程描述起来,再把进程组织起来(简洁来说就是:先描述在组织)!!!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐