第二章 2.2 进程的控制
其他
2018-12-09 09:00:58
阅读次数: 0
进程控制的基本过程:1)进程的创建 2)进程的终止 3)进程的阻塞与唤醒 4)进程的挂起与激活
系统中运行的进程并不都是孤立的,有的进程运行后,会调用其他进程来执行,这样就组成了进程间的父子关系
- 可用 “进程图”描述一个进程的家族关系,该图实际就是一种有向树
- 进程间的父子关系关系着资源的继承。创建和撤销进程时,其父、子进程要相应的被影响
进程的创建过程:( 过程不能被打断 )
- 申请空白PCB
- 为新进程分配资源
- 主要是内存资源的处理
- 初始化进程控制块
- 标识符(包括父进程的)、程序计数器指向程序入口地址,就绪态、优先级等信息的填写。
- 将新进程插入就绪队列
原语是由若干指令构成的原子操作过程,作为整体实现功能,不可被打断
- OS通过调用进程创建原语Creat()创建新进程
- 其他各控制工作也都是由OS内核以“原语”的方式实现,以保证不被打断
进程的终止:
- 引起终止的事件
- 正常结束
- 异常结束
- 内存越界错误
- 保护错(权限错,如修改只读文件等)
- 非法指令(不存在的指令,程序异常转向而把数据当指令)
- 特权指令错(用户态程序试图执行只有OS可执行的指令)
- 运行超时、运算错、i/o故障等
- 外界干预
- 操作员或操作系统干预(死锁时,可人为结束)
- 父进程请求终止子进程
- 父进程终止,子孙进程也跟着终止
- 终止过程:(对上述事件,OS调用内核终止原语,执行下列过程)
- 根据进程标示符,检索出该进程PCB,读其状态
- 归还全部资源至其父进程或系统
- 将该进程PCB从所在队列或链表中移出
进程的阻塞与唤醒:( 引起进程阻塞和唤醒的事件 )
- 请求系统服务的满足情况
- 启动某种需等待(I/O)操作
- 合作需要的新数据尚未到达
- 执行某功能的进程暂时无新工作可做(如发送数据进程)
阻塞与唤醒的过程:
- 由进程调用阻塞原语阻塞自己,是主动行为
- 将PCB中的状态改为阻塞
- 该PCB加入到阻塞队列中
- 转进程调度,将处理机分配给另一进程
- 进行进程切换,即根据两切换进程的PCB,保护与重新设置处理机状态
- 阻塞与唤醒原语作用相反,成对使用(阻塞进程等待的事件发生时,有关进程(如放弃该资源的进程)调用唤醒原语把等待该事件的进程唤醒)
- 把阻塞进程从等待该事件的阻塞队列中移出
- 将其PCB中的现行状态改为就绪
- 将PCB插入到就绪队列中
进程的挂起与激活:( 挂起原语将指定进程或阻塞进程挂起 )
- 检查被挂起进程的状态,活动就绪则改为静止就绪,活动阻塞则改为静止阻塞
- 将该PCB复制到内存(方便检查)/外存(对换)指定区域
- 若挂起的进程是执行态,则需重新进行进程调度
激活原语的执行过程:
- 若挂起进程在外存上,将其调入内存
- 检查进程状态,若处于静止就绪,则改为活动就绪,若处于静止阻塞,则改为活动阻塞
2.3 进程同步:
进程同步的主要任务:使并发执行的诸进程之间能有效地 共享资源 和 相互合作 ,从而使程序的执行具有 可再现性
临界资源:一次仅允许一个进程使用的资源
互斥:在操作系统中,当一个进程进入临界区使用临界资源时,另一个进程必须等待,直到占用临界资源的进程退出临界区,我们称进程之间的这种相互制约关系为“互斥”
同步:多个相互合作的进程,在一些关键点上可能需要互相等待或互相交换信息,这种相互制约关系称为进程同步关系。可理解为“有序”
临界区:每个进程中访问临界资源的 那段代码 叫临界区
同步机制遵循的规则:
- 空闲让进:资源使用最基本原则
- 忙则等待:保证互斥
- 有限等待:合适时被唤醒防止死等
- 让权等待:能主动释放CPU防止忙等
同步控制的关键:不应被打断(原语,OS核心态运行),不被打断的进行标志值的判断和修改
硬件同步机制:( 进入临界区往往跟其标志有关,可将标志看做一个锁,“锁开”进入并关锁,“锁关”必须等待,初始时锁是打开的 )
- 关中断:( 进入锁测试前关闭中断,直到完成锁测试并上锁后才能打开中断。进程在临界区执行期间,系统不响应中断,从而不引发调度 )
- 滥用风险
- 关中断时间过长会影响效率,限制CPU交叉执行能力
- 不适用于多CPU系统
- Test-and-Set 指令
- Swap 指令
转载自blog.csdn.net/qq_40199634/article/details/82858819