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

news2024/11/22 13:27:31

一、概述

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可以确定是否产生死锁

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设置DevC++支持c++11标准

1.点击编译选项 2. 设置语言标准 3.点击确认 4.测试代码 使用auto成功 测试!

【LeetCode】第 370 场周赛

100115. 找到冠军 I 一场比赛中共有 n 支队伍&#xff0c;按从 0 到 n - 1 编号。 给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid 。对于满足 0 < i, j < n - 1 且 i ! j 的所有 i, j &#xff1a;如果 grid[i][j] 1&#xff0c;那么 i 队比 j 队 强 &…

该酷的酷该飒的飒~质感满满的羊羔绒皮外套

皮毛一体材质柔软舒适 保暖性能极佳 冬天穿也不惧严寒的哦 宽松版型&#xff0c;对身材的包容性很强 外套的细节处理也非常出色&#xff0c;车缝线整齐 纽扣和拉链质量也是很不错的哟

鼠标加速不一定都是好事,有时是适得其反,如在游戏当中

如果你玩游戏&#xff0c;你会想在Mac上禁用鼠标加速。这是因为虽然鼠标加速可能很好&#xff0c;但它可能会导致鼠标光标速度不一致&#xff0c;这在游戏中并不理想。 简单地说&#xff0c;如果macOS检测到你正在以特定的速度或强度移动鼠标&#xff0c;鼠标指针加速会提高光…

PivotNet:Vectorized Pivot Learning for End-to-end HD Map Construction

参考代码&#xff1a;BeMapNet。PS&#xff1a;代码暂未放出&#xff0c;关注该仓库动态 动机和主要贡献 在MapTR系列的算法中将单个车道线建模为固定数量的有序点集&#xff08;对应下图Evenly-based&#xff09;&#xff0c;这样的方式对于普通道路场景具备一定适应性。但是…

深度好文|听懂这些逻辑,你会越变越好。

哈喽&#xff0c;大家好&#xff0c;我是雷工。 最近看了一篇文章&#xff0c;噱头很大&#xff0c;说是手把手的教你&#xff0c;如何从一个普通人&#xff0c;成长为身价千万的中产。 这种话我肯定是不信的&#xff0c;要么标题党&#xff0c;要么割韭菜&#xff0c;千万的中…

048基于web+springboot的校园资料分享平台

欢迎大家关注&#xff0c;一起好好学习&#xff0c;天天向上 文章目录 一项目简介技术介绍 二、功能组成三、效果图四、 文章目录 一项目简介 本校园资料分享平台有管理员和用户两个角色。管理员功能有个人中心&#xff0c;学生管理&#xff0c;资料分享管理&#xff0c;资源分…

【JVM】JDBC案例打破双亲委派机制

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 JVM 打破双亲委派机制&#xff08;JDBC案例…

使用springBoot+Redis实现分布式缓存

使用springBootRedis实现分布式缓存 1. 添加redis框架 依赖 2. 配置redis连接信息 #redis 连接的配置信息 spring.redis.database15 spring.redis.port6379 spring.redis.host82.157.236.116 # 可省略 spring.redis.lettuce.pool.min-idle5 spring.redis.lettuce.pool.max-id…

QT进度条 QProgressDialog基础、高级和样式表使用详解

一、基础使用 QProgressDialog是Qt中的一个类&#xff0c;用于显示一个进度条和一个取消按钮&#xff0c;让用户可以在长时间的操作中看到进度&#xff0c;并且可以随时取消。QProgressDialog的基本用法是创建一个对象&#xff0c;设置最小值和最大值&#xff0c;然后在循环中…

多态 多继承的虚表深度剖析 (3)

&#x1f4af; 博客内容&#xff1a;多态 &#x1f600; 作  者&#xff1a;陈大大陈 &#x1f680; 个人简介&#xff1a;一个正在努力学技术的准C后端工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎私信&#xff01; &#x1f496; 欢迎大家&#xff1a;这里是CSD…

加法运算、 || 、 赋值运算

一、加法运算 在这里插入图片描述 二、&& || 三、赋值运算 四、js类型就八种&#xff1a; 五、css权重、 六&#xff1a;布局&#xff0c;尽量使用块盒。 七、小数精度存储的问题&#xff1a;存的不精确&#xff0c;算的肯定也是有问题的。 八、找单身狗算法题…

STM32G030F6P6 芯片实验 (二)

STM32G030F6P6 芯片实验 (二) Hello World - GPIO LED 尝试了下, 从 0 开始建 MDK HAL M0plus Project, 成功点亮 LED了。 但是 ST-LINK跑着跑着, 码飞了! 不知飞哪去了。 只好拿 MX 建了个 MDK Base。 呼叫 SysTick HAL_Delay(), 切换 LED。 基本上都是一样的用法, 只是换…

逆向学习记录(4)adb

adb用于PC和手机端通讯。 常用命令如下&#xff1a; 如果不是模拟器&#xff08;模拟器一般都有自己的adb&#xff09;&#xff0c;adb会出现在Andirod的SDK中&#xff0c;路径为&#xff1a;Android/SDK/platform-tools。 最好加入环境变量中。

免费亲人微信聊天记录提取软件新版本v1.1,使用说明,注意事项 2023.11.06

V 1.1 优化了备份速度&#xff0c;新增了备份消息类型的选型&#xff0c;可以选择仅仅备份文本&#xff0c;或者文本与音频&#xff0c;或者文本音频视频图片。 有什么办法可以导出与某个人的微信聊天记录&#xff1f; 只想导出与某个微信好友的聊天记录&#xff0c;有办法做到…

懒汉模式和饿汉模式

目录 单例模式 饿汉模式 懒汉模式 单例模式 所谓单例模式,就是在有些场景中,有些特定的类,只能创建一个实例(对象),当程序员不小心创建多个实例,就会出现编译报错. ★ 这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个对象被创…

同步网盘与云盘:哪个更好用?

同步网盘、同步云盘现在是热门的文件管理工具&#xff0c;在回答“同步网盘云盘哪个好用”这个问题之前&#xff0c;我们需要知道什么样的同步网盘、同步云盘算好用&#xff1f; 什么样的同步网盘云盘好用&#xff1f; 1、存储空间大 对于文件管理工具而言&#xff0c;存储空…

一篇解决,Unittest接口测试生成报告和日志

HTML报告 直接把HTMLTestRunner.py放入工程目录即可报告脚本封装 #HTNL格式报告now datetime.datetime.now().strftime(%Y-%m-%d_%H_%M_%S)htmlreport reportpath "/" now r"result.html"print("测试报告生成地址&#xff1a;%s"% htmlre…

[NLP] LlaMa2模型运行在Mac机器

本文将介绍如何使用llama.cpp在MacBook Pro本地部署运行量化版本的Llama2模型推理&#xff0c;并基于LangChain在本地构建一个简单的文档Q&A应用。本文实验环境为Apple M1 芯片 8GB内存。 Llama2和llama.cpp Llama2是Meta AI开发的Llama大语言模型的迭代版本&#xff0c;…

【pyspider】爬取ajax请求数据(post),如何处理python2字典的unicode编码字段?

情景&#xff1a;传统的爬虫只需要设置fetch_typejs即可&#xff0c;因为可以获取到整个页面。但是现在ajax应用越来越广泛&#xff0c;所以有的网页不能用此种爬虫类型来获取页面的数据&#xff0c;只能用slef.crawl()来发起http请求来抓取数据。 直接上例子&#xff1a; 可以…