设某道作业的程序部分占一页, A 是该作业的一个100x100字的数组,在虚存空间中 以行为主顺序存放(即按如下顺序存放: A (1,1), A (1,2),…, A (1,100), A (2,1),…, A (2,100),…, A (100,1),…, A (100,100))。页大小为100字,驻留集大小为2个页帧。若采用 LRU 策略,则下列两段对 A 进行初始化的程序引起的页故障数各是多少? forj =1 to 100 do for i =1 to 100 do A ( ij )=0 ② for I =1 to 100 do forj =1 to 100 do A ( ij )=0
时间: 2023-09-25 14:11:13 浏览: 209
对于第一段程序:
初始化 A 数组的过程需要依次访问 A 数组中的每一个元素,每次访问一个元素时,都需要将该元素所在的页调入内存。由于驻留集大小为 2 个页帧,所以当第三个页调入内存时,必须淘汰掉一个已经驻留内存中的页,这时采用 LRU 策略淘汰最近最久未使用的页。因此,初始化 A 数组的过程总共会引起 10000/100=100 次页故障,其中有 98 次是由于淘汰已驻留内存的页而引起的。
对于第二段程序:
该程序与第一段程序的执行过程相同,只是访问数组元素的顺序不同。由于虚存中按行为主的顺序存放 A 数组,因此该程序的访问顺序与虚存中 A 数组的存放顺序相同,可以保证每次访问一个元素时,其所在的页已经在内存中驻留。因此,在执行该程序的过程中,不会引起任何页故障,页故障数为 0。
相关问题
在某个请求分页系统中,某程序在一个时间段内有如下的存储器引用:12、351、190、90、430、30、550(以上数字为虚存的逻辑地址)。假定内存中每块的大小为100B,系统分配给该作业的内存块数为3块。回答如下问题: (1)对于以上的存储器引用序列,给出其页面走向。 (2)设程序开始运行时,已装入第0页。在先进先出页面置换算法和最久未使用页面置换算法(LRU算法)下,分别画出每次访问时该程序的内存页面情况;并计算出缺页中断次数和缺页率。
好的,我明白了,下面是我的回答:
(1) 对于以上的存储器引用序列,假设每个页面的大小为100B,系统分配给该作业的内存块数为3块,那么页面走向如下:
| 页号 | 页面内容 |
|------|----------|
| 1 | 12、35 |
| 2 | 190、90 |
| 3 | 430、30 |
| 1 | 550、12 |
| 2 | 351、190|
| 3 | 90、430 |
| 1 | 30、550 |
(2) 设程序开始运行时,已装入第0页。在先进先出页面置换算法和最久未使用页面置换算法(LRU算法)下,分别画出每次访问时该程序的内存页面情况,并计算出缺页中断次数和缺页率。
先进先出页面置换算法:
| 访问顺序 | 当前页面 | 页面状态 | 缺页中断次数 | 缺页率 |
|--------|----------|----------|-------------|--------|
| 12 | 0 | 0,1 | 1 | 33.33%|
| 35 | 0,1 | 1,2 | 2 | 66.67%|
| 190 | 0,1,2 | 0,2,1 | 3 | 100.00%|
| 90 | 1,2,0 | 2,1,0 | 3 | 100.00%|
| 430 | 2,0,1 | 1,0,2 | 4 | 133.33%|
| 30 | 0,1,2 | 2,0,1 | 5 | 166.67%|
| 550 | 1,2,0 | 0,1,2 | 6 | 200.00%|
LRU页面置换算法:
| 访问顺序 | 当前页面 | 页面状态 | 缺页中断次数 | 缺页率 |
|--------|----------|----------|-------------|--------|
| 12 | 0 | 0,1 | 1 | 33.33%|
| 35 | 0,1 | 1,0 | 2 | 66.67%|
| 190 | 1,0 | 0,2 | 3 | 100.00%|
| 90 | 0,2 | 2,1 | 4 | 133.33%|
| 430 | 2,1 | 1,0 | 5 | 166.67%|
| 30 | 1,0 | 0,2 | 6 | 200.00%|
| 550 | 0,2 | 2,1 | 7 | 233.33%|
其中缺页中断次数是指程序运行过程中,需要从虚拟内存中读取的页面数量,缺页率是指缺页中断次数占所有页面访问次数的比例。可以看出,在先进先出页面置换算法下,缺页中断次数和缺页率都比LRU算法高。
在一个分页虚存系统中,设页长2KB,某用户程序有30页。若该程序的虚页0、1、2、3、4、5、6、7已分别装入内存块4、17、18、20、25、26、30、32中,则该程序中的虚地址0AC5H和3AC5H对应的物理地址分别是多少,怎么计算
首先需要将虚拟地址转换为页号和页内偏移量。
对于虚地址0AC5H,其二进制表示为:
0000 1010 1100 0101
由于页长为2KB,即2的11次方字节,所以低11位为页内偏移量,中间的11位为页号。
页内偏移量为:
1011 0001 = B1H
页号为:
0000 0101 0110 = 056H
对于虚地址3AC5H,同理,页内偏移量为:
1011 0001 = B1H
页号为:
0011 0101 0110 = 356H
由于程序的虚页0、1、2、3、4、5、6、7已经装入了内存块4、17、18、20、25、26、30、32中,因此虚页号为056H和356H的页面也被装入了内存中。
根据虚拟地址到物理地址的映射规则,物理地址由页框号和页内偏移量组成。
由于已经装入内存中的虚页号为056H和356H,因此它们对应的页框号分别为4和30。
对于虚地址0AC5H,物理地址为:
页框号:4,页内偏移量:B1H
物理地址为:
0000 0100 1011 0001 = 04B1H
对于虚地址3AC5H,物理地址为:
页框号:30,页内偏移量:B1H
物理地址为:
0001 1110 1011 0001 = 1EB1H
阅读全文