二进制表示虚地址 十六进制表示页号、页内位移
页页内位
(3)地址变换
? 使用二进制方法求物理地址
① 将逻辑地址线性分割求出页号P和页内位移W:
? 若逻辑地址以十六进制、八进制的形式给出,将逻辑地址转换成二
进制;
? 按页的大小分离出页号P和位移量W(低位部分是位移量,高位部
分是页号);
② 将位移量直接复制到内存地址寄存器的低位部分;
③ 以页号查页表,得到对应块号,将块号转换成二进制数填入地址寄存器的高
位部分,从而形成内存地址。
使用十进制方法求物理地址
? 根据逻辑地址求出页号P和页内位移W;
? 页号P=逻辑地址 % 页大小(%表示整除) ? 页内位移W=逻辑地址 mod 页大小
? 根据页号查页表得块号B;
? 物理地址=块号B×页大小+页内位移W
? 公式说明
? 物理地址=块起始地址+块内位移W
? 块起始地址=块长×块号
块长=页长
? 块内位移=页内位移
【例】:有一系统采用页式存储管理,有一作业大小是8KB,页大小为2KB,依次装入内存的第7、9、A、5块,试将虚地址0AFEH,1ADDH转换成内存地址。 解:
求虚地址0AFEH的物理地址: 0000 1010 1111 1110 P=1 W=010 1111 1110
MR=0100 1010 1111 1110=4AFEH 求虚地址1ADDH的物理地址: 0001 1010 1101 1101 P=3 W=010 1101 1101
?
MR=0010 1010 1101 1101=2ADDH 【例】:有一系统采用页式存储管理,有一作业大小是8KB,页大小为2KB,依次装入内存的第7、9、10、5块,试将虚地址7145,3412转换成内存地址。 解:
转换虚地址 3412: P=3412 % 2048 =1
W= 3412 mod 2048 = 1364 MR=9*2048+1364=19796 转换虚地址 7145: P=7145 % 2048 =3
W=7145 mod 2048 =1001 MR=5*2048+1001=11241
问题:块号若为十六进制的字母表示,MR如何计算?(十六进制转换成十进制)
例:考虑一个由8个页面,每页有1024个字节组成的逻辑空间,把它装入到有32个物理块的存储器中,问:
(1)逻辑地址至少需要多少二进制位表示? (2)物理地址至少需要多少二进制位表示? 分析 :
逻辑地址结构由两个部分组成: 前一部分表示该地址所在页面的页号P; 后一部分表示页内地址(页内位移)W。 物理地址中块号的地址位数决定了块的数量。由于页式存储管理内存空间块的大小与页面大小相同,所以物理地址中块内地址与逻辑地址中的页内地址位数相同。 解 :
因为页面数为8=2^3,故需要3位二进制数表示。每页有1024个字节,1024=2^10,于是页内地址需要10位二进制数表示。32个物理块,需要5位二进制数表示(32=2^5)。 (1)页的逻辑地址由页号和页内地址组成,所以需要3+10=13位二进制数表示。 (2)页的物理地址由块号和页内地址的拼接,所以需要5+10=15位二进制数表示。
? 物理地址计算
? 有一系统采用页式存储管理,某个作业大小是4GB,页大小为4KB,依次
装入内存的第6、5、3、2块, ? (1)画出页表;
? (2)试将虚地址5000,12000转换成内存地址。
? 5.4.3 动态页式管理(请求页式管理) ? 复习: 5.3 覆盖与交换技术
? 实现内存扩充的方法:
? 采用覆盖技术 ? 采用交换技术 ? 采用虚拟存储技术
? 常用的虚拟存储技术
? 请求分页存储管理
?
? ?
?
?
? 请求分段存储管理 ? 请求段页式存储管理
分页内存管理方式
? 静态分页管理 ? 动态分页管理 静态分页管理
? 基本思想:进程开始执行前,将全部页装入内存。 动态分页管理(请求页式管理)
? 基本思想:进程开始执行前,只需装入即将运行的页面,然后根据需要载入
其他页面。
请求页式管理的调入策略
? 预测调页:分析预测,运行前调入
? 系统根据作业运行的情况,预测哪些页将要运行,在其运行之前先
行调入内存,这样在程序运行的过程中就不会出现缺页中断。 ? 缺点:系统无法预计系统中作业的运行情况,难以实现。
? 请求调页(请求分页):缺页请求,运行时调入
? 进程在执行的过程中,发现要执行的程序或处理的数据不在内存,
向系统提出调入相应程序的请求,系统响应用户的请求将它所请求的页调入内存。
请求页式管理的页表结构
? 页表:反映该页是否在内存,在外存的位置,在内存的时间的长短,是否需
要回写等。 ? 页号:
? 块号:
? 中断位:0 表示该页在内存,1示该页不在内存(需要缺页中断) ? 辅存地址:该页在辅存的位置 ? 修改位:0 表示该页调入内存后没有修改,1表示页调入内存后修改
过
? 引用位:0 表示最近没有被访问,1表示最近被访问过
页号 块号 中断位 辅存地址 修改位 请求分页的页表结
……
? 5.4.4 请求页式管理的页面置换算法
? 当要将辅存中的一页面并送入到全满的内存中时,必须把已在内存中的某一页淘汰
掉。用来选择淘汰哪一页的规则叫做置换算法,也称为淘汰算法。 ? 常用算法:
? 先进先出算法FIFO:淘汰先调入内存的页
? 最久未使用淘汰算法LRU:淘汰未被访问的页中时间最长的页
? 最近未使用淘汰算法NUR:淘汰第1个最近未被访问的页(淘汰页表中第
一个访问位为0的页)
? 最不经常使用页面淘汰算法(LFU):淘汰那些到当前时间为止访问次数最
少的页。页表中增加一个访问记数器。
? 最佳算法:当要调入一新页而必须淘汰一旧页时,所淘汰的页是以后不再使
用的,或者是以后相当长的时间内不会使用的。这种算法是不可能的。
? 页面淘汰算法优劣的衡量标准:缺页中断率f’
? f’=f/a (a是总的页面访问次数,f是缺页中断次数)
【例】一个进程已分到4个页帧(块)(M=4),其页表如下表所示,当进程访问第4页时产生缺页中断,请分别用FIFO、LRU、NRU算法决定将哪一页淘汰?是否需要回写?
页表: 页号 页帧 装入时间 最近访问时间 访问位 修改位
2 0 60 161 0 1
1 1 130 160 0 0
0 2 26 162 1 0
3 3 20 163 1 1
FIFO:淘汰最先调入的页面(页帧为3的页) ∵修改位为1,∴要回写。
LRU:淘汰最久未访问的页(页帧为1的页) ∵修改位为0,∴不要回写。
NRU: 淘汰最近未使用的页,淘汰第一个访问位为0的页(页帧为0的页) ∵修改位为1,∴要回写。
【例】对访问串:1、2、3、4、1、2、5、1、2、3、4、5,指出在驻留集大小分别为3和4时,使用FIFO(先进先出)和LRU(最久未使用)置换算法的缺页率,结果说明了什么? (设驻留集M表示分给该作业的内存块数) 分析: