操作系统复习(3)处理机调度与死锁

一、概述

1.1了解调度的层次

  • 调度是指,在一个队列中,按照某种方法(算法),选择一个合适的个体的过程。
  • 进程调度的功能就是按一定策略、动态地把CPU分配给处于就绪队列中的某一进程,并使之执行。
  1. 作业调度(高级调度):内存与外存之间的调度
  2. 内存调度(中级调度):挂起态和就绪态间的相互转换
  3. 进程调度(低级调度):就绪态转到运行态

 

高级调度 

高级调度(长程调度或作业调度)仅在批处理,外存上处于后备队列的作业调入内存

(1)接纳多少作业到内存:从磁盘的后备队列到内存

(2)接纳哪些作业到内存:通过调度算法选择

抢占的原则有: 

(1)优先权原则。

(2) 短作业(进程)优先原则。

(3) 时间片原则。   

低级调度

低级调度(进程调度或短程调度):就绪队列中选哪个进程应获得处理机

作业控制块JCB

(1)进程调度的任务:保存cpu的现场;选取要执行的进程执行;把处理机分配给进程

(2)进程调度实现:排队器:队列等数据结构;分派器:调度程序;上下文切换器

(3)进程的调度方式::

        1)非抢占方式:仅在进程运行完或者阻塞才进行调度

        2)抢占方式:进程在运行过程中可以被抢占CPU,抢占的原则:优先级和时间片

引起进程调度的原因:

①正在运行的进程运行完毕;

②运行中的进程要求I/O操作;

③执行某种原语操作(如P操作)导致进程阻塞;

④一个比正在运行进程优先级更高的进程申请运行(抢占调度方式);

⑤分配给运行进程的时间片已经用完等等。 

中级调度

中级调度(内存调度):暂时不能执行的进程调入外存等待(仅了解) 

1.2衡量指标 

(1)资源利用率:资源处于忙状态时间所占的百分比

(2)吞吐量:单位时间内完成的进程数量

(3)周转时间:进程从初始化到结束(包括等待)的总时间

(4)等待时间:进程在就绪队列中的总时间。或者用带权周转时间:带权周转时间=周转时间/服务时间

(5)响应时间:从提交请求到产生响应所花费的总时间

 1.3调度算法

FCFS

特点:实现简单、公平

缺点:没考虑任务特性,周转时间(平均等待时间)可以提高

会计算平均周转时间:计算时,要先找到调度顺序,然后是每个进程的完成时间

FCFS与SJF 举例

SJF 

SJF(SPF)、   SRJF

是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。

优点:有最小的平均周转时间

缺点:不公平,可能出现进程饥饿,未考虑作业的紧迫程度,对长作业不利

RR

基于时间片的轮转调度算法是一种常见的CPU调度算法,它将CPU时间划分成一定大小的时间片,每个进程在该时间片内运行,然后轮转到下一个进程。如果一个进程不能在该时间片内完成任务,则将其放回就绪队列,等待下一个时间片重新运行

RR:按时间片来轮转调度

易于满足交互式任务

 

高优先级优先 

非抢占式优先权算法

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

抢占式优先权调度算法

 在这种方式下,系统同样是把处理机分配给优先权最高的进程,使之执行。但在其执行期间,只要又出现了另一个其优先权更高的进程,进程调度程序就立即停止当前进程(原优先权最高的进程)的执行,重新将处理机分配给新到的优先权最高的进程。 

如何确定优先级:

静态优先级:进程类型、对资源的需求、根据用户的特点

静态优先级问题是不公平

动态优先级:优先级动态调整,随着等待时间增长而不断增高

问题:算法开销

优先权算法例题

 多级队列调度

 

实现简单

多级反馈队列

结合上面算法优点,简单实用的算法

实时调度

FCFS、SJF(SPF)、   SRJF、RR会计算平均周转时间

 1.4死锁

死锁的概念:

多个进程因竞争资源而造成的一种相互等待的局面,若无外力作用,进程将无法向前推进

注意:僵局,是局部现象,可以传播

死锁产生的原因

(1)竞争资源:资源是不可被抢占的临界资源

(2)进程推进次序不当

死锁产生的必要条件

  • 互斥
  • 请求和保持
  • 不可抢占
  • 循环等待(出现了环)

处理方法

预防、避免、检测与接触、忽略

死锁的预防-破坏必要条件

1、互斥:不能破坏,资源的固有属性

2、请求和保持:比如:所需要的资源一次性全分配

3、不可抢占:允许抢占,会出现资源反复申请释放、推迟进程的执行

4、循环等待:对资源排序,只能按序申请资源。

死锁的避免 (银行家算法)

引入安全状态的概念。

安全状态:如果系统中的所有进程存在一个可使全部完成的执行序列P1,…Pn,则称系统处于安全状态。不存在这样的全部执行序列时就是不安全状态

安全状态一定没有死锁,不安全状态可能会产生死锁

 银行家算法

   设Requesti是进程Pi的请求向量,如果Requesti[j]=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:      

 (1) 如果Requesti[j]≤Need[i,j],便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。      

(2) 如果Requesti[j]≤Available[j],便转向步骤(3);否则, 表示尚无足够资源,Pi须等待。

 (3) 系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:   Available[j]∶=Available[j]-Requesti[j];   Allocation[i,j]∶=Allocation[i,j]+Requesti[j];   Need[i,j]∶=Need[i,j]-Requesti[j];      

 (4) 系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则, 将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi等待。

  (2) P1请求资源:P1发出请求向量Request1(1,0,2),系统按银行家算法进行检查:         ① Request1(1, 0, 2)≤Need1(1, 2, 2)        

② Request1(1, 0, 2)≤Available1(3, 3, 2)        

③ 系统先假定可为P1分配资源,并修改Available, Allocation1和Need1向量,由此形成的资源变化情况如图 3-15 中的圆括号所示。        

④ 再利用安全性算法检查此时系统是否安全。

死锁的检测与解除

资源分配图

理解资源分配图的顶点、边的含义,比如:进程节点、资源节点、分配边、请求边,孤立节点、阻塞节点(有请求边,但可用资源不够用的进程节点

2、资源分配图的简化:在资源分配图中找既不是阻塞也不是孤立的进程节点,可得到资源完成;完成后释放资源,即删除它的分配边和请求边,使成为孤立节点;重复为之,若能消去所有的边,所有节点都为孤立节点,则资源分配图为可完全简化的,反之为不可完全简化的。

3、死锁定理:死锁状态的充分条件,当且仅当该状态的资源分配图是不可完全简化的。

4、死锁的检测的解除(了解)

检测过程就是简化资源分配图,实现算法和银行家算法类似的,开销较大,有时候完全忽略死锁,不处理死锁。

二、习题

1.时间片轮转调度算法是为了()。
A.多个终端能够得到系统及时响应
B.使系统变得高效
C.优先级较高的进程得到及时响应
D.需要CPU时间最少的进程最先做.

答案:A。 时间片轮转调度算法是一种基于时间片的调度算法,其主要目的是保证多个终端用户能够得到系统及时响应,从而提高系统的交互性。当一个进程占用CPU的时间达到了限定的时间片长度后,便会被系统强制中断,然后放入后备队列,让其他进程继续执行。这种算法能够确保每个进程都能够及时获得CPU的执行时间,从而提高系统的效率和响应速度。

 2.下面有关选择进程调度算法的准则中不正确的是()。·
A.尽快响应交互式用户的请求
B.尽量提高处理器利用率
C.尽可能提高系统吞吐量
D.适当增长进程就绪队列的等待时间

D.适当增长进程就绪队列的等待时间是不正确的,因为进程等待时间越长,用户体验越差。正确的准则是尽可能减少进程等待时间并提高系统吞吐量

 3.设有4个作业同时到达,每个作业的执行时间均为2h,它们在一台处理器上按单道运行,则平均周转时间为()。。
A.1h
B.5h
C.2.5h
D.8h.

B5h。

假设这4个作业按照顺序分别为A、B、C、D。如果按照单道运行,那么每个作业都需要等待前一道作业执行完毕后才能开始执行。因此,作业A的等待时间为0,作业B的等待时间为2h,作业C的等待时间为4h,作业D的等待时间为6h。

则这4个作业的平均周转时间为为:

(2+4+6+8)/4=5h

4.若每个作业只能建立一个进程,为了照顾短作业用户,应采用(B):为了照顾紧急作业用户,应采用(E):为了能实现人机交互,应采用(C):而能使短作业.长作和交互作业用户都满意,应采用(D)。。
A.FCFS调度算法
B.短作业优先调度算法
C.时间片轮转调度算法
D.多级反馈队列调度算法
E.剥夺式优先级调度算法

答案:

A. FCFS调度算法只考虑作业的到达顺序,不能够照顾短作业用户。

B. 短作业优先调度算法可以照顾短作业用户,因为它优先调度执行时间短的作业。

C. 时间片轮转调度算法可以实现人机交互,因为它将CPU划分为时间片,每个进程轮流执行。

D. 多级反馈队列调度算法可以同时照顾短作业、长作业和交互作业用户,因为它将作业划分为多个队列,并根据作业的特点进行调度。

E. 剥夺式优先级调度算法只考虑优先级高的进程,不能照顾紧急作业用户。

因此,正确答案为B短作业优先调度算法照顾短作业用户,E剥夺式优先级调度算法照顾紧急作业用户,C时间片轮转调度算法实现人机交互,D多级反馈队列调度算法照顾短作业、长作业和交互作业用户。

5.设有三个作业,其运行时间分别是2h,5h,3h,假定它们同时到达,并在同一台处理器上以单道方式运行,则平均周转时间最小的执行顺序是()。·
A.J1,J2,J3
B.J3,J2,J1
C.J2,J1,J3
D.J1,J3,J2.

根据最短作业优先(SJF)调度算法,应该先运行运行时间短的作业。因此,执行顺序应该是J1,J3,J2,即选项D。

6.下列调度算法中,()调度算法是绝对可抢占的。
A.先来先服务
B.时间片轮转
C.优先级
D.短进程优先

答案:B. 时间片轮转。

解析:

先来先服务算法是非可抢占的,一旦进程开始运行就一直运行到结束,不会被其他进程抢占CPU资源。

优先级调度算法可以是可抢占的或非可抢占的,取决于是否存在更高优先级的进程需要运行。

短进程优先算法也是非可抢占的,一旦进程开始运行就一直运行到结束,不会被其他进程抢占CPU资源。

时间片轮转算法是绝对可抢占的,每个进程分配一个时间片运行,当时间片用完时,进程会被抢占,被放回就绪队列等待执行。

7.【2011年计算机联考真题】下列选项中,满足短作业优先且不会发生饥饿现
象的是()调度算法。
A.先来先服务
B.高响应比优先
C.时间片轮转
D.非抢占式短作业优先
 8.死锁的避免是根据()采取措施实现的。。
A.配置足够的系统资源
B.使进程的推进顺序合理。
C.破坏死锁的四个必要条件之一
D.防止系统进入不安全状态

AB与题意不符,C是预防

 8.某系统中有三个并发进程都需要四个同类资源,则该系统必然不会发生死锁
的最少资源是()。
A.9
B.10
C.11
D.12.

3个进程要想不死锁 每个进程都需要4个同类资源 所以。。 
只要每个进程都有3个资源 另外一个在给一个额外的资源。 那么3个进程中有一个可以运行。。运行完以后 释放资源然后其余的 进程在申请资源就可以了啊 。

9.采用资源剥夺法可以解除死锁,还可以采用()方法解除死锁。·
A.执行并行操作
B.撤销进程
C.拒绝分配新资源
D.修改信号量

资源剥夺法允许一个进程强行剥夺其他进程所占有的系统资源。而撤销进程是强行释放一个进程己占有的系统资源,与资源剥夺法同理,都是通过破坏死锁的“请求和保持”条件来解除死锁。拒绝分配新资源只能维持死锁的现状,无法解除死锁。

10.以下有关资源分配图的描述中正确的是()。~
A.有向边包括进程指向资源类的分配边和资源类指向进程申请边两类
B.矩形框表示进程,其中圆点表示申请同一类资源的各个进程
C.圆圈节点表示资源类
D.资源分配图是一个有向图,用于表示某时刻系统资源与进程之间的状态

在资源分配图中,用圆圈代表一个进程,用矩形框代表一类资源。由于一种类型的资源可能有多个,用矩形框中的一个点代表一类资源中的一个资源。从进程到资源的有向边叫请求边,表示该进程申请一个单位的该资源;从资源到进程的边叫分配边,表示该资源已经有一个被分配给了该进程。由上所述知D选项为正确答案。

11.死锁检测时检查的是()。·
A.资源有向图
B.前驱图
C.搜索树
D.安全图.

死锁检测一般采用两种方法:资源有向图法和资源矩阵法。前驱图只是说明进程之间的同步关系,搜索树用于数据结构的分析,安全图并不存在。

12.系统的资源分配图在下列情况中,无法判断是否处于死锁的情况有()。。
I.出现了环路
II.没有环路
III.每种资源只有一个,并出现环路
IV.每个进程节点至少有一条请求边
A.I、II、III、IV
B.I、III、IV
C.I、IV
D.以上答案都不正确

解析:

I:出现了环路,只是满足了循环等待的必要条件,但是并不能保证一定出现死锁。

II:没有环路,说明破坏了循环等待条件,所以一定不会发生死锁。

III:每种资源只有一个,又出现了环路,这是死锁的充分必要条件,所以,一定会有死锁的出现。

IV:每个进程至少有一条请求边的时候,如果资源充足,则不会发生死锁,但若资源不充足,就有发生死锁的可能。故只有I,IV可以确定是否产生死锁

13一个进程在获得资源后,只能在使用完资源后由自己释放,这属于死锁必要条件的()。
A.互斥条件
B.请求和痒放条件
C.不剥夺条件
D.防止系统进入不安全状态

14.某一个系统中,测得其处理机的利用率为1%,I/0的利用率为1%,就绪队列中
有进程两个,阻塞队列31个,我们判断,此时系统出现异常,有极大可能系统
中有进程()
A空闲
B饥饿
C死锁
D抖动.

C死锁。因为就绪队列中只有两个进程,阻塞队列中却有31个进程,这表明阻塞队列中的进程无法继续执行,可能是因为它们在等待某些资源被释放。这种情况很可能是死锁,即多个进程相互等待彼此所持有的资源,导致它们都无法继续执行。同时,系统中的处理机和I/O设备的利用率都很低,也说明进程无法正常执行,从而加剧了死锁的可能性。

15.银行家算法是一种死锁()的算法。·
A忽略
B检测与恢复

C避免
D预防.

16.资源的有序分配是一种死锁(1)的算法,他起到(2)作用。·
(1)A忽略B检测与恢复C避免D预防
(2)A提高系统利用率B自动处理故障C资源的合理利用.D打破循环等待条件

17.

记住这样一个知识点,你就知道怎么做了。

  1. 计算要占CPU
  2. I/O不占CPU
  3. 先出发的先执行
  4. 计算使用CPU可以与I/O一起进行,但是i/o操作不能并行

18.下列关于银行家算法的叙述中,正确的是
A.银行家算法可以预防死锁
B.当系统处于安全状态时,系统中一定无死锁进程
C.当系统处于不安全状态时,系统中一定会出现死锁进程
D.银行家算法破坏了死锁必要条件中的“请求和保持”条件

死锁的必要条件有:

1、互斥条件(任一时刻一个资源仅为一个进程独占)

2、占有且等待条件

3、不剥夺条件(任一进程不呢从其他资源处抢夺资源)

4、循环等待条件(存在一个循环等待链)

死锁的发生必定有上述四个条件的同时成立,同理,只要破坏四个条件中的任何一个就可预防死锁的发生

A-->“死锁的预防”是破坏四个必要条件的任何一个;“死锁的避免”是掌握系统中并发进程的状态和与这些进程有关的资源动态申请情况,做出合理选择,避免死锁的发生,“银行家算法”属于“死锁的避免”

C-->“不安全状态”并不一定导致死锁的发生

D-->“银行家算法”属于死锁的避免,没有破坏死锁发生的四个必要条件中的任何一个

 19.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/181826.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CN考研真题知识点二轮归纳(4)

持续更新,上期目录: CN考研真题知识点二轮归纳(4)https://blog.csdn.net/jsl123x/article/details/134135134?spm1001.2014.3001.5501 1.既可以扩展网段又是二层的设备 网段一般指一个计算机网络中使用同一物理层设备&#xff…

47基于matlab的水印提取,将水印和载体进行图像融合

基于matlab的水印提取,将水印和载体进行图像融合,成为一体,可对合成图像进行加噪处理,剪切处理,小波压缩处理,旋转处理等操作,最后对合成图像实现水印提取,程序已调通,可…

分析:如何多线程运行测试用例

这是时常被问到的问题,尤其是UI自动化的运行,过程非常耗时,所以,所以多线程不失为一种首先想到的解决方案。 多线程是针对的测试用例,所以和selenium没有直接关系,我们要关心的是单元测试框架。 unittest …

【电路笔记】-谐波

谐波 文章目录 谐波1、概述2、频谱分析3、已知信号4、未知信号5、总结 周期性信号并不总是完美的正弦模式,例如我们之前有关 正弦波的文章之一中介绍的那样。 有时,信号确实可以是简单正弦波的叠加,它们被称为复杂波形。 在本文中&#xff0…

CodeWhisperer 的使用心得

文章作者:小SS 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社…

uniapp 解决H5跨域的问题

uniapp 解决h5跨域问题 manifest.json manifest.json文件中,点击“源码视图”,在此对象的最后添加以下代码: "h5" : {"devServer" : {"port" : 8080, //端口号"disableHostCheck" : true,"proxy" :…

1.1 HTML4

一. 前言 1. 两位先驱 艾伦麦席森图灵 二战时期,破译了德军的战争编码一英格玛。让二战提前2年结束,拯救了上千万人的生命。设立图灵奖,被后人誉为:人工智能之父。 约翰冯诺依曼 制订了现代计算机标准一一冯诺依曼体系结构。提出:计算机要…

【代码】【5 二叉树】d3

关键字: 非叶子结点数、k层叶子结点数、层次遍历、找双亲结点、找度为1、叶子结点数

树莓派4无法进入桌面模式(启动后出现彩色画面,然后一直黑屏,但是可以正常启动和ssh)

本文记录了这段比较坎坷的探索之路,由于你的问题不一定是我最终解决方案的,可能是前面探索路上试过的,所以建议按顺序看排除前置问题。 双十一又买了个树莓派 4B,插上之前树莓派 4B 的 TF 卡直接就能使用(毕竟是一样规…

Node.js 中解析 HTML 的方法介绍

在 Web 开发中,解析 HTML 是一个常见的任务,特别是当我们需要从网页中提取数据或操作 DOM 时。掌握 Node.js 中解析 HTML 的各种方式,可以大大提高我们提取和处理网页数据的效率。本文将介绍如何在 Node.js 中解析 HTML。 基本概念 HTML 解析…

golang实现极简todolist

ToDoList 最近跟着qimi老师做了一个ToDoList,我做的GitHub地址贴在这里,但由于前端出了点问题,所以都是用postman进行测试 原项目地址 部分功能展示 删除代办 查找代办 下面给出思路 思路 其实这是一个很简单的增删改查的实现&#xff…

Flutter vs 前端 杂谈:SliverAppBar、手动实现Appbar、前端Html+JS怎么实现滚动变化型Appbar - 比较

Flutter vs 前端 杂谈 SliverAppBar的弹性背景的显隐效果使用HtmlJS怎么实现 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550…

kafka动态认证 自定义认证 安全认证-亲测成功

kafka动态认证 自定义认证 安全认证-亲测成功 背景 Kafka默认是没有安全机制的,一直在裸奔。用户认证功能,是一个成熟组件不可或缺的功能。在0.9版本以前kafka是没有用户认证模块的(或者说只有SSL),好在kafka0.9版本…

【C/C++】虚函数表

class Animal { public:virtual void speak(){cout << "动物在说话" << endl;} };class Cat :public Animal { public://重写 函数返回值类型 函数名 参数列表 完全相同void speak(){cout << "小猫在说话" << endl;} };void DoSpe…

Linux下yum源配置实战

一、Linux下软件包的管理 1、软件安装方式 ① RPM包管理&#xff08;需要单独解决依赖问题&#xff09; ② YUM包管理&#xff08;需要有网络及YUM仓库的支持&#xff0c;会自动从互联网下载软件&#xff0c;自动解决依赖&#xff09; ③ 源码安装&#xff08;安装过程比较…

GEE数据集——2019、2020、2021、2022和2023年全球固定宽带和移动(蜂窝)网络性能Shapefile 格式数据集

全球固定宽带和移动&#xff08;蜂窝&#xff09;网络性能 全球固定宽带和移动&#xff08;蜂窝&#xff09;网络性能&#xff0c;分配给缩放级别 16 网络墨卡托图块&#xff08;赤道处约 610.8 米 x 610.8 米&#xff09;。数据以 Shapefile 格式和 Apache Parquet 格式提供&…

3.线性神经网络-3GPT版

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 线性回归基础优化算法一、线性回归1、买房案例2、买房模型简化3、线性模型4、神经网络5、损失函数6、训练数据7、参数学习8、显示解9、总结 二、 基础优化算法1、梯度下降2、学习率3、小批量随机梯度下降4、批量大小5、…

项目实战:通过axios加载水果库存系统的首页数据

1、创建静态页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><link rel"stylesheet" href"style/index.css"><script src"script/axios.mi…

版本控制系统-SVN

SVN Apache Subversion 通常被缩写成 SVN&#xff0c;是一个开放源代码的版本控制系统。 官网&#xff1a;https://subversion.apache.org 资料&#xff1a;https://svnbook.red-bean.com、https://www.runoob.com/svn/svn-tutorial.html 下载&#xff1a;https://sourceforg…

5.数据表基本操作

目录 1.创建数据表 创建数据表的语法格式&#xff1a; 查看当前数据库的表&#xff1a; 主键 1.单字段主键 (1)在定义列的同时指定主键&#xff0c;语法规则如下&#xff1a; (2)在定义完所有列之后指定主键。 2.多字段联合主键 外键&#xff1a; 非空约束&#xff1…