一、引入
在存储器管理中连续分配方式会形成许多“碎片”,虽然可以通过“紧凑”方法将许多碎片拼接成可用的大块空间,但须为之付出很大的开销,如果一个进程能够直接分散地装入到许多不相邻接的分区中,便可充分的利用空间,无需再进行紧凑。基于这一思想便产生了离散分配方式,根据在离散分配时所分配地址空间的基本单位不同,又可将离散分配方式分为以下三种:(1)分页存储管理方式(2)分段存储管理方式(3)段页式存储管理方式,今天主要介绍分页存储管理方式。分页存储因为将内存固定大小分区,所以不存在外碎片,但是会有内碎片(页内碎片)
二、分页存储管理的基本方法
1.页:分页存储管理将进程的逻辑地址空间分成若干个页,并对各页加以编号,从0开始,如第0页,第1页等
2.物理块(页框):内存物理地址空间按2n等分成页框,并从0开始连续编号:0,1,2等
3.地址结构:
分页地址中的地址结构如下:
它包含两部分内容:第一部分为页号P,后一部分为偏移量d,即页内地址。对某特定机器,其地址结构是一定的。若给定一个逻辑地址空间中地址为A,页面大小为L,则页号和页内地址d可按照下式求得:
其中INT是整除函数,括号表示向下取整,MOD是取余函数由此,作业的逻辑结构可以表示为:V=(P,d),
4.页表(PMT/Page Mapping Table):在分页系统中,允许进程的各个页离散地存储在内存地任一物理块中,为保证进程仍然能够正确地运行,即能在内存中找到各个页面所对应地物理块,系统又为每个进程建立了一张页面印象表,简称页表,它地作用是实现从页号到物理块号的地址映射
5.页表地址寄存器:保存当前执行进程页表的起始地址和页表的长度
6.分页存储管理方式示例
三、地址变换机构
1.基本地址变换(直接地址映像):借助页表、页表寄存器完成作业逻辑地址(虚地址)到内存物理地址的变换
问题:从虚地址转换为物理地址,然后再完成地址访问,共访问几次主存,效率是多少? 答:共访问两次主存,效率为50%
2.具有快表的地址变换:增设若干具有并行查询能力的特殊高速缓冲寄存器(联想寄存器快表),保存当前执行进程的部分全部页表表目,
具体流程为:查快表,找到则访问内存直接得物理地址,没找到则先访问内存查页表再访问内存查到物理地址
3.分页基本地址变换示例:
4.具有快表的地址变换示例:
四、例题
答:因为逻辑地址包括页地址+偏移量,所以逻辑地址的大小为页的数量×页的大小,所以此题应为256×210 = 218
答:(1)逻辑地址为1023,则它所在的页号为1023/1K = 0,它的偏移量为1023 MOD 1K = 1023,所以它对应的主存块为2号块,物理地址为2×1K+1023 = 3071
(2)逻辑地址为2500,则它所在的页号为2500/1K = 2,它的偏移量为2500 MOD 1K = 452,所以它对应的主存块为6号块,物理地址为6×1K+452 = 6596
(3)逻辑地址为3500,则它所在的页号为3500/1K = 3,它的偏移量为3500 MOD 1K = 428,所以它对应的主存块为7号块,物理地址为7×1K+428 = 7596
(4)逻辑地址为4500,则它所在的页号为4500/1K = 4,不存在此页号。所以是越界中断,4500这个逻辑地址有误,超过了此进程的最大页
答:有效访问时间为 t = 20% ×(20 + 100 × 2)+ 80% × ( 20 + 100) = 140ns,是这样的,如果能够在联想寄存器中查到我们要的表,那么只需要一次访问联想寄存器的时间和一次内存访问即可直接找到对应的物理块号,如果在联想寄存器中找不到我们要的表,那么需要先查页表(相当于访问一次内存),再根据页表查询其对应的物理块号(再访问一次内存),所有有效访问时间即为两者的加权之和
答:设命中率为p,则由题意可得方程 p × (100+180) +(1-p)×(100 + 2×180)= 325,解方程得 p = 75%