文章目录
前言
一、计算机的"基因密码"——冯诺依曼体系结构
冯诺依曼体系结构(Von Neumann Architecture)是现代计算机设计的基础框架,由数学家约翰·冯·诺依曼(John von Neumann)于1945年提出。其核心思想是将程序和数据存储在同一存储器中,并通过指令执行机制完成计算任务,结构图如下。
1.1 硬件四重奏:核心部件揭秘
存储器:
- 相当于计算机的"短期记忆库",这里的内存(Memory)可不是硬盘哦!
- 黄金法则:CPU只能与内存直接对话,外设数据必须经过内存中转
输入输出设备:
- 输入设备:键盘与鼠标是典型的输入设备
- 输出设备:显示器打印机等则是输出设备
- 输入输出设备统称外设
运算器:
- 算术逻辑单元(ALU):负责1+1=2这样的数学运算
- 控制单元(CU):协调各硬件工作
- 关键理解:CPU处理速度比外设快万倍,这解释了为什么需要内存做缓冲
数据高速公路(总线)
- 系统总线:CPU与内存的专用通道
- I/O总线:外设接入的通用通道
- 类比城市交通网,不同等级道路承载不同流量
通过日常案例理解设计哲学:
在Word写文档时:
1.键盘(输入设备)→ 内存暂存字符
2. CPU实时处理排版指令
3. 最终成果由内存→硬盘(输出设备)保存
1.2 木桶效应与存储金字塔
由于输入输出设备太慢,所有的数据先缓存到内存当中,再由CPU与内存进行并行运算,提高运算效率。
存储金字塔规则(速度降序):
CPU寄存器 → 2. 高速缓存 → 3. 内存 → 4. 磁盘
关于冯诺依曼,需要注意:
- 这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
- 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
二、操作系统(Operator System)
2.1 系统架构全景图
笼统的理解 :任何计算机系统都包含一个基本的程序集合,称为操作系统(OS),用来管理上述的冯诺依曼硬件结构,其本身是一款软件。其次,我们了解到,CPU的控制器可以调度什么时候开启或关闭输入设备、输出设备等,而CPU的控制器信号就来源于操作系统的指令。
核心组件:
-
内核:系统的"心脏",包含四大管理模块(进程管理,内存管理,文件管理,驱动管理)
-
Shell:用户与内核的"翻译官"
-
驱动程序:硬件的"专属说明书"
所有的硬件如果要让软件访问必须要有对应的驱动程序。
设计OS的目的
- 与硬件交互,管理所有的软硬件资源(手段)
- 为用户程序(应用程序)提供一个良好、稳定、安全的执行环境(目的)
这里的用户不单单指的是我们自己,用户包括(普通用户、程序员(开发各种应用)、),操作系统为了保护自己数据安全,也为了保证给用户能提供服务,以接口的方式给用户提供调用的入口,来获取操作系统内部的数据。
系统调用接口:C实现的自己内部的函数调用,所有访问操作系统的行为(任何语言的编写、指令的执行),都只能通过系统调用接口实现。
2.2 管理的艺术:先描述,再组织
管理的本质是对数据进行管理,通过先描述,再组织(结构体)的流程,转化为最某种数据结构的增删查改。这个过程称之建模,其过程可以类比为校园情景:学生信息(先描述)都存放在教务管理系统中(再组织)。操作系统与软硬件资源并不需要直接接触,只需要拿到软硬件资源的数据即可进行一些决策。
操作系统(校长)
驱动程序(辅导员)
软硬件资源(学生)
// 以进程管理为例的结构体伪代码
struct process {
int pid; // 学号
char name[20]; // 学生姓名
int status; // 状态(上课/自习/请假)
// ...其他属性
};
管理本质:通过数据结构建立数字孪生,所有硬件资源都会被抽象成结构体对象。
2.3 系统调用 vs 库函数
系统调用:
在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
库函数:
系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,开发者可以对部分系统调用进行适度封装,从而形成库函数,有了库,就很有利于更上层用户或者开发者进行二次开发。
💡开发经验:就像不能直接找校长办事,应用程序必须通过系统调用接口访问内核
结语
👍 感谢各位大佬观看。如果本文有帮助,请点赞收藏支持~