操作系统复习笔记(二)——处理机调度与死锁

一、处理机调度的层次

低级调度(Low Level Scheduling),低级调度的对象 是就绪队列中的进程。因此低级调度就是进程调度。
处理机调度:

  • 非抢占方式(Non-Preemptive Mode)
  • 抢占方式(Preemptive Mode)

非抢占方式(Non-Preemptive Mode)

  • 一旦获得CPU,一直运行到进程结束为止,不会中断。
  • 在采用非抢占调度方式时,可能引起进程调度的因素可归结为这样几个:
    ① 正在执行的进程执行完毕, 或因发生某事件而不能再继续执行;
    ② 执行中的进程因提出I/O请求而暂停执行;
    ③ 在进程通信或同步过程中执行了某种原语操作,如P操 作 (wait操作)、block原语、wakeup原语等。
  • 这种调度方式的优点是实现简单、系统开销小,但它难以满足紧急任务的要求——不适合实时系统中。

抢占方式(Preemptive Mode)

抢占原则:

  • 优先权原则
  • 短进程优先原则
  • 时间片原则

二、调度模型和准则

进程调度的调度队列模型

三、调度算法

  • 作业调度算法
  • 进程调度算法

作业调度算法

  • 先来先服务算法(FCFS)
  • 短作业优先算法(SJF)
  • 优先级调度算法 (PSA)
  • 高相应比优先调度算法 (HRRN)

1.先来先服务(FCFS)

FCFS

2. 短作业优先(SJF)

短进程优先(SPF)调度算法,则是从就绪队列中选出一估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时,再重新调度。

缺点:

  1. 需要预估作业时间
  2. 对长作业不利
  3. 无法实现人机交互
  4. 完全未考虑作业紧迫程度
FCFS和SJF对比

3. 优先级调度(priority-scheduling algorithm, PSA)

  • 非抢占式优先权算法
  • 抢占式优先权算法
非抢占式优先权算法

在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成;或因发生某事件使该进程放弃处理机时,系统方可再将处理机重新分配给另一优先权最高的进程。这种调度算法可用于某些对实时性要求不严的实时系统中。

抢占式优先权算法

在这种方式下,系统同样是把处理机分配给优先权最高的进程,使之执行。但在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高的进程。
显然,这种抢占式的优先权调度算法,能更好地满足紧迫作业的要求,故而常用于要求比较严格的实时系统中, 以及对性能要求较高的批处理和分时系统中。

优先权类型
  • 静态优先权:

  • 动态优先权

静态优先权

静态优先权是在创建进程时确定的,且在进程的整个运行期间保持不变。一般地,优先权是利用某一范围内的一个整数来表示的,例如,07或0255中的某一整数, 又把该整数称为优先数。
只是具体用法各异:有的系统用“0”表示最高优先权,当数值愈大时,其优先权愈低;而有的系统恰恰相反。
确定进程优先权:

  • 进程类型
  • 进程对资源的需求
  • 用户要求
动态优先权

动态优先权是指,在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。

4. 高响应比优先调度算法(Hi格荷斯坦R撒泼尿色R奥体哦N而心痛, HRRN)

优先权的变化率


优先权的变化率

由于等待时间与服务时间之和,就是系统对该作业的响应时间,故该优先权又相当于响应比RP。据此,又可表示为:


优先权的变化率

1.如果作业的等待时间相同,该算法有利于短作业。
2.当要求服务的时间相同时,作业的优先权决定于其等待时间,因而它实现的是先来先服务。

3.对于长作业,作业的优先级可以随等待时间的增加而提高,当其等待时间足够长时,其优先级便可升到很高, 从而也可获得处理机。

进程调度算法

  • 时间片轮转算法
  • 高级优先权优先调度算法
  • 多级反馈队列调度算法

1. 时间片轮转算法

在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。时间片的大小从几ms到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;

时间片轮转算法

2. 高级优先权优先调度算法

  • 静态优先
  • 动态优先

3. 多级反馈队列调度算法(基于时间片的先来先服务动态高优先抢占调度)

应设置多个就绪队列,并为各个队列赋予不同的优先级。 第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每个进程所规定的执行时间片就愈小。


多级反馈队列算法示意图

新进程进入内存后, 放入第一队列的末尾(FCFS原则)
当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果未完成,该进程转入第二队列的末尾,按FCFS原则等待调度执行;

仅当第一队列空闲时,调度程序才调度第二队列中的进程运行; 仅当第1~(i-1) 队列均空时,才会调度第i队列中的进程运行。如果处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机。

四、实时调度

实现实时调度的基本条件

  1. 提供必要的信息
  • 就绪时间
  • 开始截止时间和完成截止时间
  • 处理时间
  • 资源要求
  • 优先级
  1. 系统处理能力强
    在实时系统中,通常都有着多个实时任务。若处理机的处理能力不够强,则有可能因处理机忙不过来而使某些实时任务不能得到及时处理, 从而导致发生难以预料的后果。假定系统中有m个周期性的硬实时任务,它们的处理时间可表示为Ci,周期时间表示为Pi,则在单处理机情况下,必须满足下面的限制条件:


假如系统中有6个硬实时任务,它们的周期时间都是 50 ms,而每次的处理时间为 10 ms,系统可调度不?
解决的方法是提高系统的处理能力,其途径有二:其一仍是采用单处理机系统, 但须增强其处理能力, 以显著地减少对每一个任务的处理时间;其二是采用多处理机系统。假定系统中的处理机数为N,则应将上述的限制条件改为:


  1. 采用抢占式调度机制

当一个优先权更高的任务到达时,允许将当前任务暂时挂起,而令高优先权任务立即投入运行,这样便可满足该硬实时任务对截止时间的要求。但这种调度机制比较复杂。

  1. 具有快速切换机制
    该机制应具有如下两方面的能力:
  • 对外部中断的快速响应能力。要求系统具有快速硬件中断机构 。
  • 快速的任务分派能力。在完成任务调度后,便应进行任务切换, 以减少任务切换的时间开销。

实时调度算法分类

1.非抢占式调度算法

  • 非抢占式轮转调度算法
  • 非抢占式优先调度算法
  1. 抢占式调度算法
  • 基于时钟中断的抢占式优先权调度算法
  • 立即抢占的优先权调度算法


    实时进程调度

常用的实时调度算法

1. 最早截止优先时间算法(Earliest Deadline First, EDF)

EDF用于非抢占调度方式


EDF算法
2. 最低松弛优先算法(Least Laxity First, LLF)

一个实时系统中,有两个周期性实时任务A和B:任务A要求每 20 ms执行一次,执行时间为 10 ms;任务B只要求每50 ms执行一次,执行时间为 25 ms。
在刚开始时(t1=0),A1必须在20ms时完成,而它本身运行又需 10 ms,可算出A1的松弛度为10ms;B1必须在50ms时完成, 而它本身运行就需25 ms,可算出B1的松弛度为25 ms,故调度程序应先调度A1执行。在t2=10 ms时,A2的松弛度可按下式算出:
A2的松弛度=必须完成时间-其本身的运行时间-当前时间 =40 ms-10 ms-10 ms=20 ms
类似地,可算出B1的松弛度为15ms,故调度程序应选择B2运行。在t3=30 ms时,A2的松弛度已减为0(即40-10-30),而B1的松弛度为15 ms(即50-5-30),于是调度程序应抢占B1的处理机而调度A2运行。在t4=40 ms时,A3的松弛度为10 ms(即60-10-40),而B1的松弛度仅为5 ms(即50-5-40),故又应重新调度B1执行。在t5=45 ms时,B1执行完成,而此时A3的松弛度已减为5 ms(即60-10-45),而B2的松弛度为30 ms(即100-25-45),于是又应调度A3执行。在t6=55ms时,任务A尚未进入第4周期,而任务B已进入第2周期,故再调度B2执行。在t7=70 ms时,A4的松弛度已减至0 ms(即80-10-70),而B2的松弛度为20 ms(即100-10-70),故此时调度又应抢占B2的处理机而调度A4执行。

LLF算法

五、产生死锁的原因和必要条件

产生死锁的原因

  1. 竞争资源
  2. 进程间推进顺序非法

竞争资源

  1. 可剥夺性资源(如:CPU.内存)

  2. 非可剥夺性资源(如:打印机)

  3. 竞争非剥夺性资源


    竞争非剥夺性资源
  4. 竞争临时性资源

竞争临时性资源

进程间推进顺序非法

进程推进顺序对程序的影响

若并发进程P1和P2按曲线④所示的顺序推进,它们将进入不安全区D内。此时P1保持了资源R1, P2保持了资源R2, 系统处于不安全状态。因为,这时两进程再向前推进,便可能发生死锁。例如,当P1运行到P1:Request(R2)时,将因R2已被P2占用而阻塞;当P2运行到P2: Request(R1)时,也将因R1已被P1占用而阻塞,于是发生了进程死锁。

死锁发生的必要条件

  • 互斥条件
  • 请求和保持条件
  • 不剥夺条件
  • 环路等待条件

处理死锁的方法

  • 预防死锁。
  1. 摒弃“请求和保持”条件
  2. 摒弃“不剥夺”条件
  3. 摒弃“环路等待”条件
  • 避免死锁。
  • 检测死锁。
  • 解除死锁。

避免死锁

系统安全状态
安全状态

在避免死锁的方法中,允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程; 否则,令进程等待。
所谓安全状态,是指系统能按某种进程顺序(P1, P2, …,Pn)(称〈P1, P2, …, Pn〉序列为安全序列),来为每个进程Pi分配其所需资源,直至满足每个进程对资源的最大需求,使每个进程都可顺利地完成。如果系统无法找到这样一个安全序列,则称系统处于不安全状态。

由安全状态转向不安全状态

我们通过一个例子来说明安全性。假定系统中有三个进程P1、 P2和P3,共有12台磁带机。进程P1总共要求10台磁带机,P2和P3分别要求4台和9台。假设在T0时刻,进程P1、P2和P3已分别获得5台、2台和2台磁带机,尚有3台空闲未分配,如下表所示:



image.png

如果不按照安全序列分配资源,则系统可能会由安全状态进入不安全状态。
例如,在T0时刻以后,P3又请求1台磁带机,若此时系统把剩余3台中的1台分配给P3,则系统便进入不安全状态。
因为,此时也无法再找到一个安全序列, 例如,把其余的2台分配给P2,这样,在P2完成后只能释放出4台,既不能满足P1尚需5台的要求,也不能满足P3尚需6台的要求,致使它们都无法推进到完成,彼此都在等待对方释放资源,即陷入僵局,结果导致死锁。

利用银行家算法避免死锁

参考 https://blog.csdn.net/qq_33414271/article/details/80245715

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容