《计算机操作系统(第三版)》(汤小丹)学习笔记
文章目录
更多有趣的计算机知识和代码示例,可参考【Programming】
1、进程的基本概念
在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单位都是进程。
进程(Process) 是操作系统中程序执行的基本单位,是程序在运行时的一个实例。它包含:
- 程序代码(如 .exe 文件)
- 数据(程序运行时使用的变量、内存等)
- 执行上下文(CPU寄存器、程序计数器、栈等)
类比:
- 程序是“食谱”,进程是“按照食谱做菜的过程”。
- 程序是静态的,进程是动态的。
进程的核心组成
进程和程序的区别
1.1、程序的顺序执行及其特征
顺序执行是指程序中的指令按照先后顺序依次执行,且前一条指令执行完毕后,后一条指令才开始执行。
- I 是输入
- C 是计算
- P 是打印
- S 是语句
顺序执行的特征
(1)顺序性:指令按程序中的书写顺序逐条执行,无跳跃或并行。
(2)封闭性:程序执行时独占系统资源(如CPU、内存),不受其他程序干扰。
(3)可再现性:相同输入下,程序执行结果始终一致(无随机因素)。
优缺点
顺序执行与并发执行的对比
1.2、前趋图(Precedence Graph)
前趋图(Precedence Graph) 是操作系统中用于描述进程或程序段之间执行先后顺序的有向无循环图(DAG,Directed Acyclic Graph)。
前趋图的基本要素
(1)结点(Node):
- 每个结点表示一个进程、程序段,甚至是一条语句。
- 结点还可以具有一个权重 weight,用于表示该结点所含有的程序量或程序的执行时间。
(2)有向边(Directed Edge):
- 结点间的有向边表示两个结点之间存在的偏序(Partial Order) 或前趋关系(Precedence Relation)。
- 如果进程A和进程B存在着前趋关系,可表示为A→B,表示在B开始执行之前A必须完成。此时称A是B的直接前趋,而B是A的直接后继。
前趋图的特点
(1)有向无循环:
- 前趋图中不允许有循环,否则会产生不可能实现的前趋关系。
(2)初始结点和终止结点:
- 把没有前趋的结点称为初始结点。
- 把没有后继的结点称为终止结点。
1.3、程序的并发执行及其特征
并发执行是指多个程序或进程在同一时间段内交替执行,宏观上表现为同时运行,但微观上由CPU通过时间片轮转或多核处理实现快速切换。
- 核心思想:通过资源共享与调度,提高系统效率和资源利用率。
- 类比:单车道上的多辆车交替通过路口(时间片轮转),或多车道上的车辆并行行驶(多核CPU)。
eg, I i I_i Ii、 C i − 1 C_{i-1} Ci−1、 P i − 2 P_{i-2} Pi−2 可以同时进行
程序并发执行时的特征
间断性,eg P1 完成了,如果 C2 没有完成,是不能进行 C3 的
并发执行的优缺点
优点:
- 提高资源利用率:CPU 和 I/O 设备可并行工作(如CPU计算时,磁盘同时进行读写)。
- 增强系统响应性:用户可交互操作(如边下载边浏览网页)。
- 提升吞吐量:单位时间内完成更多任务(如服务器同时处理多个请求)。
缺点:
- 复杂性增加:需处理同步、死锁、竞态条件等问题。
- 调试困难: 不可再现性导致错误难以复现。
- 开销增大:进程切换、同步机制引入额外开销。
1.4、进程的特征与状态
1.4.1、进程的特征
结构性:所谓创建进程,实际上是创建进程实体(程序段+数据段+PCB构成实体)中的 PCB,而撤销进程,实际上是撤销进程的 PCB
动态性:程序是一组有序指令的集合,存放于某种介质上,本身并不具有运动的含义,是静态的,进程有生命周期,是动态的
PCB(Process Control Block) 是操作系统管理进程的核心数据结构,包含:
- 进程标识:PID(进程ID)。
- 状态信息:当前状态(运行、阻塞等)。
- 程序计数器:下一条指令地址。
- CPU寄存器:通用寄存器、程序状态字(PSW)。
- 内存管理信息:页表、段表。
- I/O状态信息:打开的文件、设备状态。
- 优先级和调度信息:调度算法所需参数。
类比:PCB是进程的“身份证”,操作系统通过PCB识别和管理进程。
本文后面会详细讲解
进程特征与状态的关联
- 动态性 → 状态不断变化(如运行→阻塞)。
- 并发性 → 多个进程状态同时存在于系统中。
- 独立性 → 每个进程有独立的状态和PCB。
- 异步性 → 状态转换顺序不可预测,需同步机制。
在引入进程实体的概念后,传统 OS 中的进程定义为:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
1.4.2、进程的三种基本状态
就绪状态:处于就绪状态的进程可能有多个,通常将它们拍成一个队列,称为就绪队列
执行状态:多处理机系统中,有多个进程处于执行状态
阻塞状态:也称等待状态或封锁状态。有的系统根据阻塞原因的不同把处于阻塞状态的进程排成多个队列
1.4.3、挂起状态(Suspended)
引入挂起状态的原因
(1)终端用户的请求:有时候希望暂停使自己的程序静止下来,研究执行情况或对程序进行修改。
(2)父进程请求:父进程希望挂起 自己的某个子进程,以便考查和修改该子进程,或者协调各子进程间的活动。
(3)负荷调节的需要:
(4)操作系统的需要:操作系统有时候希望挂起某些进程,以便检查运行中的资源使用情况或进行记账
挂起状态
就绪 → 挂起就绪:内存不足时,将就绪进程换出。
阻塞 → 挂起阻塞:I/O资源不足时,将阻塞进程换出。
挂起就绪 → 就绪:内存充足时,将挂起进程换入。
挂起阻塞 → 阻塞:I/O资源可用时,将挂起进程换入。
注意:执行和就绪的进程都可以挂起
1.4.4、创建状态(New State)和终止状态(Terminated State)
一、创建状态(New State)
定义:进程被创建但尚未进入就绪队列的状态,是进程生命周期的起点。
核心特征:
- 资源分配:操作系统为进程分配PCB(进程控制块)和初始资源(如内存、文件描述符)。
- 未执行代码:进程尚未开始执行用户程序,仅完成初始化。
- 短暂性:创建状态通常很快结束,进程随即进入就绪队列。
类比:
- 新建文档:打开文字处理软件时,文档被创建但尚未输入内容。
- 启动汽车:插入钥匙但未启动引擎,车辆处于“待命”状态。
创建过程:
- 系统调用:用户通过fork()(Unix/Linux)或CreateProcess()(Windows)请求