从冯诺依曼到操作系统:打通 Linux 底层核心逻辑


🔥草莓熊Lotso: 个人主页
❄️个人专栏: 《C++知识分享》 《Linux 入门到实践:零基础也能懂》
✨生活是默默的坚持,毅力是永久的享受!


🎬 博主简介:


文章目录

  • 前言:
  • [一. 冯诺依曼体系结构:现代计算机的硬件协作规则](#一. 冯诺依曼体系结构:现代计算机的硬件协作规则)
    • [1.1 计算机的核心组件](#1.1 计算机的核心组件)
    • [1.2 关键补充:CPU 的核心地位](#1.2 关键补充:CPU 的核心地位)
    • [1.3 数据流动实际场景:QQ 发送文字消息和文件](#1.3 数据流动实际场景:QQ 发送文字消息和文件)
  • [二. 操作系统:软硬件的 "中间人" 与 "管理者"](#二. 操作系统:软硬件的 “中间人” 与 “管理者”)
    • [2.1 操作系统的核心概念](#2.1 操作系统的核心概念)
    • [2.2 设计 OS 的目的(核心定位:承上启下的关键角色)](#2.2 设计 OS 的目的(核心定位:承上启下的关键角色))
    • [2.3 四大核心功能:OS的 "管理使命"](#2.3 四大核心功能:OS的 “管理使命”)
    • [2.4 "管理" 的本质:3步搞定所有资源](#2.4 “管理” 的本质:3步搞定所有资源)
    • [2.5 系统调用与库函数:OS的 "对外接口"](#2.5 系统调用与库函数:OS的 “对外接口”)
  • 结尾:

前言:

无论是日常使用的 Linux 服务器,还是开发时运行的应用程序,其底层都离不开两大核心基础:冯诺依曼体系结构(硬件协作规则)操作系统(软硬件中间层) 。很多开发者只关注上层代码,却忽略了这两层的核心逻辑,导致遇到 "数据为什么要先入内存","OS 为什么能管理进程" 等问题时难以理解。本文先拆解冯诺依曼体系的硬件组成与数据流动规则,再延伸到操作系统的定位、功能与 "管理" 本质,帮你打通 "硬件→OS→应用" 的全链路认知,理解 Linux 系统运行的底层逻辑。


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

冯诺依曼体系由五大核心硬件组件构成,各组件各司其职。我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

1.1 计算机的核心组件

截止目前,我们所认识的计算机,都是由一个个的硬件组件组成:

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

🔥 关于冯诺依曼,必须强调几点

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

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


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

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

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

"QQ 发送'在吗?'消息 和 发送文件" 为例,直观理解数据如何遵循冯诺依曼规则流动:



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

冯诺依曼体系定义了硬件规则,但直接操作硬件过于复杂(需处理设备差异、数据格式等)。操作系统(OS)作为核心系统软件,承接硬件、服务应用,核心使命是 "管理资源 + 屏蔽复杂性" ,可以理解为是一个进行软硬件资源管理的软件

📝 操作系统包括

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

2.1 操作系统的核心概念

操作系统是一个 "软件集合",分为广义狭义两类:

  • 狭义 OS(内核 / Kernel):直接与硬件交互,核心包含进程管理、内存管理、文件管理、驱动管理四大模块;
  • 广义 OS:内核 + Shell(命令行解释器)+ 函数库(如 glibc)+ 系统工具(如 ls、cp),为用户和应用提供完整运行环境。

我们日常使用的 CentOS、Ubuntu 属于广义 OS,而 Linux 内核则是狭义 OS 的核心(我们后面所讲的操作系统指的也是这个)。

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

OS 在计算机架构中处于 "中间层",核心作用是 "对下管理硬件,对上服务应用"

  • 对下:屏蔽硬件差异(如不同品牌网卡的驱动适配),管理所有软硬件资源(统一管理 CPU、内存、硬盘等资源),遵循冯诺依曼规则协调数据流动;
  • 对上:为用户程序,上层应用程序(如 QQ、GCC)提供统一接口(系统调用 / 库函数),让应用无需关注硬件细节(如如何读写硬盘、分配内存),拥有一个良好的执行环境。

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

在整个计算机软硬件架构中,操作系统的定位是:一款纯正的 "搞管理" 的软件

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

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

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

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

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

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

OS 通过两层接口向应用提供服务,降低使用门槛:

  • 系统调用 :内核直接提供的底层接口(如fork创建进程、open打开文件),功能基础、权限高,但使用复杂;
  • 库函数 :对系统调用的封装(如 glibc 的printf封装writefopen封装open),简化使用,提供额外功能(如缓存、错误处理);
  • 调用链路应用→库函数→系统调用→OS 内核→硬件

结合银行系统和之前的几张图来理解:

  • 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,在这部分由操作系统提供的接口,叫做系统调用。
  • 系统调用在使用上,功能比较基础,对用户的要求也相对比较高,所以有心的开发者就可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于上层用户或者开发者进行二次开发,且这样做可以增强可移植性,跨平台性

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

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

结尾:

html 复制代码
🍓 我是草莓熊 Lotso!若这篇技术干货帮你打通了学习中的卡点:
👀 【关注】跟我一起深耕技术领域,从基础到进阶,见证每一次成长
❤️ 【点赞】让优质内容被更多人看见,让知识传递更有力量
⭐ 【收藏】把核心知识点、实战技巧存好,需要时直接查、随时用
💬 【评论】分享你的经验或疑问(比如曾踩过的技术坑?),一起交流避坑
🗳️ 【投票】用你的选择助力社区内容方向,告诉大家哪个技术点最该重点拆解
技术之路难免有困惑,但同行的人会让前进更有方向~愿我们都能在自己专注的领域里,一步步靠近心中的技术目标!

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

✨把这些内容吃透超牛的!放松下吧✨ ʕ˘ᴥ˘ʔ づきらど

相关推荐
yuanmenghao14 小时前
自动驾驶中间件iceoryx - 内存与 Chunk 管理(一)
c++·vscode·算法·链表·中间件·自动驾驶·柔性数组
haiyu_y14 小时前
Day 55 序列预测任务详解
人工智能·pytorch·深度学习
艾莉丝努力练剑14 小时前
【QT】初识QT:背景介绍
java·运维·数据库·人工智能·qt·安全·gui
WLJT12312312314 小时前
有色金属:高端制造的核心赋能材料
大数据·人工智能·区块链
石像鬼₧魂石14 小时前
ettercap 命令执行输出的详细解读
linux·学习
火星资讯14 小时前
第五届智能制造创新大赛—“AI+制造”解决方案赛道总决赛在衢州成功举办
大数据·人工智能·科技
职业码农NO.114 小时前
开源:AI+无人机巡检系统项目调研
人工智能·python·开源·无人机·智能识别·无人机巡检
Grassto14 小时前
Go 在哪里找第三方包?Module 查找顺序详解
开发语言·后端·golang
橘颂TA14 小时前
【剑斩OFFER】算法的暴力美学——面试题 01.02 :判定是否互为字符串重排
c++·算法·leetcode·职场和发展·结构与算法