1.进程调度的功能
保存处理机的现场信息,按某种算法选取进程,把处理器分配给进程
2、进程调度方式
非抢占方式:,一旦把处理机分配给某进程后,不管它要运行多长时间,都一直让它运行下去,决不会因为时钟中断等原因而抢占正在运行进程的处理机,也不允许 其它进程抢占已经分配给它的处理机。直至该进程完成,自愿释放处理机,或发生某事件 而被阻塞时,才再把处理机分配给其他进程。
抢占方式:允许调度程序根据某种原则去暂停某个正在执行的进程,将已分配给该 进程的处理机重新分配给另一进程。
抢占调度方式的原则有:优先权原则,短进程优先原则,时间片原则
优先权原则:高优先权的进程到来时,会停止正在进行的进程,将处理机分配给优先权高的进程。
短进程优先原则:当到来的进程运行时间更短,会停止正在运行的进程,将处理机分配给运行时间短的进程。
时间片原则:各进程按时间片轮流执行,适用于分时系统
3、进程调度算法
1)先来先服务算法fcfs
选择最先进入队列的进程分配处理机,有利于长进程
2)短进程优先算法
是从 就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它
3)高优先权优先调度算法
系统将从后备队列中 选择若干个优先权最高的作业装入内存,分为抢占式高优先权和非抢占式高优先权调度算法。
4)基于时间片的轮转调度算法
系统按先来先服务的原则把所有进程排成一队,再为队首的进程分配处理机,执行一个时间片之后放入队尾,
再去调用下一个进程。
5)多级反馈队列调度算法
算法过程:
- 应设置多个就绪队列,并为各个队列赋予不同的优先级
- 当一个新进程进入内存后,首先将它放入第一队列的末尾,按 FCFS 原则排队等待 调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一 个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,再同样地按 FCFS 原则等待调度执行;如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第 三队列,……
- 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;仅当第 1~(i-1)队 列均空时,才会调度第 i 队列中的进程运行
4、死锁
1)产生死锁的原因:竞争非剥夺性资源,进程推进顺序不当
2)产生死锁的必要条件:
- 互斥条件:一段时间内某项资源只能有一个进程占用
- 请求和保持条件:一个进程已经占用了一个资源,又去请求另一项资源,但该资源被另一个进程占用,
此时进程阻塞,且不放弃已经占用的资源
- 不剥夺条件:一个进程一旦占用某项资源,则该资源只能由该进程自己释放,其他进程不可剥夺
- 环路等待条件:进程集 合{P0, P1, P2,…, Pn}中的P0正在等待一个P1占用的资源; P1正在等待P2占用的资源,……, Pn正在等待已被 P0占用的资源。
3)处理死锁的方法
预防死锁,避免死锁,检测死锁和解除死锁
预防死锁:破坏掉产生死锁的必要条件中的一个即可,如在分配资源时必须一次性把进程所需的资源全部分配给进程,否则就
不 分配;进程在申请某个资源无法获取时,就会释放掉原来已经保持的资源;破坏环路
避免死锁:系统安全状态的进程不会出现死锁,系统不安全状态可能会死锁。要保证系统处于安全状态。安全状态,是指系统能按某种进程顺序(P1,P2,…,Pn)(称〈P1,P2,…,Pn〉序 列为安全序列),来为每个进程 Pi分配其所需资源,直至满足每个进程对资源的最大需求, 使每个进程都可顺利地完成。
使用银行家算法来避免死锁
死锁解除:剥夺资源和撤销进程