知识补充
K是千 M是兆 G是吉咖 T是太拉
8 bit(位) = 1 Byte(字节) 1024 Byte(字节) = 1 KB 1024 KB=1 MB 1024 MB=1 GB
1024 GB=1 TB
时钟算法(书P228):
单选题
- 一个32位地址的计算机使用两级页表。虚拟地址被分成9位的顶级页表域,11位的二级页表域和一个偏移量。下列有关页面大小、地址空间含有的页面数量,说法正确的是( )?
A. 页面大小为4KB,页面数量有1M个
B. 页面大小为2KB,页面数量有512个
C. 页面大小为2KB,页面数量有1M个
D. 页面大小为4KB,页面数量有512个
段长为 232 = 4 KB;
偏移量为 12 位,页面大小为 12 12,
所以页面数量为 232 / 212 = 220 = 1 M;
- 系统为某进程分配了4个页框,该进程已访问的页号序列为2,0,2,9,3,4,2,8,2,4,8,4,5。若进程要访问的下一页的页号为7,依据LRU算法,应淘汰页的页号是( )?
A. 4
B. 5
C. 8
D. 2
知识补充(P225):
LRU(Least Recently Used):最近最少使用置换算法;
过程:
- 在改进型CLOCK置换算法中,如果页表项中字段A为访问位,M为修改位。A=0表示页最近没有被访问,A=1表示页最近被访问过。M=0表示页没有被修改过,M=1表示页被修改过。按(A,M)所有可能的取值,将页分为四类:(0,0)、(1,0)、(0,1)和(1,1),则该算法淘汰页的次序为( )?
A. (0,0),(1,1),(0,1),(1,0)
B. (0,0),(0,1),(1,1),(1,0)
C. (0,0),(0,1),(1,0),(1,1)
D. (0,0),(1,0),(0,1),(1,1)
根据课本P229:
具有2个附加位的物理块中的页有4种情况:
(1)最近未访问过,也未被修改过(u=0,w=0);
(2)最近未访问过,但被修改过(u=0,w=1);
(3)最近访问过,但没有被修改过(u=1,w=0);
(4)最近访问过,也修改过(u=1,w=1);
其中第1种情况是最理想的能被置换出去的页,最后一种情况就是最不该置换出去的页。
根据这个分类,改进型时钟算法如下:
(1)从指针当前位置开始扫描,在这次扫描过程中对使用位的值不做任何修改,找到一个 u=0,w=0 的物理块,进行置换;
(2)如果第(1)步失败,则查找 u=0,w=1 的块,把遇到的第1个这样的物理块中的页置换出去,同时把扫描过程中遇到的 u=1 的块设为 u=0;
(3)如果前两步都失败,在重新执行第1步、第2步,这样一定会找到一个合适的页替换出去。
该算法同简单的 Clock 算法相比,减少了磁盘输入输出的次数。但是,为了找到一个合适的置换页,最多要经过4次扫描。
主观题
有一请求分页存储管理系统,页面大小为每页200字节,有一个50×50的整型数组按行连续存放,每个整数占2个字节,将数组初始化为0的程序描述如下:
int a[50][50]
int i,j;
for(i=0;i<50;i++)
for(j=0;j<50;j++)
a[i][j]=0;
若在程序执行时,内存中只有一个存储块用来存放数组信息,试问该程序执行时产生多少次缺页中断?(请写出具体分析过程)
由题目可知,该数组中有2500个整数,每个整数占2个字节,共需存储空间5000个字节;而页面大小为200个字节,数组占用25页。即
a[0][0],a[0][1],…,a[0][49],a[1][0],a[1][1],…,a[1][49] 占用一页
a[2][0],a[2][1],…,a[2][49],a[3][0],a[3][1],…,a[3][49] 占用一页
…
a[48][0],a[48][1],…,a[48][49],a[49][0],a[49][1],…,a[49][49] 占用一页
初始化数组是按行进行的,即第一页初始化完成进行第二页,一直到最后一页,共计25页。
所以产生25次缺页中断。