news 2026/10/1 2:43:06

【Linux笔记】冯诺依曼体系结构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux笔记】冯诺依曼体系结构

1.冯诺依曼体系结构

冯诺依曼体系结构图

1.1 五大核心组件说明

A. 输入设备:键盘、磁盘、鼠标、摄像头、网卡 ... ...

B. 输出设备:磁盘、显示器、网卡、打印机

外设 = 输入设备 + 输出设备

C. 存储器:本质是内存,用来存放程序指令和数据

D. 运算器:执行算术运算(加减乘除)和逻辑运算(与或非比较)

E. 控制器:指挥协调各部件工作,取指令、译码、发出控制信号

CPU = 运算器 + 控制器

1.2 如何通过冯诺依曼体系理解软件运行之前加载到内存?

核心原因:因为CPU 只能直接访问内存

具体原因:

①硬件的“物理限制”:

软件作为.exe执行文件存储在磁盘当中,在冯诺依曼架构中,CPU 的电路总线是直接连着内存的。

它根本没有设计直接去硬盘里“抓取”指令的功能,内存是 CPU 唯一能直接寻址和交互的工作区。

②弥补“速度鸿沟”:

CPU 的运算速度极快(纳秒级),而硬盘的读取速度相对极慢(微秒/毫秒级)。

如果让 CPU 直接等硬盘,整个系统会卡死,内存作为中高速媒介,起到了至关重要的缓冲作用。

1.3 如何理解冯诺依曼体系结构的局限?

① 算力与传输 的局限(冯诺依曼瓶颈):

CPU 的极速运算与内存的缓慢传输严重脱节。

CPU 就像一台没有供油的超级引擎,绝大部分时间都在“被迫发呆”等待数据。

② 指令/数据共享总线 的局限:

指令和代码被存放在一起并共用一条通道。

CPU 每次只能拿一个,无法同时抓取,形成了硬件底层的“强制排队”。

③不适应高并发 的局限:

CPU的底层逻辑是严格的“读一条、做一条”顺序执行。

面对当今(如 AI 矩阵运算)需要同时处理海量数据的场景,显得力不从心。

1.4 如何通过冯诺依曼体系结构来理解数据流动?

以 a + b 为例看数据流动 步骤 1: 输入 → 内存 输入设备 → 总线 → 内存 键盘输入 a=3, b=5,存入内存地址 M[100] 和 M[104] 步骤 2: 内存 → CPU (取指) 控制器发出"取指"命令 内存 M[PC] → 数据总线 → 指令寄存器(IR) 指令: LOAD R1, M[100] 步骤 3: 内存 → CPU (取数) 内存 M[100] → 数据总线 → 寄存器 R1 (R1 = 3) 内存 M[104] → 数据总线 → 寄存器 R2 (R2 = 5) 步骤 4: CPU 内部运算 R1 + R2 → ALU → 结果存入 R3 (R3 = 8)

2.操作系统

2.1 操作系统的核心概念

操作系统的本质:操作系统(OS)是一款进行对硬件资源和软件资源进行管理的条软件

操作系统的核心:向下封装硬件底层的丑陋、碎片与复杂,向上为软件代码的运行提供一个安全、纯粹且资源无限的虚拟环境。

操作系统包括:

  • 内核: 进程管理、内存管理、文件管理、设备管理

  • 其他程序:函数库、shell程序等

操作系统概括图:

2.2 操作系统设计的目的

操作系统设计的核心目的:

①向上:方便用户使用(方便性)

②向下: 高效管理硬件(有效性)

操作系统设计四大设计目的:

方便性 : 降低用户使用计算机的难度 ,不用直接写汇编操作硬件,敲命令或点鼠标就行

有效性 : 提高系统资源的利用率 ,多道程序设计让 CPU 不空闲,内存不浪费

可扩充性 :方便添加新功能和新硬件,模块化设计,新设备加入只需加驱动程序

开放性 : 遵循标准,兼容不同软硬件, 不同厂商的设备都能用同一套接口

操作系统设计的根本目的:让用户更方便地使用计算机,同时让硬件资源被更高效地利用。

操作系统设计展开图:

2.3 操作系统如何管理资源

管理 = 描述 + 组织

操作系统并不"亲自动手"使用资源,而是通过数据结构来描述资源的状态,再通过算法来组织资源的分配与回收。

A.描述

硬件是物理世界里的硅片、电容和磁道,代码根本无法直接触碰它们,通过“结构体 或 类”在虚拟世界里对硬件进行描述。

内存管理:

内存管理:物理内存只是无数个电容。 OS 用一个 struct page 结构体去代表每 4KB 的物理内存,用链表或位图把它们连起来。 struct page { int ref_count; int flags; ... };

进程管理:

进程管理:进程是动态的。 OS 用一个大结构体 task_struct (Linux 中的 PCB) 把进程的名字、优先级、占用的内存、打开的文件死死记录下来。 struct task_struct { pid_t pid; int priority; long state; ... };

B.组织

通过对资源进行描述,有了各种结构体,OS通过合适的"策略/算法 与 数组结构" 对资源进行组织。

示例:

怎么在几千个空闲内存块里找到最合适的一个? 伙伴系统算法
怎么在几百个的进程里找出下一个该用 CPU 的? Linux CFS 调度器把所有进程的 PCB 挂在一棵红黑树上,算法每次只取最左边的节点。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 2:41:41

PDF修复间:如何批量生成书签、解除限制、统一页面尺寸一次搞定

PDF修复间:如何批量生成书签、解除限制、统一页面尺寸一次搞定 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项目地址: ht…

作者头像 李华
网站建设 2026/10/1 2:41:33

python-day07-模块

目录 一、什么叫模块? 二、常用的内置模块 2.1.数学计算模块-math 2.2.日期时间模块-datetime 1)datetime类 2)date类 3)time类 4)计算时间跨度-timedelta 5)字符串时间转换-strftime、strptime 2.3.正则表…

作者头像 李华
网站建设 2026/10/1 2:40:07

倩女幽魂大盗宝藏数值推演系统原理与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 2:39:16

把现成数据库变成在线表格:NocoDB 自托管实操笔记

把现成数据库变成在线表格:NocoDB 自托管实操笔记 【免费下载链接】nocodb 🔥 🔥 🔥 A Free & Self-hostable Airtable Alternative 项目地址: https://gitcode.com/GitHub_Trending/no/nocodb NocoDB 是一款免费、可自…

作者头像 李华
网站建设 2026/10/1 2:37:59

SIMD与SIMT深度解析:CPU向量化与GPU线程并行的本质区别

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华