OS习题课部分答案.docx
- 文档编号:24777973
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:28
- 大小:142.82KB
OS习题课部分答案.docx
《OS习题课部分答案.docx》由会员分享,可在线阅读,更多相关《OS习题课部分答案.docx(28页珍藏版)》请在冰豆网上搜索。
OS习题课部分答案
OS习题课部分答案
存储管理
2、某系统采用请求分页式管理,页面淘汰算法为LRU,每个作业占15页,其中一页用来存放程序,每一页存放200个整型变量,考虑如下程序:
inta[20][100],b[20][100],i,j;
for(i=1;i<=20;i++)
for(j=1;j<=100;j++)
a[i][j]=0;
for(i=1;i<=20;i++)
for(j=1;j<=100;j++)
b[i][j]=a[i][j];
设数组ab均按行存储,程序已经调入主存,变量ij放在程序页中,问此程序会产生多少次缺页中断?
最后留在内存中有哪些页面?
解:
数组a,2000个元素,共需占用10个页面,每两行一页
数组b,2000个元素,共需占用10个页面,每两行一页
第一个循环,a[I,j]=0会将a矩阵全部调入内存被赋值0,发生10次缺页中断,还剩4块;
第二个循环,先读a,再写b,剩余的空闲4块内存,可放入b数组的0~7行,此时内存已满,若用A1表示a数组的a[0]和a[1]行占据的页面编号,则a数组的A0~A19和b数组的B0~B3页面(b[0]~b[7]行)均被读入内存,
即b[i][j]=a[i][j];的循环中从b[8]行开始要进行LRU淘汰,根据该循环特点,b[8]行=a[8]行
与b[9]行=a[9]行这两次循环的页面访问是A4B4A4B4,整个循环序列为:
A4B4A4B4,A5B5A5B5,…A13B13A13B13,可化简为A4B4,A5B5,…A13B13
A4
B4
A5
B5
A6
B6
A7
B7
A8
B8
A9
B9
A10
B10
A11
B11
A12
B12
A13
B13
A0
B4
B11
1
B5
B12
2
B6
B13
3
B7
4
A4
A11
5
A5
A12
6
A6
A13
7
A7
8
A8
9
B8
b0
A9
b1
B9
b2
A10
b3
B10
14次缺页中断
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
总共发生14+15=29次缺页中断,内存中最终页面A7-A13,B7-B13
3.考虑以下程序:
inta[100][150],b[150][200],c[100][200],i,j,k;
For(i=1;i<=100;i++)
for(j=1;j<=200;j++)
for(k=1;k<=150;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
设a、b矩阵已经置好初值,c矩阵初始为0,各矩阵以页为单位连续存放;主存初始为空,请求分页时采用fifo算法。
问:
当作业分配10个页面,每个页面可存储100整数,缺页次数是多少?
留在内存的最后的页面abc矩阵各占多少页?
解:
矩阵a[100][150]共需150页每行占1.5个页面
矩阵b[150][200]共需300页每行占2个页面
矩阵c[100][200]共需200页每行占2个页面
程序的逻辑地址空间中,总共需要650个页面,试编号为:
a占用1-150号页面;b占151-450号;c占451-650号.
c[i][j]=c[i][j]+a[i][k]*b[k][j]→读a,读b,计算a*b,读c,计算c+a*b,写c;而与内存访问有关的操作可简化为:
读a,读b,读c,写c
对于依次访问的a,b,c矩阵,只要不跨页,不会发生缺页中断;比如每次访问a[I,k]和c[I,j]时;但是,在每次访问b[k][j]的时候,由于是按列读取,必然跨页。
采用fifo算法,页面调度过程如下:
循环变量
读写操作
内存页面
i,j,k
1
2
3
4
5
6
7
8
9
10
缺页
1,1,1
读a
1
缺
读b
1
151
缺
读c写c
1
151
451
缺
1,1,2
读a
1
151
451
读b
1
151
451
153
缺
读c写c
1
151
451
153
1,1,3
读a
1
151
451
153
读b
1
151
451
153
155
缺
读c写c
1
151
451
153
155
………每次循环发生1次缺页,且都是为读b而生,从151-165都被载入内存
1,1,8
读a
1
151
451
153
155
157
159
161
163
读b
1
151
451
153
155
157
159
161
163
165
缺
读c写c
1
151
451
153
155
157
159
161
163
165
1,1,9
读a
1
151
451
153
155
157
159
161
163
165
读b
167
151
451
153
155
157
159
161
163
165
缺
读c写c
167
151
451
153
155
157
159
161
163
165
1,1,10
读a
167
1
451
153
155
157
159
161
163
165
缺
读b
167
1
169
153
155
157
159
161
163
165
缺
读c写c
167
1
169
451
155
157
159
161
163
165
缺
1,1,11
读a
167
1
169
451
155
157
159
161
163
165
读b
167
1
169
451
171
157
159
161
163
165
缺
读c写c
167
1
169
451
171
157
159
161
163
165
………每次循环发生1次缺页
1,1,100
读a
1
331
333
335
337
339
341
343
345
347
缺
读b
1
349
333
335
337
339
341
343
345
347
缺
读c写c
1
349
451
335
337
339
341
343
345
347
缺
1,1,101
读a
1
349
451
2
337
339
341
343
345
347
缺
读b
1
349
451
2
351
339
341
343
345
347
缺
读c写c
1
349
451
2
351
452
341
343
345
347
缺
………
100,200,148
读a
150
428
430
432
434
436
438
440
442
444
缺
读b
150
446
430
432
434
436
438
440
442
444
缺
读c写c
150
446
650
432
434
436
438
440
442
444
缺
100,200,149
读a
150
446
650
432
434
436
438
440
442
444
读b
150
446
650
448
434
436
438
440
442
444
缺
读c写c
150
446
650
448
434
436
438
440
442
444
100,200,150
读a
150
446
650
448
434
436
438
440
442
444
读b
150
446
650
448
450
436
438
440
442
444
缺
读c写c
150
446
650
448
450
436
438
440
442
444
规律:
当循环次数为n*9+1或n*100+1时,读a,b,c都会发生缺页;其他情况,只有读b时发生1次缺页;
所以,读b总共发生缺页次数:
100*200*150次,而对于b和c来说:
总共100*200*150=3000000次循环中,n*9+1出现次数为:
3000000/9=333333次
而n*100+1出现的次数为:
3000000/100=29999次;
而n*9+1与n*100+1均出现的次数为3000000/900=3333次,此次数有重复计数,需减去,所以总缺页次数为:
(100*200*150)+(333333+29999-3333)*2次,即3719998次缺页中断。
4、有一个虚拟存储系统采用LRU算法,每个程序占3页内存,其中一页存放程序和变量i,j(不做他用)。
每一页可存放150个变量,程序A和B如下:
A:
intc[150][100],i,j;
for(i=0;i<=150;i++)
for(j=1;j<=100;j++)
c[i][j]=0;
B:
intc[150][100];
for(j=1;j<=100;j++)
for(i=1;i<=150;i++)
c[i][j]=0;
数组C按行存储,试问:
(1)程序A和B执行完后,分别缺页多少次?
(2)最后留在内存中的各是C的哪一部分?
解:
(1)数组C共需占100页,因为按行存储,所以每读入一个页面,会读入c数组的1.5行,如下所示:
页面1页面2
c[1][1]…………..c[2][51]...............
…………c[1][100]...............c[2][150]
c[2][1]…………..c[3][1]..................
…………c[2][50]...............c[3][50]
对于程序A,c按行访问,每循环150次发生1次缺页中断,故总共发生100次缺页中断。
对于程序B,c按列访问,每循环3次就要发生2次调页,c[1][1],c[2][1],c[3][1]…..共发生2*15000/3=10000次缺页。
(2)对于程序A,后300次循环访问的c数组元素,是保存在最后两个页面中的元素
对于程序B,后3次循环访问的c数组元素,是保存在最后两个页面的元素。
1、在南开大学与天津大学之间有一条小路,其中从S到T每次只允许一辆自行车通过,但中间有一个小的安全岛M(同时允许两辆自行车停留),可供两辆自行车在已从两端进入小路情况下错车使用,如下图所示。
试用PV操作设计一个算法使得来往的自行车顺利通过。
(南开97)
天津大学
T
KML
S
南开大学
2、设有8个进程,它们在并发系统中执行时有下图的顺序关系,试用PV操作实现这些进程的同步。
(北大91考研题)
P1P2
P3P5
P4
P6P7
P8
3、有一个仓库,可以存放A、B两种产品,仓库的存储空间足够大,但要求:
(1)每次只能存入一种产品(A或B)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OS 习题 部分 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)