第三章 处理机调度与死锁

一  丶调度的层次与作用;

处理机调度:多道程序环境下,动态的把处理机分配给就绪队列中的一个进程使之执行。

提高处理机的利用率、改善系统性能,很大程度上取决于处理机调度的性能

作业进入系统驻留在外存的后备队列上,再至调入内存运行完毕,可能要经历下述三级调度。

•高级调度(High Scheduling)

•中级调度(Intermediate-Level Scheduling)

•低级调度(Low Level Scheduling)

1、高级调度(High Scheduling)

又称作业调度或长程调度,接纳调度(Admission

Scheduling)

  主要在早期批处理阶段,处理在外存上的作业。

�决定外存后备队列中的哪些作业调入内存;

�为它们创建进程、分配必要的资源;

�将新创建的进程排在就绪队列上,准备执行。

* 管理的方面比较多。

2、低级调度(Low Level Scheduling)

也称为进程调度、微观调度或短程调度(Short-Term Scheduling)

  决定内存就绪队列中的哪个进程获得处理机,进行分配工作。是最基本的一种调度,在三种基本OS中都有。

3、中级调度(Intermediate-Level Scheduling)

又称交换调度或中程调度(Medium-Term Scheduling)

  引入目的:提高内存利用率和系统吞吐量。根据条件将一些进程调出或再调入内存。

二、常用调度算法及计算;

1、先来先服务调度算法FCFS

(First Come First Service)

  一种最简单的调度算法,按先后顺序进行调度。既可用于作业调度,也可用于进程调度。

v按照作业提交,或进程变为就绪状态的先后次序分派CPU;

v新作业只有当当前作业或进程执行完或阻塞才获得CPU运行

v被唤醒的作业或进程不立即恢复执行,通常等到当前作业或进程出让CPU。

(所以,默认即是非抢占方式)


2.短作业优先


优点:

v通过上表可见采用SJF/SPF算法,平均周转时间、平均带权周转时间都有明显改善。SJF/SPF调度算法能有效的降低作业的平均等待时间,提高系统吞吐量。

方式:

v分抢占和非抢占两种方式,上例为简单的非抢占式。


vSJF/SPF的不足:

  1. 对短作业有利,但同时造成了对长作业的不利。

     2.由于作业(进程)的长短含主观因素,不一定能真正做到短作业优先。

     3.未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)的及时处理。

3. 高优先权优先调度算法HPF

vHRRN为每个作业引入动态优先权,使作业的优先级随着等待时间的增加而以速率a提高:

  优先权 =(等待时间+要求服务时间)/要求服务时间 = 响应时间 / 要求服务时间

什么时候计算各进程的响应比优先权?

v需要进行调度选择的时候比较各自优先权

�作业完成时

�新作业产生时(抢占、非抢占)

�时间片完成时

�进程阻塞时


3. 基于时间片的轮转调度算法RR

(1)时间片轮转算法

1.将系统中所有的就绪进程按照FCFS原则,排成一个队列。

2.每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。

3.在一个时间片结束时,发生时钟中断。

4.调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前就绪的队首进程。

v进程阻塞情况发生时,未用完时间片也要出让CPU

能够及时响应,但没有考虑作业长短等问题。

(2)多级反馈队列算法FB

1)设置多个就绪队列,各队列有不同的优先级,优先级从第一个队列依次降低。

2)赋予各队列进程执行时间片大小不同,优先权越高,时间片越短。


3)当一个新进程进入内存,引发的调度过程

1.准备调度:先将它放入第一个队列的末尾,按FCFS原则排队等待调度。

2.IF时间片内完成,便可准备撤离系统;

3.IF时间片内未能完成,调度程序便将该进程转入第二队列的末尾等待再次被调度执行。

4.当第一队列中的进程都执行完,系统再按FCFS原则调度第二队列。在第二队列的稍放长些的时间片内仍未完成,再依次将它放入第三队列。

5.依次降到第n队列后,在第n队列中便采取按时间片轮转的方式运行。

注意:

v各队列的时间片逐渐增大。优先级逐渐降低

v仅当优先权高的队列(如第一队列)空闲时,调度程序才调度第二队列中的进程运行;仅当第1~(i-1)队列均空时,才会调度第i队列中的进程运行。

v高优先级抢占问题:

�第i队列中为某进程正占有CPU,又有新进程进入优先权较高的队列(第1~i-1队中);

被抢占的进程放回原就绪队列末尾;



三、死锁的概念、产生的原因及必要条件;

死锁(Deadlock):指多个进程在运行过程中,因争夺资源而造成的一种僵局。当进程处于这种状态时,若无外力作用,它们都将无法再向前推进。


v产生死锁的原因可归结为如下两点:

1.竞争资源。系统中供多个进程共享的资源如打印机、公用队列等的数目不满足需要时,会引起资源竞争而产生死锁。

2.进程间推进顺序非法。进程在运行过程中,请求和释放资源的顺序不当,同样会导致死锁。

3、 产生死锁的必要条件

①互斥条件:进程对所分配到的资源进行排他性使用

②请求和保持条件:进程已经保持了至少一个资源,又提出新的资源请求,而新请求资源被其他进程占有只能造成自身进程阻塞,但对自己已获得的其他资源保持不放,必然影响其他进程。

③不剥夺条件:进程已获得的资源未使用完之前不能被剥夺,只能在使用完时由自己释放。

④环路等待条件

四、处理死锁的基本方法;

事先预防:

①预防死锁

v设置限制条件,破坏四个必要条件的一个或几个,预防发生死锁。

v较易实现。限制条件的严格也会导致系统资源利用率和系统吞吐量降低。

②避免死锁

v不须事先限制,破坏四个必要条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。

v这种事先加以较弱限制的方法,实现上有一定难度,但可获较高的资源利用率及系统吞吐量,目前在较完善的系统中,常用此方法来避免发生死锁。

事后处理:

③检测死锁。

v允许系统运行过程中发生死锁,但通过系统检测机构可及时的检测出,能精确确定与死锁有关的进程和资源;然后采取适当的措施,从系统中将已发生的死锁清除掉。

④解除死锁。

v与死锁检测配套的一种措施。

v常用的实施方法:撤销或挂起一些进程,以便回收一些资源并将他们分配给已阻塞进程,使之转为就绪以继续运行。

v死锁的检测与解除措施,有可能使系统获得较好的资源利用率和吞吐量(死锁几率不一定很高),但在实现上难度也最大。

五、银行家算法及计算;

  最有代表性的避免死锁的算法,是Dijkstra的银行家算法。由于该算法能用于银行系统现金贷款的发放而得名。

  【思路描述】:随时对系统中的所有资源信息进行统计,包括每种资源的数量、已分配给各进程的数量;每当进程提出某种资源请求时判断该请求分配后是否安全,如果安全才分配。对每个资源请求的处理都要保证系统始终从一个安全状态到另一个安全状态1)银行家算法中的数据结构

(1)各类可利用资源的数量

u向量Available:(i1,i2,…,im),含m个元素,每个元素代表一类可利用的资源数目。

u动态变化的,初始值是系统配置的该类资源的全部数目,值随资源的分配与回收而动态的改变。

u实现:一维数组。Available【j】=K,表示系统中Rj类资源现有可用数量为K个。

②已分配矩阵Allocation。

un*m,定义系统中每一进程已获得的每类资源数量。

uAllocation【i,j】=K,表示进程i当前已分得Rj类资源数为K。

③还需求的矩阵Need。

un*m,表示每一进程尚需的各类资源数。

uNeed【i,j】=K,表示进程i还需要Rj类资源K个,方能完成任务。

|上述三个矩阵存在关系:

  Max【i,j】=Allocation【i,j】+Need【i,j】

|每次,给进程 i 分配资源的动作,影响上述数据结构的取值:

  Available【µ】,Allocation【i,µ】,Need【i,µ】

算法过程:

就是对各进程的Request向量及资源数量进行一系列判断及值操作。

进程Pi发出资源请求后,系统按下述步骤进行检查:

首先是两个基本判断:

(1)IF Requesti[j]<= Need[i,j]

  THEN转向步骤2;

  ELSE认为出错,所需资源数超过宣布的最大值(自我矛盾)

(2)IF Requesti[j]<= Available[j]

  THEN转向步骤3;

  ELSE表示尚无足够资源,Pi需等待(现实不满足)

如果上面两步判断都通过了,进入实质的资源分析

(3)系统试探着把资源分配给进程Pi

,并修改相应数据结构的值(假设性操作):

     Available【j】  =

     Allocation【i,j】=

     Need【i,j】=

(4)系统执行安全性算法,判断新的资源分配状态是否是安全的。

  即:找一个安全序列,使这些进程按顺序执行完)如果能够找到,则将假设操作真正实施完成资源分配。

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

推荐阅读更多精彩内容