Linux 基础:冯诺依曼架构与进程管理
一、冯诺依曼体系结构
冯诺依曼体系由 输入设备、输出设备、运算器、控制器、存储器 五部分组成。
设计特点
- 二进制表示:所有数据(包括程序指令)均以二进制形式存储和运算,简化了硬件逻辑设计,提高了可靠性。
- 存储程序原理:程序与数据共同存储于同一存储器中,且程序可像数据一样被修改。
- 顺序执行机制:指令按线性顺序逐条执行,由程序计数器(PC)控制执行流程。
- 指令结构:每条指令由操作码(定义操作类型)和地址码(指定操作数位置)组成。
体系结构的作用
外设和 CPU 读取速度差异巨大,直接交互会导致 CPU 效率低下。冯诺依曼体系结构通过以下方式解决此问题:
- 内存作为缓冲区:外设将数据写入内存,CPU 再从内存读取。避免了 CPU 长时间等待外设。
- 中断机制:外设在完成数据写入后发送中断信号通知 CPU,避免轮询的低效操作。
- 数据传输的统一性:所有数据通过内存交互,简化了硬件设计。
- 存储分级:通过寄存器、缓存、内存、外存分级优化访问速度。
- 操作系统支持:驱动程序抽象外设操作,优化数据交互。
二、操作系统(Operating System)
概念
操作系统(OS) 是管理计算机硬件与软件资源的系统软件。它提供用户接口和资源分配。
简单来讲,操作系统 包含:
- 内核(进程管理、内存管理、文件管理、驱动管理)
- 其他程序(函数库、shell 程序等)
设计目的
- 对下:与硬件交互,管理所有软硬件资源。
- 对上:为用户程序提供良好的运行环境。
OS 如何管理软、硬件
总结为六个字:先描述,再组织。
- 先描述:使用
struct结构体来描述资源属性。 - 再组织:通过数据结构(如链表、队列、哈希表)将结构体组织起来。
三、进程
概念
- 进程信息被放在一个叫做 进程控制块(PCB, Process Control Block) 的数据结构中,可以理解为描述进程属性的结构体。
- 在 Linux 操作系统下,PCB 叫做 task_struct,是一种结构体。
task_struct(描述进程)
task_struct 中包含大量进程属性,主要部分包括:
- 标识符:描述本进程的唯一标识符,用来区别其他进程。
- 状态:任务状态、退出代码、退出信号等。
- 优先级:描述进程被调度的先后数字,数字小优先级高,数字大优先级低。
- 程序计数器(PC):表示程序中即将执行的下一条指令的地址。
- 内存指针:包括程序代码和进程相关数据的指针,以及与其他进程共享内存块的指针。


