【操作系统】第四章 处理机调度与死锁

在多道批处理系统中,一个作业从提交、到获得处理机执行、直至运行完毕,需要经历多级处理机调度。

处理机调度的层次

1.高级调度

高级调度又称为长程调度或作业调度,调度对象是作业。根据某种算法,决定将外存上处于后备队列中的哪些作业调入内存,为它们创建进程、分配资源,并放入就绪队列。高级调度主要用于多道批处理系统中,而在分时系统和实时系统中,不设置高级调度。

2.低级调度

低级调度又称为短程调度或进程调度,调度对象是进程。根据某种算法,决定就绪队列中的哪个进程应获得处理机,并由分派程序将处理机分配给被选中的进程。低级调度是最基本的一种调度,在多道批处理、分时和实时这3种系统中,都必须配置这种调度。

3.中级调度

中级调度又称为内存调度。把暂时不能运行的进程调至外存等待,也就是挂起。当已具备运行条件且内存稍有空闲时,由中级调度来决定把外存上的那些已具备运行条件的就绪进程再重新调入内存,并修改它们的状态为就绪状态,插入就绪队列。

以上3种调度中,低级调度的运行频率最高,高级调度的运行频率最低。

作业调度

评估作业调度算法好坏的标准:

       ①CPU利用率

      

        ②吞吐量

        单位时间内CPU完成作业的数量

        ③周转时间

        作业周转时间=作业完成时间-作业提交时间

        作业周转系数(带权周转时间)=周转时间/执行时间

        n个作业的平均周转时间=n个作业周转时间之和/n      

        n个作业的平均周转系数=n个作业周转系数之和/n

        对于用户来说,总是希望周转时间=执行时间,周转系数=1。

        作业的平均周转时间越短,作业在系统中停留的时间越短,系统的吞吐量就越高。

进程调度

进程调度的任务主要有三:①保存现场;②选取进程;③把CPU分配给进程,布置现场。

进程调度方式有二:①非抢占方式(不能用于分时系统和大多数实时系统)②抢占方式。

调度算法(作业调度与进程调度混着说的)

1.先来先服务(first come first server,FCFS) 既可用于作业调度,也可用于进程调度。

2.少工作优先(short job first,SJF)既可用于作业调度,也可用于进程调度。

3.优先级。优先级既可以是静态的,也可以是动态的。既可用于作业调度,也可用于进程调度。

        用于进程调度时,可进一步分为非抢占式和抢占式。

        ①非抢占式:除非主动放弃CPU或时间片用完,负责不会被优先级更高的进程抢用CPU 。

        ②抢占方式:当前的进程在其时间片未用完时就可被优先级更高的进程抢用CPU(自己进入就绪态)。

高响应比优先(highest response ratio next,HRRN)是非抢占式优先,通常用于作业调度。        

响应比RP=响应时间/预计运行时间

                =(等待时间+预计运行时间)/预计运行时间

                =1+等待时间/预计运行时间

4.时间轮转(round robin,RR)用于进程调度

       将就绪进程按FCFS策略排成一个就绪队列。设置每隔一定时间便产生一次中断,激活进程调度程序,把处理机分配给队首进程,并令其执行一个时间片。当一个时间片用完时,如果进程尚未运行完毕,则插入就绪队列的末尾,把处理机分配给就绪队列中新的队首进程,让它执行一个时间片。

6.多级反馈队列(抢占式时间轮转)用于进程调度

       在系统中设置多个就绪队列,优先级依次降低,时间片依次倍增。

7. 最早截止时间优先(earliest deadline first,EDF)任务的截止时间越早,排得越前

 8. 最低松弛度优先(least laxity first,LLF)(抢占式)

死锁产生的四个必要条件(都齐备了才会产生死锁)

1)资源互斥

2)资源不可剥夺

3)进程请求资源而不得,继而陷入阻塞状态时,并不释放已占有的资源

4)环路等待

死锁产生的几个实例

1.P、V操作不当

2.进程申请顺序不当

3.同类资源分配不当

4.进程通信

死锁的预防(破坏死锁产生的四个条件之一便可)

1、破坏“资源互斥”这一条件(行不通)

2、破坏“资源不可剥夺”这一条件(只适用于处理及和存储器资源)

3、破坏“进程请求资源而不得,继而陷入阻塞状态时,并不释放已占有的资源”这一条件(静态分配)

       静态分配是指当一个进程得到了它所需要的所有资源后方可执行。缺点:资源利用率低下,系统效率不高。

4、破坏“环路等待”这一条件(资源的有序分配)

       有序资源分配是指系统给资源由高到低编好号,进程必须按从小到大的顺序递增申请资源。缺点:新增资源不便(原序号已排定)、进程不自由、浪费资源。

死锁条件

预防方法

互斥

对资源进行spooling操作

请求和保持

进程创建时申请所有资源

不可剥夺

将资源剥夺

循环等待

对资源进行编号,递增申请

死锁的避免

        死锁避免的关键:让系统在动态分配资源时,不得进入不安全状态。

        算法实现:银行家算法

死锁的检测

资源分配图

若能完全简化消去所有的有向边,系统便未进入死锁状态。

死锁的解除

  • 重新启动:简单粗暴,但会使之前的工作全部白费,造成很大的损失和浪费。
  • 撤消进程:撤消造成死锁的进程。
  • 剥夺资源:保留死锁进程,只剥夺死锁进程占有的资源,直到解除死锁。
  • 进程回退:根据保留的历史信息,让死锁的进程从当前状态向后退回到某种状态,直到死锁解除。可以通过结合检查点或和回退机制实现。

若有k个进程,对于同类资源,k个进程分别需要w1,w2,……,wk个资源,而该资源的数量为n,则当满足 (w1-1)+(w2-1)+……(wk-1)+1<=n时,不会产生死锁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
处理机调度是指操作系统对CPU的分配和调度,以便高效地完成各种任务。在多道程序环境下,由于有多个进程需要占用CPU,因此需要进行处理机调度,以便各个进程都能够得到合理的CPU时间片,并且能够尽早地完成任务。 处理机调度算法主要有以下几种: 1. 先来先服务 (FCFS):按照进程到达的先后顺序进行处理机分配,即谁先到谁先得到CPU的使用权。 2. 短作业优先 (SJF):按照进程的执行时间进行处理机分配,即先处理执行时间最短的进程。 3. 优先级调度 (Priority Scheduling):按照进程的优先级进行处理机分配,即优先级高的进程先执行。 4. 时间片轮转 (Round Robin):将CPU时间片分成多个时间段,每个进程在一个时间段内执行一定时间,然后切换到下一个进程,直到所有进程都执行完毕。 死锁是指在多进程环境下,由于资源竞争而导致的一种进程无限等待的现象。死锁的发生通常由于以下四个条件的同时满足: 1. 互斥条件:一个资源同时只能被一个进程使用。 2. 不可抢占条件:进程在使用一个资源时,不能被其他进程抢占。 3. 占有和等待条件:一个进程在持有一个资源的同时,可以等待其他资源。 4. 循环等待条件:多个进程之间形成一种循环等待资源的关系。 避免死锁的方法主要有以下几种: 1. 破坏互斥条件:允许多个进程同时访问一个资源。 2. 破坏不可抢占条件:允许进程在使用一个资源时被抢占。 3. 破坏占有和等待条件:一个进程在申请资源时,必须释放已经占有的资源。 4. 破坏循环等待条件:对所有资源进行编号,每个进程按照编号顺序申请资源,释放资源时按照相反的顺序释放。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值