目录
本章重点
- 前趋图和程序执行
- 进程的描述
- 进程控制
- 线程的基本概念
- 线程的实现
2.1前趋图和程序执行
2.1.1前趋图
前趋图是用来描述程序执行先后顺序的一个有向无循环图,记为DAG。
前驱图用来描述进程之间的前后关系。
前趋图中的每个结点代表一个进程或程序段,或者是一条语句。结点之间的有向边表示两个结点之间存在偏序或是前驱关系。
前趋图中不允许有循环。
进程之间的前驱关系用"->"表示,如果进程Pi和Pj之间存在前驱关系,则可以表示成Pi->Pj,这表示在Pj执行之前Pi必须执行完。
Pi是Pj的前驱结点,Pj是Pi的后继结点。
每个结点还具有重量,用于表示该结点所包含的程序量或结点的执行时间。
没有前驱的结点称为初始结点,没有后继的结点称为后继结点。
2.1.2 程序顺序执行
1.程序的顺序执行
程序的顺序执行指的是在有多个程序需要执行的情况下。处理器严格按照某一顺序按序执行,每次只执行一个程序,实质就是单道程序系统。
2.程序顺序执行的特征
- 顺序性
- 封闭性
- 可再现性
3.程序顺序执行的缺点
效率低,系统资源利用率低
2.1.3程序的并发执行
1.程序的并发执行
只有在不存在前驱关系的程序之间才可以并发执行,否则无法并发执行。
2.程序并发执行的特征
- 间断性 (执行-暂停-执行)
- 失去封闭性 (资源共享)
- 结果的不可再现性
3.优点
资源利用率高
2.2进程的描述
2.2.1进程的定义和特征
1.进程的定义
进程是程序的一次执行。
进程是可以和别的计算并发执行的计算。
进程是程序在数据集合上运行的过程,是系统进程资源分配和调度的基本单位。
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
2.进程的特征
- 动态性
- 并发性
- 独立性
- 异步性
3.进程的组成
- PCB进程控制块
- 程序
- 数据
- 工作区
4.PCB的结构
标识信息
进程标识、用户标识、父进程标识
用来标识一个进程
现场信息
CPU通用寄存器内容、CPU状态寄存器内容、栈指针
用来记录处理现场信息,以备恢复之用
控制信息
进程状态、调度信息、队列指针、位置信息、资源占用信息
用于进程的调度管理
5.PCB的定义
PCB是操作系统用来记录进程详细状态和相关信息的基本数据结构;PCB和进程一一对应,是进程存在的唯一标识。
2.2.2进程的状态
1.进程的三种基本状态
2.进程状态转换的原因
就绪->运行
进程被调度程序选中占用了CPU
运行->阻塞
进程出CPU,等待系统分配资源或某些事件的发生。比如:某一资源暂时不能访问,等待用户输入等。
阻塞->就绪
处于等待队列中的进程,当它等待的事件已经发生,或者等待的资源可以利用的时候,就会进入就绪队列竞争CPU。
运行->就绪
进程分配的时间片已经用完,或者在中断机制下,有优先级更高的进程进入系统,这是进程就进入就绪队列等待下一次被选中。
3.创建状态和终止状态
2.2.3挂起操作和进程状态的转换
1.挂起操作的引入
原因:
- 终端客户的请求
- 父进程的请求
- 负荷调节的需要
- 操作系统的需要
2.2.4进程管理中的数据结构
1.队列
2.索引表
2.2.5进程和程序的区别和联系
- 程序是静态的,进程是动态的。程序是有序代码的集合;进程是程序的一次执行。
- 进程是暂时的,程序是永久的。进程是一个变化的过程,有生命周期,暂时存在;程序没有生命周期,可以长久保存。
- 进程还是操作系统资源分配和保护的基本单位,程序没有此功能。
- 通过多次执行,一个程序可以对应多个进程,通过调用关系,一个进程可以包含多个程序。
- 进程和程序的结构不同、