第五章虚拟存储器请求分页中的硬件支持1.页表机制页号物理块号状态位P访问字段A修改位M外存地址(1)状态位P:指示该页是否已调入内存。(2)访问字段A:记录本页在一段时间内被访问的次数或最近未被访问的时间。(3)修改位M:表示该页在调入内存后是否被修改过。若修改过,则换出时需重写至外存。(4)外存地址:指出该页在外存上的地址数学与信息技术学院
第五章 虚 拟 存 储 器 数学与信息技术学院 请求分页中的硬件支持 1. 页表机制 页号 物理块号 状态位P 访问字段A 修改位M 外存地址 (4)外存地址:指出该页在外存上的地址 (1)状态位P:指示该页是否已调入内存。 (2)访问字段A:记录本页在一段时间内被访问的次数或最近未被访问 的时间。 (3)修改位M:表示该页在调入内存后是否被修改过。若修改过,则 换出时需重写至外存
第五章虚拟存储器2.缺页中断机构缺页中断:访问的页不在内存,便页面产生缺页中断。6B:5缺页中断与一般中断的区别:4A:1)在指令执行期间产生和处理中断信3号指令2AcopyBTO2)一条指令在执行期间,可能产生多1次缺页中断数学与信息技术学院
第五章 虚 拟 存 储 器 数学与信息技术学院 2. 缺页中断机构 页 面 B: A: 6 5 4 3 2 1 指 令 copy A 2)一条指令在执行期间,可能产生多 TO B 次缺页中断 ◆缺页中断:访问的页不在内存,便 产生缺页中断。 ◆ 缺页中断与一般中断的区别: 1)在指令执行期间产生和处理中断信 号
第五章虚拟存储器练习:有一个二维数组:intX[64][64]:假设系统中有2个分配给它两个内存块程序正好可以放在一个页中(已装入内存),数据会在剩余的块中被换入或换出(尚未装入内存)。每页可以放数据为128个。若数组X为按行存储。下面两段代码中,缺页中断次数分别是多少?for(inti=0;i<64;i++;)for(int j= 0;j < 64; j++)for(int i=0; i< 64; i++)for(int j = 0; j <64; j++)X[i][Li] = 0;X[i[Di] =0;数学与信息技术学院
第五章 虚 拟 存 储 器 数学与信息技术学院 for(int j = 0;j < 64;j++) for(int i = 0; i < 64; i++) X[i[[j] =0; 有一个二维数组:int X[64][64]: 假设系统中有2个分配给它两个内存块, 程序正好可以放在一个页中(已装入内存),数据会在剩余的块中被换入或 换出(尚未装入内存)。每页可以放数据为128个。若数组X为按行存储。 下面两段代码中,缺页中断次数分别是多少? for(int i = 0; i < 64;i++; ) for(int j = 0; j < 64; j++) X[i][[j] = 0; 练习:
第五章虚拟存储器3.地址变换机构在快表中:1修改表项中的访问位,然后利用表项中给出的块号和页内地址,形成物理地址。不在快表但在内存中:查看页表中的状态位,若该页已经调入内存,填写快表,快表满时,淘汰一个页表项;不在内存中:若该页尚未调入内存,产生缺页中断:>内存不满:请求OS把该页调入。>内存满:淘汰一页。数学与信息技术学院
第五章 虚 拟 存 储 器 数学与信息技术学院 3. 地址变换机构 ◆在快表中:修改表项中的访问位,然后利用表项中给出的块号 和页内地址,形成物理地址。 ◆ 不在快表但在内存中:查看页表中的状态位,若该页已经调入内 存,填写快表,快表满时,淘汰一个页表项; ◆不在内存中:若该页尚未调入内存,产生缺页中断: ➢内存不满:请求OS把该页调入。 ➢内存满:淘汰一页
第五章虚拟存储器程序请求访问一页3.地址变换机构开始缺页中断处理L页号>=页表长度?是一((越界中断保留CPU现场否从外存中找到缺页CPU检索快表否是内存满否?页表项在快表中?是香选择一页换出访问页表产生缺页中否该页被修改否?页在内存?断请求调页是堤修改快表将该页写回外存1修改访问位和修改位OS命EPU从外存读缺页形成物理地址启动I/O硬件地址变换结束将一页从外存换入内存修改页表数学与信息技术学院
第五章 虚 拟 存 储 器 数学与信息技术学院 3. 地址变换机构 缺页中断处理 保留CPU现场 从外存中找到缺页 内存满否? 选择一页换出 该页被修改否? 将该页写回外存 OS命令CPU从外存读缺页 启动I/O硬件 将一页从外存换入内存 修改页表 否 是 是 否 页表项在快表中? CPU检索快表 访问页表 否 页在内存? 修改访问位和修改位 形成物理地址 地址变换结束 否 页号>=页表长度? 开始 程序请求访问一页 产生缺页中 断请求调页 修改快表 是 越界中断 是 是