找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2601

积分

0

好友

350

主题
发表于 2 小时前 | 查看: 1| 回复: 0
本帖最后由 云栈运维云原生 于 2026-1-29 19:11 编辑

作者:草莓熊Lotso
原文:https://blog.csdn.net/2503_91389547/article/details/155520086

前言

日常用的 Linux 服务器、开发时跑的各种程序,看起来离硬件很远,但真正决定“它为什么这样运行”的,往往就两层:冯诺依曼体系结构(硬件协作规则)操作系统(软硬件中间层)
很多人写业务代码没问题,一旦碰到“为什么数据总要先进内存”“OS 凭什么能管住一堆进程”这类问题,就会卡住。原因通常不是你不努力,而是链路没打通。

这篇文章按“从硬到软”的顺序走一遍:先把冯诺依曼体系里硬件如何分工、数据如何流动讲清楚;再把 OS 的定位、核心功能,以及它所谓“管理”的底层方法拆开。目标很明确:把 硬件 → OS → 应用 这条链路在脑子里连起来,之后再看 Linux 的很多现象会顺得多。

一. 冯诺依曼体系结构:现代计算机的硬件协作规则

冯诺依曼体系可以理解为一套“硬件协作的基本约定”。无论是笔记本还是服务器,大多数机器的基本组织方式都绕不开它。

冯诺依曼体系结构示意

1.1 计算机的核心组件

站在硬件分工的角度看,计算机由多个部件共同完成“输入—处理—存储—输出”的闭环:

  • 输入单元:键盘、鼠标、扫描仪、写板等
  • 中央处理器(CPU):包含运算器和控制器
  • 输出单元:显示器、打印机等
  • 既是输入又是输出:网卡、硬盘等(既能读也能写)

把常见组件和职责放在一起更直观:

组件 功能描述 常见设备
输入设备 向计算机输入数据 / 指令 键盘、鼠标、扫描仪、触摸屏、U 盘
输出设备 将计算机处理后的结果呈现给用户 显示器、打印机、音箱、硬盘
存储器 存储数据和指令(此处特指内存 / RAM DDR 内存、SDRAM
运算器 执行算术运算(加减乘除)和逻辑运算(与或非) CPU 中的 ALU(算术逻辑单元)
控制器 协调各组件工作,控制指令执行顺序 CPU 中的控制单元(CU)

理解冯诺依曼体系时,有几条“底层硬规则”一定要记住(不然很多现象会解释不通):

  • 这里的存储器指的是内存
  • 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)(数据层面)
  • 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取
  • 一句话总结,CPU不和外设打交道,所有设备都只能直接和内存打打交道。

也就是说:CPU 并不会直接拿着数据去跟键盘、硬盘“对话”,它的读写对象是内存;外设要参与数据交换,也得先把数据放进内存或者从内存取走。内存不是“可有可无”,它就是这个体系的中枢缓冲区。

📊 图片理解:(为什么要存在内存?)

为什么需要内存-1

为什么需要内存-2

1.2 关键补充:CPU 的核心地位

CPU 之所以像“大脑”,不仅因为它能算,更因为它负责“指挥谁先做什么、数据怎么走”:

  • 运算器 + 控制器 = 中央处理器(CPU
  • 现代 CPU 里会有多级缓存(L1、L2、L3),但缓存更像是内存访问的加速通道,本质仍是在围绕“内存—CPU”的交互展开
  • 存储层次一般满足:越靠近 CPU 越快也越贵
    CPU 寄存器 → 高速缓存 → 内存 → 本地磁盘 → 远程存储。

存储层次结构

1.3 数据流动实际场景:QQ 发送文字消息和文件

抽象规则理解起来费劲,就拿一个常见动作来做“数据流”演练:“QQ 发送'在吗?'消息 和 发送文件”
你会发现不管是文字还是文件,本质都要遵循同一套路径:外设/网络的数据先进入内存,CPU 再围绕内存进行处理,最后再由相关设备完成输出/发送。

QQ发送文字消息数据流

QQ发送文件数据流

二. 操作系统:软硬件的 “中间人” 与 “管理者”

冯诺依曼体系把硬件分工和数据通路规定得很清楚,但问题也随之而来:如果让开发者直接面对硬件差异、设备协议、数据搬运细节,开发成本会爆炸。
所以需要一个“中间层”把复杂性挡住:操作系统OS)。它的关键职责可以概括为两句话:“管理资源 + 屏蔽复杂性”可以理解为是一个进行软硬件资源管理的软件

📝 操作系统包括:  

  • 内核(进程管理,内存管理,文件管理,驱动管理)  
  • 其他程序(例如函数库,shell程序等)

2.1 操作系统的核心概念

从组成范围看,OS 常被分成广义狭义

  • 狭义 OS(内核 / Kernel):直接与硬件打交道,核心就是进程管理、内存管理、文件管理、驱动管理这四块
  • 广义 OS:在内核之外,还包含 Shell、函数库(如 glibc)、系统工具(如 lscp),给用户提供完整可用的环境

因此,CentOS、Ubuntu 这种发行版属于广义 OS;而 Linux 内核 是狭义 OS 的核心(下文提到“操作系统”,主要指这一层)。

广义与狭义OS结构

2.2 设计 OS 的目的(核心定位:承上启下的关键角色)

把 OS 放到整体架构里看,它的位置很清晰:夹在硬件与应用之间,做“承上启下”。

  • 对下:统一管理 CPU、内存、硬盘、网卡等资源,同时把硬件差异(例如不同网卡驱动)屏蔽起来;并在底层遵循冯诺依曼规则去组织数据流动
  • 对上:给应用提供稳定一致的接口(系统调用/库函数),让上层无需关心“怎么读盘、怎么分配内存、怎么和设备交互”,只要按接口用就行

OS承上启下示意

2.3 四大核心功能:OS的 “管理使命”

如果只用一句话定义 OS 的工作内容,那就是:它是一款纯正的“做管理”的软件。

📊 四大核心功能(这里暂时只做了解即可)

模块 核心目标 核心操作 实际意义
(1)进程管理:CPU 资源的 “调度员” 解决 “CPU 资源有限,进程众多” 的竞争问题,让多进程公平、高效执行 进程创建(fork)、调度(如 Linux 的 O(1) 算法)、终止、通信(IPC); 让你同时运行浏览器、终端、编译器时,不会出现 “一个程序占满 CPU” 的情况。
(2)内存管理:内存空间的 “管理员” 高效分配、回收内存,为进程提供独立地址空间,避免冲突和浪费; 内存分配、回收,虚拟地址→物理地址映射(页表 + MMU); 每个进程都以为自己独占内存,互不干扰,同时最大化利用物理内存
(3)文件管理:存储资源的 “管家” 管理硬盘等存储设备中的文件,提供统一访问接口 文件创建、删除、读写,权限控制(如 Linux 的 rwx); 你无需关心文件在硬盘的物理位置,通过 lsopen 等命令即可操作。
(4)驱动管理:硬件设备的 “翻译官” 为硬件提供驱动程序,将 OS 的统一指令转换为硬件能识别的信号 驱动程序的加载、管理与交互; 插入 U 盘自动识别、网卡正常上网、键盘输入被响应,都依赖驱动管理。

OS四大管理模块

2.4 “管理” 的本质:3步搞定所有资源

OS 的“管理”看似高大上,拆开其实很朴素,和现实里“校长管理学生”是一个套路。Linux 内核里大量设计都能用这个框架去理解:

  • 描述被管理对象:用结构体(struct)把资源的关键信息记录下来
  • 组织被管理对象:用合适的数据结构(链表、红黑树等)把这些结构体组织起来,便于查找、遍历、调度
  • 总结:先描述,再组织(下面的图要结合之前的图一起理解)

管理本质-描述与组织

管理本质-数据结构组织

2.5 系统调用与库函数:OS的 “对外接口”

理解 OS 还绕不开一个关键点:应用到底怎么“使用”内核能力?答案是两层接口:

  • 系统调用:内核直接提供的底层接口(如 forkopen),能力基础、权限高,但写起来更繁琐
  • 库函数:对系统调用的再封装(例如 glibc 的 printf 封装 writefopen 封装 open),让开发更省心,同时加入缓存、错误处理等机制
  • 调用链路应用→库函数→系统调用→OS 内核→硬件

系统调用与库函数示意

从开发视角看,操作系统对外像一个整体,但它会开放一部分“可被调用的入口”,这部分入口就是系统调用。系统调用往往比较底层、语义偏原始,所以很多开发者(或标准库维护者)会在其上做封装,形成库函数。这样做不仅提升易用性,还能增强可移植性,跨平台性

📌思考:学到这里,大家想想操作系统是怎么进行进程管理的呢?  

  • 很简单,先把进程描述起来,再把进程组织起来!!!

结尾

结语:冯诺依曼体系是硬件的 “协作准则”,操作系统是软硬件的 “中间管理者”,两者共同构成了 Linux 系统运行的底层基础。理解这两层逻辑,能让你从 “只会用 Linux” 升级到 “理解 Linux”—— 遇到 “权限不足”“内存泄漏” 等问题时,能快速定位到底层原因。后续我们可以深入拆解 Linux 内核的具体实现,如task_struct的结构、进程调度的 O (1) 算法、虚拟内存的映射机制等。

想继续系统性补齐底层知识脉络,也可以到 云栈社区https://yunpan.plus ) 找同主题讨论与资料沉淀。

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-29 21:59 , Processed in 0.177053 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表