处理机调度与死锁

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分配其所需资源,直至满足每个进程对资源的最大需求, 使每个进程都可顺利地完成。

使用银行家算法来避免死锁

死锁解除:剥夺资源和撤销进程

                  

猜你喜欢

转载自blog.csdn.net/goudu7509/article/details/82145122