操作系统的进程调度与死锁

什么是进程调度

进程调度即处理器调度(又称上下文转换),它的主要功能是确定在什么时候分配处理器,并确定分给哪一个进程,即让正在执行的进程改变状态并转入就绪队列的队尾,再由调度原语将就绪队列的队首进程取出,投入执行。

引起进程调度的原因

(1)正在执行的进程执行完毕。
(2)执行中的进程自己调用阻塞原语将自己阻塞起来进入睡眠状态。
(3)执行中的进程调用了 P 原语操作,从而因资源不足而阻塞;或调用 V 原语操作激活了等待资源的进程队列。
(4)在分时系统中,当一进程用完一个时间片。
(5)就绪队列中某进程的优先级变得高于当前执行进程的优先级,也将引起进程调度。

进程调度的方式

进程调度的方式有两类,剥夺方式与非剥夺方式。
所谓非剥夺方式是指,一旦某个作业或进程占用了处理器,别的进程就不能把处理器从这个进程手中夺走,直到该进程自己因调
用原语操作而进入阻塞状态,或时间片用完而让出处理机;
剥夺方式是指,当就绪队列中有进程的优先级高于当前执行进程的优先级时,便立即发生进程调度,转让处理机。

进程的调度算法

进程调度的算法是服务于系统目标的策略,对于不同的系统与系统目标,常采用不同的调度算法:
(1)先来先服务(First Come and First Serverd,FCFS)调度算法,又称先进先出(First In and First Out,FIFO)。就绪队列按先来后到原则排队。
(2)优先数调度。优先数反映了进程优先级,就绪队列按优先数排队。有两种确定优先级的方法,即静态优先级和动态优先级。静态优先级是指进程的优先级在进程开始执行前确定,执行过程中不变,而动态优先级则可以在进程执行过程中改变。
(3)轮转法(Round Robin)。就绪队列按 FCFS 方式排队。每个进程执行一次占有处理器时间都不超过规定的时间单位(时间片)若超过,则自行释放自己所占有的 CPU 而排到就绪队列的末尾,等待下一次调度。同时,进程调度程序又去调度当前就绪队列中的第一个进程。

进程的死锁

进程管理是操作系统的核心,在进程管理的实现中,如果设计不当,会出现一种尴尬的局面——死锁。
当若干个进程互相竞争对方已占有的资源,无限期地等待,不能向前推进时会造成“死锁”。例如,P1 进程占有资源 R1,P2 进程占有资源 R2,这时,P1 又需要资源 R2,P2 也需要资源 R1,它们在等待对方占有的资源时,又不会释放自己占有的资源,因而使双方都进入了无限等待状态。
死锁是系统的一种出错状态,它不仅会浪费大量的系统资源,甚至还会导致整个系统的崩溃,所以死锁是应该尽量预防和避免的。

死锁条件

产生死锁的主要原因是供共享的系统资源不足,资源分配策略和进程的推进顺序不当。系统资源既可能是可重复使用的永久性资源,也可能是消耗性的临时资源。产生死锁的必要条件是:互斥条件、保持和等待条件、不剥夺条件和环路等待条件

解决死锁的策略。

处于死锁状态的进程不能继续执行但又占用了系统资源,从而阻碍其他作业的执行。
解决死锁有两种策略:一种是在死锁发生前采用的预防和避免策略;另一种是在死锁发生后采用的检测与恢复策略。
死锁的预防主要是通过打破死锁产生的 4 个必要条件之一来保证不会产生死锁。采用的死锁预防策略通常有资源的静态分配法或有序分配法,它们分别打破了资源动态分配条件和循环等待条件,因此不会发生死锁。但这样做会大大降低系统资源的利用率和进程之间的并行程度。
死锁避免策略,则是在系统进行资源分配时,先执行一个死锁避免算法(典型的如银行家算法),以保证本次分配不会导致死锁发生。由于资源分配很频繁,因此死锁避免策略要耗费大量的 CPU 和时间

死锁资源的计算公式

系统由N个进程,每个进程需要R个资源,那么其发生死锁的最大资源数为:N * (R-1),其不发生死锁的最小资源为:N * (R-1)+ 1

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里藍天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值