操作系统基本概念梳理(3)---处理机调度与死锁

处理机调度与死锁

一、处理机调度

在多道程序中,调度的实质是一种资源分配,处理机调度是依据某种算法对处理机资源进行分配。

1.处理机调度的层次
1).高级调度:
 高级调度又称作业调度。其主要功能是根据某种算法,决定将外存上处于后背队列中的哪几个作业(多道程序度)调入内存,为他们创建进程,分配必要的资源,并将他们放入就绪队列。
2).低级调度:
 低级调度又叫进程调度。根据某种算法,决定就绪队列中的哪个进程应该获得处理机
3).中级调度
 中级调度又叫内存调度。主要目的是,提高内存利用率和系统吞吐量。为此,应该把那些暂时不能运行的进程,调至外存等待,此时进程的状态称为挂起状态。

2.进程调度方式
1)非剥夺式调度:指当一个进程正在处理机上运行时,即使有一个更为重要或紧迫的进程进入就绪队列,仍然让正在执行的进程继续执行,直到进程完后或发生某种事件进入阻塞状态,才会把处理机分配给更重要的进程。
2)剥夺调度方式:指当一个进程正在处理机上运行时,当有一个更为重要或紧迫的进程进入就绪队列,应该立即暂停正在执行的进程,将处理机分配给更重要的。

3.调度的基本准则
1)cpu利用率:CPU是计算机最重要的资源之一,所以应尽可能让CPU处于忙状态。
2)系统吞吐量:表示单位时间CPU完成的作业的数量。
3)周转时间:是指作业提交到作业完成所经历的时间。
  周转时间=作业完成时间-作业提交时间
  带权周转时间=作业周转时间/作业实际运行时间
4)等待时间:指进程处于等处理机状态的时间之和
5)响应时间:响应时间是指用户提交请求到系统首次产生响应所用的时间

4.典型的调度算法

画甘特图容易理解,直观,醒目。

1)先来先服务算法(FIFO)
 每次调度是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。
在这里插入图片描述
特性:FIFO算法属于不可剥夺算法。算法简单,但效率低,对长作业有利,有利于CPU繁忙型作业,不利于io繁忙型作业。
2)短作业优先
 短作业(进程)优先调度算法SJ§F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。

在这里插入图片描述
缺点:

  1. 该算法对长作业不利,优先调度短作业,导致长作业长期不被调度(饥饿),饥饿是调度策略问题,死锁是系统环形等待
  2. 该算法完全未考虑作业的紧迫程度,因而不能保证紧迫性作业会被及时处理。
  3. 由于作业的长短只是根据用户所提供的估计执行时间而定的,估计短程序执行不完,因此一般都会偏长估计

3)高响应比优先调度
 主要用于作业调度,同时考虑了每个作业的等待时间和估计的运行时间,每次先计算后背队列中每个作业的响应比,从中选出响应比最高的作业投入运行。

   响应比R。=(等待时间+要求服务时间)/要求服务时间
 由公式可以得出:

  1. 作业的等待时间相同时,要求服务时间越短,响应比越高,有利于短作业
  2. 要求服务时间相同,作业的响应比由等待时间决定,等待时间越长,先执行,实现的是FIFO
  3. 对于长作业,作业的响应比可以随着等待的时间增加而提高,等待时间足够长时,也可以获得处理机执行。

4)优先级调度算法
 优先级用于描述作业的紧迫程度。优先级调度算法每次从后背队列中选择优先级最高的一个或几个作业,将他们调入内存,分配必要的资源,创建进程放入就绪队列,在进程调度中,优先级调度算法每次从就绪队列中选择优先级最高的进程,将处理机分配之,投入运行。
 静态优先级:优先级在创建进程时确定的
 动态优先级:根据进程情况的变化动态调整优先级
5)时间片轮转
 用于分时系统中的进程调度。每次调度时,总是选择就绪队列的队首进程,让其在CPU上运行一个系统预先设置好的时间片。一个时间片内没有完成运行的进程,返回到绪队列末尾重新排队,等待下一次调度。
在这里插入图片描述
在这里插入图片描述


二、死锁

在一组进程发生死锁的情况下,这组死锁进程中的每一个进程,都在等待另一个死锁进程所占有的资源。

 如果一组进程中的每一个进程都在等待仅有该组进程中的其它进程才能引发的事件,那么该组进程是死锁的。
 S死锁的充分条件:当且仅当S状态的资源分配图是不可完全简化的
1.产生死锁的原因:
1)竞争不可抢占式资源引起的死锁:通常系统拥有的不可抢占资源数量不足以满足多个进程运行的需要,使得进程在运行过程中,会因争夺资源而陷入僵局。
2)竞争可消耗型资源引起死锁
3)进程推进不当引起死锁
2.产生死锁的必要条件
1)互斥条件:进程对所分配的资源进行排他性使用,在一段时间内某资源仅为一个进程所占有,此时若有其它进程请求该资源,则请求进程只能等待。
2)不剥夺条件:经常所获得的资源在未使用完之前,不能被其它进程强行夺走,而该资源只能由获得资源的进程自己释放。
3)请求与保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放、
4)循环等待条件:存在一种进程资源的循环等待链。

3.处理死锁的方法
预防、避免、检测、解除死锁
1)预防死锁:破坏四必要条件之一

  • 互斥条件是共享设备必须的,不能改变,需要保持。

  • 破坏“请求和保持“条件
    a.所有进程在开始运行之前,必须一次性的申请其在整个运行过程中所需的全部资源。
    b.进程只获得运行初期所需要的资源后,便开始运行。进程运行过程中再逐步释放已分配给自己的,且已用毕的全部资源,然后再请求新的所需的资源。

  • 破坏“不可抢占”条件
    当一个已经保持了某些不可抢占资源的进程,提出新的资源请求而不能得到满足时,它必须释放已经保持的所有资源,待以后需要时重新申请。

  • 破坏“循环等待”条件
    规定每个进程必须按照递增的顺序请求资源

2)避免死锁:银行家算法
在资源分配的过程中,防止系统进入不安全状态,以避免发生死锁。

  • 系统安全状态
    作为安全状态,是指系统能按某种进程推进顺序(p1,p2,—,pn)为每个进程
    pi分配其所需的资源,直至满足每个进程对资源的最大需求,使每个进程都可以顺序完成。此时将顺序称为安全序列,若系统无法找到一个安全序列,则称系统处于不安全状态。
    并非所有的不安全状态都是死锁状态,但当系统进入不安全状态后,便可能进入死锁状态,反之,只要系统处于安全状态,系统便可以避免进入死锁状态。
  • 银行家算法
一、银行家算法

在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。

银行家算法的基本思想是分配资源之前, 判断系统是否是安全的; 若是, 才分配。它是最具有 代表性的避免死锁的算法。

设进程cusneed 提出请求REQUEST [i] ,则银行家算法按如下规则进行判断。

(1) 如果REQUEST [cusneed] [i]<= NEED[cusneed][i] ,则转(2) ;否则,出错。

(2) 如果REQUEST [cusneed] [i]<= AVAILABLE[cusneed][i] ,则转(3) ;否则,出错。

(3) 系统试探分配资源,修改相关数据:

     AVAILABLE[i]-=REQUEST[cusneed][i];

     ALLOCATION[cusneed][i]+=REQUEST[cusneed][i];

     NEED[cusneed][i]-=REQUEST[cusneed][i];

(4) 系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复 原状, 进程等待。


二、安全性检查算法

(1) 设置两个工作向量Work=AVAILABLE;FINISH

(2) 从进程集合中找到一个满足下述条件的进 程,
FINISH==false;
NEED<=Work;
如找到,执行(3) ; 否则,执行(4)

(3) 设进程获得资源,可顺利执行,直至完 成,从而释放资源。

Work+=ALLOCATION;
Finish=true;
GOTO 2

(4) 如所有的进程Finish= true ,则表 示安全;否则系统不安全。

【例】
在这里插入图片描述
3)检测死锁:死锁检测算法、资源分配图

  • 死锁定理:S为死锁状态的充分条件是:当且仅当S状态的资源分配图是不可完全简化的。

4)解除死锁:死锁解除算法

  • 抢占资源:从一个或者多个进程中抢占足够数量的资源,分配给死锁进程,以解除死锁状态。
  • 终止进程:(终止所有,或者一个一个终止直至解除死锁)终止系统中的一个或者多个死锁进程,直至打破循环环路,使系统从死锁状态解脱出来。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值