第二章 进程管理(1)

一、引入
前趋图(描述进程执行前后关系的图
有向无循环图(DAG):
Pi结点:描述一个程序段、进程、或一条语句。
有向边“–>”:结点之间的偏序或前序关系。
Pi–>Pk,则Pi是Pk的直接前趋,Pk是Pi的直接后继。

1. 程序顺序执行时的特征
(1) 顺序性
处理机的操作严格按程序规定顺序执行
(2) 封闭性
程序一旦开始执行,其计算结果不受外界因素影响。
(3) 可再现性
程序执行只要初始条件一样,不论如何停顿,重复执行多少次结果都一样。

2.程序的并发执行分析
若有N个类似前页的程序并发执行:
在这里插入图片描述
①要符合前趋关系:
Ii->Ci; Ci->Pi;
Ii->Ii+1;Ci->Ci+1;
Pi->Pi+1;
②并发不是随意的
如C1,C2无法交替执行,只能顺序执行;但C2和P1则没有严格时间关系

3.并发程序执行时的特征
○间断性(运行表现)
多道 -> 程序并发执行-> 要共享系统的资源 -> 形成相互制约的关系-> 相互制约导致并发程序具有“执行——暂停——执行”这种间断性的活动规律。
○失去封闭性
共享资源,资源状态由多道程序改变,程序运行失去封闭性。即程序运行受其他程序的影响。
○结果不可再现性
结果不确定,程序执行将没有任何意义。

二、进程
1.进程:
(1)定义:
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
(2)特征:
结构性特征,进程的根本——PCB
②动态性
进程实质上是进程实体的一次有生命期的执行过程。程序只是静态的一组有序指令。进程最基本特征
③并发性
多个进程实体同存于内存中,在一段时间内同时运行。
有PCB的程序才能并发。
④独立性
⑤异步性
(3)基本状态:
1)就绪状态(Ready)
进程获得除CPU之外的所有必需资源,一旦得到CPU控制权,可立即运行。
2)运行状态(Running)
进程已获得所有运行必需的资源,正在处理机上执行。
3)阻塞状态(Blocked)
正在执行的进程由于发生某事件(请求I/O、申请缓冲、时间片到)而暂时无法执行时,便放弃CPU后暂停
引入挂起状态状态转换图
在这里插入图片描述

2.进程控制块PCB
(1)定义:存放进程的管理和控制信息的数据结构称为进程控制块。
(2)重要性:进程控制块是进程存在的唯一标志
(3)包含信息:
1)进程标识符信息
每个进程都必须有一个唯一的标识符
○内部标示符:唯一的数字序号,方便系统使用
○外部标示符:方便用户使用,用户进程访问某进程时使用

2)处理机状态信息
主要由处理机的各种寄存器中的内容组成,被中断时这些信息要存放到PCB。
 通用寄存器:用户程序访问的,暂存信息
 指令计数器:下一条指令地址
 程序状态字PSW:一些状态信息
 用户栈指针:每个用户进程都有的存放过程和系统调用参数及调用地址的一组系统栈。

3)进程调度信息
 进程状态
 进程优先级
 进程调度所需的其他信息:调度算法相关信息
 事件:状态转换有关的事件

4)进程控制信息
 程序和数据的地址(单个进程)
 数据所在的内外存地址
 进程同步和通信机制(多进程间)
 同步和通信机制的信号量、消息队列指针等
 资源清单
 链接指针(PCB的组织)
 本PCB所在队列的下一个进程PCB首地址。
(4)PCB信息的存放
系统运行中有若干个程序的PCB,它们常驻内存的PCB区。
采用的数据结构:PCB结构体,PCB链表或队列
(5)PCB的组织方式
①链接方式
同一状态的PCB,依靠链接指针链接成队列。就绪队列;若干个阻塞队列;空白队列(PCB区的空PCB块)
在这里插入图片描述
②索引方式
同状态的PCB同样集中记录,但以索引表的方式记录PCB的地址。用专门的单元记录各索引表的首地址。
在这里插入图片描述

3.进程的创建
(1)一个进程创建另一进程的事件(原因)
 用户登录:分时情况下用户的请求
 作业调度:批处理中
 提供服务:运行中的用户程序提出功能请求,要创建服务进程(如打印服务)
 应用请求:应用程序自己创建进程,完成特定功能的新进程。(木马程序)
(2)创建过程
1) 申请空白PCB
2) 为新进程分配资源
主要是内存资源的处理
3)初始化进程控制块、标识符(包括父进程的)、程序计数器指向程序入口地址,就绪态、优先级等信息的填写。
4) 将新进程插入就绪队列

原语是由若干指令构成的原子操作过程,作为整体实现功能,不可被打断。

4.进程的终止
(1)引起进程终止的事件
 正常结束
 异常结束
• 内存越界错误
• 保护错(权限错,如修改只读文件等)
• 非法指令(不存在的指令,程序异常转向而把数据当指令)
• 特权指令错(用户态程序试图执行只有OS可执行的指令)
• 运行超时、运算错、i/o故障等
 外界干预
• 操作员或操作系统干预(死锁时,可人为结束)
• 父进程请求终止子进程
• 父进程终止,子孙进程也跟着终止
(2)终止过程
1) 根据进程标示符,检索出该进程PCB,读其状态。
IF 执行态,立即终止该进程,置调度标志为真,指示重新进行调度。
IF 有子孙进程,亦应予以终止,以防成为不可控进程。
2) 归还全部资源至其父进程或系统。
3) 将该进程PCB从所在队列或链表中移出。

5.进程的阻塞与唤醒
(1)引起进程阻塞和唤醒的事件
 请求系统服务的满足情况
 启动某种需等待(I/O)操作
 合作需要的新数据尚未到达
 执行某功能的进程暂时无新工作可做(如发送数据进程)

(2)阻塞和唤醒过程
由进程调用阻塞原语阻塞自己,是主动行为:
1)将PCB中的状态改为阻塞
2)该PCB加入到阻塞队列中
3)转进程调度,将处理机分配给另一进程
4)进行进程切换,即根据两切换进程的PCB,保护与重新设置处理机状态。
阻塞与唤醒原语作用相反,成对使用:
1)把阻塞进程从等待该事件的阻塞队列中移出
2)将其PCB中的现行状态改为就绪
3)将PCB插入到就绪队列中。

6.进程的挂起与激活
(1)挂起原语将指定进程或阻塞进程挂起。
*1)检查被挂起进程的状态,活动就绪则改为静止就绪,活动阻塞则改为静止阻塞
2)将该PCB复制到内存(方便检查)/外存(对换)指定区域
3)若挂起的进程是执行态,则需重新进行进程调度。
(2)激活原语的执行过程:
若挂起进程在外存上,将其调入内存
检查进程状态,若处于静止就绪,则改为活动就绪,若处于静止阻塞,则改为活动阻塞

猜你喜欢

转载自blog.csdn.net/weixin_42630417/article/details/82840241