笨蛋的计算机操作系统期末复习之第三章

 调度级别:

一、高级调度:又称作业调度/长程调度

它决定允许哪些作业参与竞争CPU和其它系统资源,将一个或一批作业从后备状态变为运行状态 高级调度是为作业分配虚拟处理机,也称宏观调度

运行频率较低

二、中级调度:又称内存调度/中程调度

中级调度决定哪些进程可参与竞争CPU

中级调度将进程从活动态(活动就绪、活动阻塞)变为静止的挂起态(静止就绪、静止阻塞);或相反

中级调度实际上是实现“挂起”和“激活”操作

中级调度也称为进程交换调度,通常仅用于分时系统

运行频率介于其他两个中间

三、低级调度:又称进程调度/短程调度

低级调度即进程(线程)调度

低级调度决定哪个进程可获得CPU

低级调度从活动就绪队列中挑选一个进程,将它变为运行态,同时启动CPU执行该进程

低级调度也称微观调度

进程调度可采取以下两种方式:

1、非抢占方式:进程获得CPU后,一直执行完成或自动阻塞

2、抢占方式:进程获得CPU后,允许其它进程依据一定的原则抢占CPU资源

⑴、时间片原则

⑵、优先权原则

⑶、短作业(进程)优先原则

仅有低级调度的调度队列模型:

每个进程执行时:

  1. 进程在时间片内已完成,进入完成状态
  2. 未完成,放在就绪队列后
  3. 因某事件,进入阻塞状态

具有高级和低级进程调度的调度队列模型:

具有三级调度的调度队列模型:

调度评估标准:

1、周转时间:

作业(进程)i从提交(进入时刻)到完成的时间称为该作业的周转时间Ti

Ti = 完成时刻 – 进入时刻 

2、平均周转时间:

平均周转时间为n个作业(进程)周转时间的平均值

n个作业(进程)的平均周转时间:

3、带权周转时间:

作业(进程)周转时间Ti与实际运行时间Tsi之比称为该作业的带权周转时间Wi 

 

4、平均带权周转时间:

平均带权周转时间为n个作业(进程)带权周转时间的平均值

n个作业(进程)的平均带权周转时间:

 5、平均等待时间:

进程i从进入就绪队列到获得CPU的时间称为该进程的等待时间WTi

n个进程的平均等待时间:

 

调度原则:

1、面向用户的原则:

  • 周转时间短
  • 响应时间快
  • 截止时间的保证
  • 优先权准则 

2、面向系统的原则:

  • 系统吞吐量高
  • 处理机利用率好
  • 各类资源的平衡使用

调度算法:

处理机调度实际上是一种资源(处理机)分配

调度算法是指根据系统的资源分配策略所规定的资源分配算法

目标不同、系统不同,则调度算法各异

先来先服务(FCFS)调度算法:

最简单的调度算法,选最先进入就绪队列的进程投入执行

以非抢占方式工作,可用于作业与进程调度

优点:   简单,有利于CPU繁忙型作业(进程),有利于长时间作业(进程)

缺点:   对短时间作业(进程)不利,对I/O繁忙型作业(进程)不利,对紧迫作业(进程)不利

短作业(进程)优先(SF/SJF)调度算法:

选就绪队列中估计运行时间最短的进程投入执行

可以抢占方式和非抢占方式工作,可用于作业调度与进程调度

优点:  有利于短时作业(进程),在抢占方式中,最短时作业(进程)将以最快的速度完成

缺点:

⑴、对长时间作业(进程)不利

⑵、未考虑作业(进程)的紧迫程度

⑶、在抢占方式中,最短指总需要时间最短还是剩余时间最短(而且是估计值)

⑷、在抢占方式下,即使一个长作业(进程)正在运行,但也可能会被长时间地延迟

高响应比优先(HRRN/HRN)调度算法:

 选择一个响应比Rp最高的进程投入执行

响应比RP:

⑴、可用于作业与进程调度,是FCFS和SF的折中算法

⑵、Rp与需要运行时间成反比,使短作业(进程)Rp较高

⑶、Rp与等待时间成正比,使等待时间长的作业(进程)Rp较高

⑷、HRN一般采用非抢占方式

优点:   有利于短时作业(进程)   有利于先来者

缺点:   每次调度前,必须计算Rp,增加系统开销   未考虑作业(进程)的紧迫程度

最高优先权(HPF)调度算法/优先级调度算法(PSA):

选择一个优先权最高的进程投入执行

  • 进程调度的非抢占方式:系统一旦将CPU分配之后,一直到进程执行完成或自动进入阻塞状态
  • 进程调度的抢占方式:只要进入就绪队列的进程优先权高于正在CPU上运行现进程的优先权,则将现进程放到就绪队列尾,并运行最高优先权进程

进程优先权分为静态和动态:

静态优先权:

⑴、在作业(进程)被调度之前赋值,之后一直不变

⑵、优先权的取值可根据:作业(进程)类型,对资源的要求,用户要求等

动态优先权:

⑴、在作业(进程)被调度之前赋初值

⑵、在作业(进程)运行过程中,动态改变优先权

  • 可用于作业与进程调度,但动态优先权算法只用于进程调度
  • 抢占方式可用于实时系统

采用非抢占方式 :

⑴、优先权只依据到达时间,则变为FCFS

⑵、优先权只依据运行时间,则变为SF

⑶、优先权只依据Rp,则变为HRN

优点:   可以根据要求,照顾到对系统、用户综合来说最优先的作业(进程)的执行

缺点:   优先权的计算可能比较复杂,增加系统开销

时间片轮转(RR)调度算法:

RR调度算法是一种抢占方式的进程调度算法

RR依据公平服务原则,在一定时间内,为每个进程轮转服务一次。RR每次为一个进程执行一个时间片,若进程未结束,则将进程插入到就绪队列的尾部

时间片大小的确定:

  1. 系统对响应时间T的要求
  2. 就绪队列中进程的数目N     与系统中的最大用户数相关     T=N x q(T一次轮转时间,N用户数,q时间片大小)
  3. 系统的处理能力     保证每个用户的普通命令能在一个时间片内完成

等长时间片: 在保证系统对响应时间的要求,满足最大用户数目需要的前提下,时间片应尽量长 不等长时间片:可以根据优先权,对优先权高的进程分配较长的时间片,但总的时间片轮转时间应满足要求

RR用于进程调度,适合于分时系统

时间片越长,越有利于缩短周转时间;如果时间片太长,RR退化为FCFS

优点:   有利于交互性、事务性进程   有利于I/O繁忙型的进程

缺点:   调度开销较大,未考虑实时响应要求

多级队列调度算法:

将就绪队列分成多种不同队列(前台轮转就绪队列、后台FCFS就绪队列)

每个进程固定地分属于一个队列

不同队列采用不同的调度算法(前台就绪队列采用RR调度算法,后台就绪队列采用FCFS算法)

只有当前台就绪队列空时,才执行后台队列中的进程

特性:同一计算机系统存在多个OS

优点:可以同时兼顾到分时及批量处理任务

缺点:未考虑紧迫性作业或进程

多级反馈队列调度算法:

设置多个就绪队列,并从高到低赋予不同的优先级

每个队列采用RR算法,时间片长度从高优先级到低优先级依次增加(一般加倍)(S1<S2<…<Sn)

  •  新进程放到最高优先级就绪队列尾部
  • 如果进程在当前就绪队列中执行一次未完成,则放到低一级就绪队列尾部
  • 较高优先级就绪队列全部为空时,才执行当前队列进程
  • 如果有更高优先级进程,则将当前进程放在当前就绪队列尾部,转而执行优先级高的进程

是一种比较好的进程调度算法,能满足各种类型用户的需要:

  • ⑴、终端型用户:交互性作业小
  • ⑵、短时作业用户:执行时间短
  • ⑶、长时作业用户:在第n个队列中按RR算法轮转执行

优点:可以同时兼顾到实时、分时及批量处理作业(进程)

缺点:调度算法比较复杂,调度开销较大

实时调度:

实时任务特点:

  1. 紧迫性   必须在截止时间之前开始或结束
  2. 截止时间:最迟时间   开始截止时间,完成截止时间

实现实时系统调度的基本条件:

1、提供必要的调度信息:

  • 就绪时间
  • 开始截止时间/完成截止时间
  • 处理时间
  • 资源要求
  • 优先级

2、系统处理能力强:

设系统中有m个周期性的硬实时任务,它们的处理时间为Ci,周期时间为Pi,则:

3、采用抢占式调度机制:

优先级高的任务必须优先投入运行

4、具有快速切换机制:

对外部中断的快速响应能力 快速的任务分派能力 

实时系统调度方式:

一般采用抢占方式,如果采用非抢占方式,则所有的实时任务(进程)执行时间都必须很短,并能在执行完最关键的区域后,自动阻塞

实时调度算法:

1、时间片轮转调度算法:

可以满足响应时间在数秒的实时控制 可应用于一般实时系统

 2、非抢占优先权调度算法:

可以满足响应时间在数百毫秒的实时控制,可用于要求不太严格的实时控制系统

 3、基于时间中断的抢占优先权调度算法:

可以满足响应时间在几毫秒到几十毫秒的实时控制 可用于大多数实时控制系统

4、立即抢占的优先权调度算法:

可以满足响应时间在毫微秒到几毫秒的实时控制 基本可满足所有实时控制系统要求 

 常用的实时调度算法:

1、最早开始截止时间优先(EDF)算法:

根据任务的开始截止时间确定任务的优先级 开始截止时间越早,优先级越高

2、最低松驰度优先(LLF)算法:

根据任务的紧急(松驰)程度确定任务的优先级

松驰度(LLF)=完成时间-处理时间-当前时间 

死锁:

死锁:

1、指多个进程因竞争资源而造成的一种僵局

2、若无外力作用,这些进程都将永远不能再向前进

产生死锁的原因:

1、竞争资源:当两个或以上进程需要两个或以上资源

竞争资源 :

1、可剥夺性资源:某进程获得该类资源后,可被其他进程或系统录夺(如CPU,RAM等)

2、非剥夺性资源:某进程获得该类资源后,其他进程或系统不可剥夺,只能在进程用完后自行释放(如打印机等)

3、临时性资源:由某进程产生,由另一进程临时使用的资源(如信号量)

竞争临时性资源:

举例(哲学学就餐问题):

2、进程推进顺序非法:请求和释放资源的顺序不当

进程推进顺序举例:

 产生死锁的必要条件:

1、互斥条件:请求的资源为临界资源

2、请求和保持条件:申请新资源,保持旧资源

3、不剥夺条件:已获得的资源,在使用完之前,不被外力剥夺

4、环路等待条件:互相等待资源

 预防死锁:

设置某些限制条件,破坏产生死锁的必要条件中的一个或几个条件

⑴.一次将资源全部分配(摒弃“请求和保持”条件)

优点:简单,易于实现且安全 缺点:资源浪费严重 ,进程延迟运行

⑵.当请求的资源得不到满足时,释放已分配的资源(摒弃“不剥夺”条件)

缺点:前期工作全部作废,代价高,反复申请,性能下降

⑶.对资源的申请必须按一定顺序进行(摒弃“环路等待”条件)

缺点:资源序号需要相对稳定,先获得的资源有可能长期闲置 ,对用户编程(资源申请时)有限制

避免死锁:

在资源的动态分配过程中,用某种方法,去防止系统进入不安全状态

检测死锁:

通过检测机构,及时地检测出死锁的发生及原因,并确定有关的进程和资源,采取措施,解除死锁

解除死锁:

剥夺资源或通过撤消进程,收回一些资源。 解除死锁与检测死锁是相互合作的关系。

死锁的避免:

分配资源之前,先判断是否会进入不安全区(危险区和禁区),如果会进入危险区,则不分配资源

Dijkstra银行家算法:

⑴.进程需求资源数如果大于现有资源数,不分配

⑵.预分配,检查是否存在一个进程序列,可以安全执行完成。存在则分配,否则不分配。

银行家算法数据结构:

1.Available[m]:可利用资源向量,表示系统中可被利用的各类(共m类)资源的数目

2.Max[n,m]:最大需求矩阵,表示每个进程(共n个进程)需要各类资源的最大数目

3.Allocation[n,m]:分配矩阵,表示系统为每个进程已分配各类资源的数目

4.Need[n,m]:需求矩阵,表示每一个进程尚需要的各类资源数目

Need[i,j] = Max[i,j] – Allocation[i,j]

5.Request[m]:请求向量,表示进程请求分配各类资源的数目

银行家算法:

1. 如果Request[j] > Need[i,j],出错

2. 如果Request[j] > Available[j],资源数目不够分配,进入等待状态

3. 执行安全性检查算法,如果系统处理安全状态(有一个安全进程执行序列),则分配资源;否则,不分配,进程进入等待状态

银行家算法中安全性算法数据结构:

1、Work[m]:工作向量,表示系统可提供进程继续运行所需要的各类资源数目,其初值为Available[m]

2、Finish[n]:完成向量,表示系统是否有足够的资源分配给进程(true/false)

银行家算法中安全性算法:

1、从进程集合中找到一个进程Pi,满足:    Finish[i] = false,Need[i,j] <= Work[j]

2、Work[j] = Work[j]+Allocation[i,j]    Finish[i] = true

3、重复1,2步骤

4、如果所有进程的Finish[i]=true,则存在一个安全执行序列;否则,系统处于不安全状态

Dijkstra银行家算法的缺点

1.很少有进程能够在运行前就知道其所需资源的最大值

2.而且进程数也不是固定的,往往在不断地变化(如新用户登录或退出)

3.原本可用的资源也可能突然间变成不可用(如磁带机可能坏掉)

4.银行家算法的开销较大,实时性不是很好

死锁检测要求:

1、保存有关资源的请求和分配信息

2、提供一种算法,以利用这些信息来检测系统是否已进入死锁状态

死锁的解除:

  1. 剥夺资源
  2. 撤消进程:全部撤消法、最小代价撤消法
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值