OS计算题练习
一、进程同步
1、设有两个进程P、Q,P的优先级高于Q,同时进入就绪队列。各自运行的程序段如下所示:
进程P |
进程Q |
P1 Y=12 |
Q1 X=18 |
P2 Y=A+Y |
Q2 A=X+A |
P3 P(S1) |
Q3 V(S1) |
P4 A=Y+X |
Q4 X=A+Y |
P5 V(S2) |
Q5 P(S2) |
P6 X=Y+A |
Q6 A=X-Y |
其中S1、S2为信号量,初值为0;已知X、Y、A为共享变量,X的初值为83,Y的初值为35,A的初值为38;若调度程序执行的策略为抢占式优先权原则,试问:
(1) 执行序列?
(2) 变量X、Y、A的运行结果依次是?
解析:
(1) 执行序列:
P1 P2 P3 Q1 Q2 Q3 P4 P5 P6 Q4 Q5 Q6
(2) 运行结果:X=118,Y=50,A=68
执行序列 |
运行过程 |
P1 |
Y=12 |
P2 |
Y=A+Y=38+12=50 |
P3 |
P(S1),所以S1=-1<0,block |
Q1 |
X=18 |
Q2 |
A=X+A=18+38=56 |
Q3 |
V(S1),所以S1=0≤0,wake up,P>Q |
P4 |
A=Y+X=50+18=68 |
P5 |
V(S2),S2=1,go on |
P6 |
X=Y+A=50+68=118 |
Q4 |
X=A+Y=68+50=118同上 |
Q5 |
P(S2),S2=0,go on |
Q6 |
A=X-Y=118-50=68 |
2、若调度程序执行的策略为非抢占式优先权原则
(1) 执行序列
(2) 变量X、Y、A的运行结果依次是
解析:
(1) 执行序列:
P1 P2 P3 Q1 Q2 Q3 Q4 Q5 P4 P5 P6 Q6
(2) 运行结果:X=206 Y=50 A=156
执行序列 |
运行过程 |
P1 |
Y=12 |
P2 |
Y=A+Y=38+12=50 |
P3 |
P(S1),所以S1=-1<0,block |
Q1 |
X=18 |
Q2 |
A=X+A=18+38=56 |
Q3 |
V(S1),所以S1=0≤0,wake up,go on |
Q4 |
X=A+Y=56+50=106 |
Q5 |
P(S2),S2=-1<0,block |
P4 |
A=Y+X=50+106=156 |
P5 |
V(S2),S2=0<=0,wake up,go on |
P6 |
X=Y+156=50+156=206 |
Q6 |
A=X-Y=206-50=156 |
二、时间片轮转
1、设有5个进程P1、P2、P3、P4、P5,它们到达时间和要求服务时间如下表(单位为ms),请按时间片轮转调度算法完成,时间片大小为3。
Process |
P1 |
P2 |
P3 |
P4 |
P5 |
到达相对时刻 |
0 |
3 |
5 |
9 |
13 |
执行或服务时间 |
7 |
6 |
10 |
8 |
2 |
(1) 写出进程的实际调度序列:
(2) 计算平均带权周转时间(结果保留两位小数):
解析:
(1) 进程的调度序列:
P1 P2 P1 P3 P2 P4 P1 P3 P5 P4 P3 P4 P3
(2) 平均带权周转时间:
(2.7+2+2.8+2.9+5.5)÷5 = 15.9÷5 = 3.18
就绪队列 |
P1 |
P2 |
P1 |
P3 |
P2 |
P4 |
P1 |
P3 |
P5 |
P4 |
P3 |
P4 |
P3 |
执行队列 |
P1 3 |
P2 6 |
P1 9 |
P3 12 |
P2 15 |
P4 18 |
P1 19 |
P3 22 |
P5 24 |
P4 27 |
P3 30 |
P4 32 |
P3 33 |
Process |
P1 |
P2 |
P3 |
P4 |
P5 |
到达相对时刻 |
0 |
3 |
5 |
9 |
13 |
执行或服务时间 |
7 |
6 |
10 |
8 |
2 |
完成时间 |
19 |
15 |
33 |
32 |
24 |
周转时间 |
19 |
12 |
28 |
23 |
11 |
带权周转时间 |
19/7 |
12/6=2 |
28/10=2.8 |
23/8 |
11/2=5.5 |
三、银行家算法
1、假定系统中有5个进程(P0,P1,P2,P3,P4)和4种类型的资源(A,B,C,D),全部资源的数量(Vector)为(3,12,14,14);在T0时刻的资源分配情况如下表:
Process |
Max |
Allocation |
||||||
A |
B |
C |
D |
A |
B |
C |
D |
|
P0 |
0 |
0 |
4 |
4 |
0 |
0 |
3 |
2 |
P1 |
2 |
7 |
5 |
0 |
1 |
0 |
0 |
0 |
P2 |
3 |
5 |
9 |
8 |
1 |
3 |
4 |
4 |
P3 |
0 |
8 |
8 |
4 |
0 |
3 |
3 |
2 |
P4 |
0 |
6 |
6 |
11 |
0 |
0 |
1 |
4 |
(1) 此时系统中的可利用资源向量ABCD为?
(2) 用银行家算法判断T0时刻系统状态是否安全?如为安全状态,请写出按照P0-P4循环的安全序列。
(3) 若进程P2提出请求 Request(0,1,1,0),系统能否将资源分配给它?
解析:
Process |
Max |
Allocation |
Need |
Available |
||||||||||||
A |
B |
C |
D |
A |
B |
C |
D |
A |
B |
C |
D |
A |
B |
C |
D |
|
P0 |
0 |
0 |
4 |
4 |
0 |
0 |
3 |
2 |
0 |
0 |
1 |
2 |
1 |
6 |
3 |
2 |
P1 |
2 |
7 |
5 |
0 |
1 |
0 |
0 |
0 |
1 |
7 |
5 |
0 |
|
|
|
|
P2 |
3 |
5 |
9 |
8 |
1 |
3 |
4 |
4 |
2 |
2 |
5 |
4 |
|
|
|
|
P3 |
0 |
8 |
8 |
4 |
0 |
3 |
3 |
2 |
0 |
5 |
5 |
2 |
|
|
|
|
P4 |
0 |
6 |
6 |
11 |
0 |
0 |
1 |
4 |
0 |
6 |
5 |
7 |
|
|
|
|
Need(Pi) = Max(Pi)-Allocation(Pi)
(1) 系统中可利用资源向量ABCD:
Vector(3,12,14,14)-Allocation(2,6,11,12)=Available(1,6,3,2)
(2) T0时刻系统的安全性:
Process |
Allocation |
Need |
Work+Allocation |
Finish |
|||||||||
A |
B |
C |
D |
A |
B |
C |
D |
A |
B |
C |
D |
||
P0 |
0 |
0 |
3 |
2 |
0 |
0 |
1 |
2 |
1 |
6 |
6 |
4 |
true |
P3 |
0 |
3 |
3 |
2 |
0 |
5 |
5 |
2 |
1 |
9 |
9 |
6 |
true |
P1 |
1 |
0 |
0 |
0 |
1 |
7 |
5 |
0 |
2 |
9 |
9 |
6 |
true |
P2 |
1 |
3 |
4 |
4 |
2 |
2 |
5 |
4 |
3 |
12 |
13 |
10 |
true |
P4 |
0 |
0 |
1 |
4 |
0 |
6 |
5 |
7 |
3 |
12 |
14 |
14 |
true |
令Work=Available(1,6,3,2)
用安全性算法对T0时刻的资源分配进行分析,存在一个安全序列:P0 P3 P1 P2 P4。所以此刻系统是安全的。
(3) 进程P2提出请求 Request(0,1,1,0),系统按银行家算法进行检查:
① Request1(0,1,1,0)≤Need2(2,2,5,4)
② Request1(0,1,1,0)≤Work(1,6,3,2)
③ 系统假定为进程P2分配资源,并修改Allocation2、Need2、Available2的值
Process |
Max |
Allocation |
Need |
Available |
||||||||||||
A |
B |
C |
D |
A |
B |
C |
D |
A |
B |
C |
D |
A |
B |
C |
D |
|
P0 |
0 |
0 |
4 |
4 |
0 |
0 |
3 |
2 |
0 |
0 |
1 |
2 |
1 |
5 |
2 |
2 |
P1 |
2 |
7 |
5 |
0 |
1 |
0 |
0 |
0 |
1 |
7 |
5 |
0 |
|
|
|
|
P2 |
3 |
5 |
9 |
8 |
1 |
4 |
5 |
4 |
2 |
1 |
4 |
4 |
|
|
|
|
P3 |
0 |
8 |
8 |
4 |
0 |
3 |
3 |
2 |
0 |
5 |
5 |
2 |
|
|
|
|
P4 |
0 |
6 |
6 |
11 |
0 |
0 |
1 |
4 |
0 |
6 |
5 |
7 |
|
|
|
|
④ 再用安全性算法检查此时系统是否安全
Process |
Allocation |
Need |
Work+Allocation |
Finish |
|||||||||
A |
B |
C |
D |
A |
B |
C |
D |
A |
B |
C |
D |
||
P0 |
0 |
0 |
3 |
2 |
0 |
0 |
1 |
2 |
1 |
5 |
5 |
4 |
true |
P3 |
0 |
3 |
3 |
2 |
0 |
5 |
5 |
2 |
1 |
8 |
8 |
6 |
true |
P1 |
1 |
0 |
0 |
0 |
1 |
7 |
5 |
0 |
2 |
8 |
8 |
6 |
true |
P2 |
1 |
4 |
5 |
4 |
2 |
1 |
4 |
4 |
3 |
12 |
13 |
10 |
true |
P4 |
0 |
0 |
1 |
4 |
0 |
6 |
5 |
7 |
3 |
12 |
14 |
14 |
true |
此时存在一个安全序列:P0 P3 P1 P2 P4。所以系统可以将资源分配给进程P2。
四、Clock 页面置换算法
1、在请求分页系统中,假设系统为进程P分配4个物理块,并将页面5,7,3预先装入主存且访问位A为1,0,0;页面访问串如下,采用Clock页面置换算法。(说明:地物理地址优先,替换指针开始指向最低地址的物理块。)
6,5,2,5,6,3,0,5,6,1,0,7,6,5,2
(1) 缺页中断次数____次。
(2) 页面置换次数____次,依次被置换的页面为___(页号之间不留空格),最后主存中的页面P及对应的访问位A的值(用PA形式表示,如51)_____。
解析:
|
6 |
5 |
2 |
5 |
6 |
3 |
0 |
5 |
6 |
1 |
0 |
7 |
6 |
5 |
2 |
5 1 * |
5 |
5 1 |
5 1 |
5 1 |
5 1 |
5 1 * |
0 1 |
0 1 |
0 1 |
0 1* |
0 1* |
7 1 |
7 1 |
7 1 |
7 1 * |
7 |
6 1 |
6 1 |
6 1 |
6 1 |
6 1 |
6 1 |
6 * |
5 1 |
5 1 |
5 1 |
5 1 |
5 * |
5 * |
5 1 * |
5 |
3 |
3 * |
3 * |
2 1 |
2 1 |
2 1 |
2 1 |
2 |
2 * |
6 1 |
6 1 |
6 1 |
6 |
6 1 |
6 1 |
6 |
* |
* |
* |
** |
** |
** |
3 1 |
3 |
3 |
3 * |
1 1 |
1 1 |
1 |
1 |
1 |
2 1 |
缺页 |
√ |
|
√ |
|
|
√ |
√ |
√ |
√ |
√ |
|
√ |
|
|
√ |
置换 |
7 |
|
3 |
|
|
无 |
5 |
6 |
2 |
3 |
|
0 |
|
|
1 |
(1) 缺页中断次数:9
(2) 页面置换次数:8
依次被置换的页面:73562301
最后主存中的页面P及对应的访问位A的值:
71 50 60 21
五、磁盘调度算法
1、设系统已完成某进程对103#磁道的访问请求,正在为访问107#磁道的请求者服务,还有若干进程在等待服务,它们依次请求访问的磁道号队列(FIFO)为:
117,133,217,161,206,223,101,187,136,24,80,15,81,82,284,143,95,77,235,50,184
(1) 采用N-Step-SCAN(N=9)磁盘调度算法时,写出磁道访问序列
(2) 计算平均寻道长度ASL(保留两位小数)
解析:
(1) 磁道访问序列: -> 101-> 95 -> 82 -> 81 -> 80 -> 77 -> 24 -> -> 143 -> -> 235 -> 184 ->
(2) 平均寻道长度:827/21=39.38
因为N=9,即每个子队列的长度为9;SCAN算法磁头双向移动
第一个子队列的访问序列:
107# -> 117 -> 133 -> 136 -> 161 -> 187 ->
206 -> 217 -> 223 -> 101
第二个子队列的访问序列:
-> 95 -> 82 -> 81 -> 80 -> 77 -> 24 -> 15 ->
143 -> 284
第三个子队列的访问序列:
-> 235 -> 184 -> 50
寻道总长度:223-107+223-15+284-15+284-50=1014-187=827
2、设系统已完成某进程对188#磁道的访问请求,正在为访问129#磁道的请求者服务,还有若干进程在等待服务,它们依次请求访问的磁道号序列(FIFO)为:
284,33,197,23,281,188,113,12,160,179,91,
293,235,161,278,146,151,100,157,44
(1) 采用N-Step-CSCAN(N=9)磁盘调度算法时,写出磁道访问序列
(2) 计算平均寻道长度ASL(保留两位小数)
解析:
(1) 磁道访问序列: -> -> 281 -> 197 -> 188 -> 160-> 151 -> 146 -> 100 -> -> -> 278 -> 235 -> 179 -> 161-> 157 ->
(2) 平均寻道长度:1033/20=51.65
因为N=9,即每个子队列的长度为9;CSCAN算法磁头单向移动
第一个子队列的访问序列:
129# -> 113 -> 33 -> 23 -> 12 -> 284 -> 281 -> 197 -> 188 -> 160
第二个子队列的访问序列:
-> 151 -> 146 -> 100 -> 91 -> 293 -> 278 ->
235 -> 179 -> 161
第三个子队列的访问序列:
-> 157 -> 44
寻道总长度:129-12+284-12+284-91+293-91+293-44=1283-250=1033
OS计算题练习的更多相关文章
- PMP--可能会涉及到的计算题
一.进度管理里的历时三点估算历时的三点估算可能会出现在进度管理的计算题里.以下公式,大家要记住:说一下历时的三点估算中的几个值:1.最有可能的历时估算:Tm2.最乐观的历时估算: To3.最悲观的历时 ...
- 将100道计算题输出至txt文件,再读取文件至控制台,在控制台中输入答案并评判对错
我在课堂上基本完成了输出100道题和创建文档,但是因为对输入输出流不熟悉,所以并没有实现将输出的计算题导出到文档里,在课下我又请教了宿舍的大佬,基本完成如下: 源代码: import java.io. ...
- CTF-练习平台-WEB之 计算题
四.计算题 打开连接 输入后发现只能输入一个数字,在火狐浏览器中按F12,打开查看器 ,如图所示修改最大长度 输入答案后验证,当当当~~flag出现
- MathExam小学一二年级计算题生成器V1.0
MathExam小学一二年级计算题生成器v1.0 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning ...
- MathExamV2.0四则混合运算计算题生成器
MathExamV2.0四则混合运算计算题生成器----211606360 丁培晖 211606343 杨宇潇 一.预估与实际 PSP2.1 Personal Software Process Sta ...
- Java练习 SDUT-1149_计算题
计算题 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 一个简单的计算,你需要计算f(m,n),其定义如下: 当m=1时 ...
- LOJ 2409「THUPC 2017」小 L 的计算题 / Sum
思路 和玩游戏一题类似 定义\(A_k(x)=\sum_{i=0}^\infty a_k^ix^i=\frac{1}{1-a_kx}\) 用\(\ln 'x\)代替\(\frac{1}{x}\), 所 ...
- THUPC2017 小 L 的计算题
求 $k=1,2,\cdots,n \space \space \sum\limits_{i=1}^n a_i^k$ $n \leq 2 \times 10^5$ sol: 时隔多年终于卡过去了 之前 ...
- CRC(Cyclic Redundancy Check)循环冗余校验码与海明码的计算题
(17)采用CRC进行差错校验,生成多项式为G(X)=X4+X+1,信息码字为10111,则计算出的CRC校验码是 (17) .A.0000 B.0100 C.0010 D.1100试题 ...
随机推荐
- php+超大文件上传
1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...
- PHP+下载文件夹
php下载文件我整理了这三种方法,和大家分享一下: 第一种:直接添加文件下载的绝对路径连接 //如:我有一个文件在demo.xx.cn/demo.zip<button> <a ...
- 51nod 1434
首先可以得出一个性质:LCM(1,2,3,4,...,N-1,N) 中质因子k的出现的次数为t,则有k^t<=n 根据这个性质我们先筛出素数,然后枚举每个质数,求出对应的k和t,然后找出倍数j( ...
- 斜率dp的模板总结
#include<cstdio> #include<algorithm> using namespace std; long long sumt[40005],sum[4000 ...
- 【原创】go语言学习(七)数组
目录 数组定义 二维数组 数组拷贝.传参 数组定义 1. 数组是同一类型的元素集合. var a [3]int //定义一个数组 //Go中数组下标从0开始,因此⻓长度为n的数组下标范围:[0,n-1 ...
- RethinkDB是什么?—— 面向文档的NOSQL数据库,MVCC+Btree索引,pushes JSON to your apps in realtime采用push思路,优化的ssd存储
RethinkDB是什么? RethinkDB是新一代的面向文档的数据库存储管理系统,原本是MySQL中针对SSD优化的一个存储引擎,后来脱离了MySQL成为了独立的系统. 数据如何存储在磁盘上? 数 ...
- GC的判定的2种方式
对象是否死亡的2中判定方法:引用计数和可达性分析(又称引用链) 1.引用计数 对象再被创建时,对象头里会存储引用计数器,对象被引用,计数器+1:引用失效,计数器 -1:GC时会回收计数器为0的对象.但 ...
- Alpha项目冲刺! Day3-产出
各个成员今日完成的任务 林恩:任务分工,博客撰写,完善设置等模块 杨长元:安卓本地数据库基本建立 李震:完成注册页面 胡彤:完善服务端 寇永明:画图,学习 王浩:画图,学习 李杰:画图,学习 各个成员 ...
- mysql 触发器语法详解
1.创建Mysql触发器: 语法: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW BE ...
- openstack 基镜像展开过程