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试题 ...
随机推荐
- How to troubleshoot the "Could not create 'CDO.Message'" error message
https://support.microsoft.com/en-us/kb/910360 Method 1: Make sure that the Cdosys.dll file is cor ...
- imp
imp 重载模块功能 from imp import reload 当在shell中使用一个模块,原始代码改了,要使用新的还得退出shell重新载入一次,这样的话原来的变量就都不在了 这时候可以使用i ...
- ROStopic 通信方式
操作演示,对 topic 通信方式的理解请看:点击打开链接 开启终端,运行 roscore 新开一个终端(已经安装好(ros-<distro>-ros-tutorials 包,否则运行 ...
- git submodule subtree常用指令
submodule 官方文档 添加 git submodule add -b master git@git.xxx:xxx/xxx.git src/xxx 删除 git submodule deini ...
- ckeditor自定义工具栏
/** * 获取编辑器工具栏自定义参数 * @param type 类型 simple=极简版 basic=基本版 full=完整版 */ function get_ckeditor_toolbar( ...
- python smbus IOError: [Errno 2] No such file or directory
1.打开配置文件 sudo nano /boot/config.txt 打开以下选项 "dtparam=i2c_arm=on" ctrl + o 保存 ctrl + x 退出 2. ...
- (转)hadoop 常规错误问题(一)
转至:http://www.freeoa.net/osuport/db/my-hbase-usage-problem-sets_2979.html 本文是我在使用Hbase的过程碰到的一些问题和相应的 ...
- dp之斜率优化
前几天想练练思维,所以从cf上随便找了一道dp题,看完题意后第一感觉很简单,就是简单的区间dp题,但是看到数据范围的我顿时就懵了,(1≤n≤105) emmmmmmmm,按照普通的思路肯定会超时的.. ...
- meshing-局部加密
原视频下载地址: https://pan.baidu.com/s/1nvSf5qh 密码: cpbs
- OpenJudge计算概论-年龄与疾病
/*========================================================== 年龄与疾病 总时间限制: 1000ms 内存限制: 65536kB 描述 某医 ...