OS习题课部分答案
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
444
缺
读c写c
150
446
650
448
450
436
即b[i][j]=a[i][j];的循环中从b[8]行开始要进行LRU淘汰,根据该循环特点,b[8]行=a[8]行
与b[9]行=a[9]行这两次循环的页面访问是A4B4A4B4,整个循环序列为:
A4B4A4B4,A5B5A5B5,…A13B13A13B13,可化简为A4B4,A5B5,…A13B13
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
问:当作业分配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算法,页面调度过程如下:
3.考虑以下程序:
int a[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算法。
OS
存储管理
2、某系统采用请求分页式管理,页面淘汰算法为LRU,每个作业占15页,其中一页用来存放程序,每一页存放200个整型变量,考虑如下程序:
int a[20][100],b[20][100],i,j;
for(i=1;i<=20;i++)
for(j=1;j<=100;j++)
a[i][j]=0;
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
159
Hale Waihona Puke 161163165
缺
读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
第一个循环,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]行)均被读入内存,
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
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
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
循环变量
读写操作
内存页面
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都被载入内存
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个页面,每两行一页
缺
读c写c
150
446
650
448
450
436
即b[i][j]=a[i][j];的循环中从b[8]行开始要进行LRU淘汰,根据该循环特点,b[8]行=a[8]行
与b[9]行=a[9]行这两次循环的页面访问是A4B4A4B4,整个循环序列为:
A4B4A4B4,A5B5A5B5,…A13B13A13B13,可化简为A4B4,A5B5,…A13B13
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
问:当作业分配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算法,页面调度过程如下:
3.考虑以下程序:
int a[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算法。
OS
存储管理
2、某系统采用请求分页式管理,页面淘汰算法为LRU,每个作业占15页,其中一页用来存放程序,每一页存放200个整型变量,考虑如下程序:
int a[20][100],b[20][100],i,j;
for(i=1;i<=20;i++)
for(j=1;j<=100;j++)
a[i][j]=0;
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
159
Hale Waihona Puke 161163165
缺
读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
第一个循环,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]行)均被读入内存,
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
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
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
循环变量
读写操作
内存页面
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都被载入内存
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个页面,每两行一页