4.3 知识点3:基本分页存储管理方式 4.3.1 要点归纳 1. 基本分页存储管理的原理 在分区存储管理中,要求把作业放在一个连续的存储区中,因而会产生许多碎片,固定分区会产生内部碎片,动态分区会产生外部碎片。尽管通过拼接技术可以解决碎片问题,但代价较高。分页存储管理允许将作业存放到许多不相邻接的内存区域中,从而有效地解决了存储器碎片问题(尽管会产生内部碎片,但相对进程来说是很小的)。 在基本分页存储管理(又称简单分页、纯分页)中,用户作业的地址空间被划分成若干大小相等的区域,称为页或页面。页面大小应该是2的整数幂,这样方便地址变换。由于作业大小不会刚好都是页面大小的整数倍,所以最后一个页面往往会有空间浪费,称为页内碎片,属于内部碎片。 相应地,将内存的存储空间也分成与页大小相等的区域,称为块或物理块。在为作业分配存储空间时,总是以块为单位来分配,可以将作业中的任意一页放到内存中的任意一个空闲块中。在调度作业运行时,必须将它的所有页面一次调入内存;若内存中没有足够的物理块,则作业等待。 单词Page Frame在国内操作系统教材中的翻译方式很多,有物理块(块)、页框、页架、页帧和帧等,读者应加以注意,但它表示的都是与一个逻辑页相对应的一个物理块。 基本分页存储管理系统中的逻辑地址结构如图4.22所示。它包含两部分,前一部分为页号P,后一部分为页内偏移量W。如果逻辑地址空间是2m,页面大小是2^n(字节),那么逻辑地址的高m–n位是页号,低n位是页内偏移量。 在基本分页存储管理中,逻辑地址空间以页为单位划分,而内存的分配是以内存块为单位分配的,页面大小正好等于一个物理块的大小。 图4.22 分页系统中的逻辑地址结构 上述地址结构中,两部分的地址长度为32位。其中0~11位(计12位)为页内偏移量,即每页大小=2^12=4×2^10=4KB;12~31位(计20位)为页号,即最多的页数=2^20= 1×2^10×2^10=1MB。页内偏移量也称为页内位移、页偏移或页内地址等。 为了便于在内存中找到进程的每个页面所对应的物理块,系统为每个进程建立一张页面映像表,简称页表,记录页面在内存中对应的物理块号。页表一般存放在内存中,图4.23说明了页表的作用。 页面大小由机器的地址结构决定。在确定地址结构时,若选择的页面较小,一方面可以使页内碎片较小并减少内存碎片的总空间量,有利于提高内存利用率;另一方面也会使每个进程要求较多的页面,从而导致页表过长,占用大量内存,还会降低页面调入/调出的效率。若选择的页面较大,虽然可以减少页表长度,提高页面调入/调出的效率,但又使页内碎片增大。因此,页面的大小应该选择适中,一般在512B~8KB之间。 图4.23 页表的作用 2. 基本分页存储管理的存储空间管理 可用位示图构成主存分配表,位示图的每一行用一个字来表示,其中每一位(其位置用字号和位号确定,假设字号和位号从0开始编号)与一个主存块(其编号为块号)对应,0表示空闲,1表示已占用,最后一个字节为当前剩余的空闲块数。 主存分配时,计算块号公式为: 块号=字号×字长+位号 主存第i块归还时,在位示图中对应位置可按如下公式确定: 字号=块号i DIV 字长,位号=块号i MOD 字长 其中,DIV表示整除,MOD表示求余数。 3. 基本分页存储管理的地址变换机构 如图4.24所示,给出了分页存储管理系统中的地址变换机构,其中逻辑地址到物理地址的变换要借助页表来实现,页表通常存放在内存中。 为了实现上的方便,系统中设置了一个页表寄存器(PTR),其中存放页表在内存的起始地址F和页表的长度M。进程未执行时,页表的起始地址和长度存放在进程控制块中。当进程执行时,才将页表起始地址和长度存入页表寄存器中。 假设页面大小为L,页表长度为M,逻辑地址A通过地址变换得到物理地址E的过程如下: 计算页号P=(int)(A/L);页内偏移量W=A % L(W也称为页内地址)。 比较页号P和页表长度M,若P≥M,则产生越界中断,否则转到下一步执行。 页表中页号P对应的页表项地址=页表起始地址F+页号P×页表项大小,取出该页表项内容b,即为物理块号。 计算E=b×L+W。 用得到的物理地址E去访问内存。 以上整个地址变换过程都是由硬件自动完成的。 图4.24 分页存储管理系统的地址变换机构 例如,若页面大小L为1KB,页号2对应的物理块为b=8,计算逻辑地址A=2500的物理地址E的过程如下:P=(int)(2500/1KB)=2,W=2500 % 1KB=452,查找得到页号2对应的物理块的块号为8,E=8*1024+452=8644。 【例4.2】在分页存储管理系统中,逻辑地址的结构长度为18位,其中11~17位表示页号,0~10位表示页内偏移量。若有一个作业的各页依次放入2、3、7号物理块中,试问: (1)进程逻辑地址空间最大可为多少KB?分为多少页?每页有多大? (2)逻辑地址1500应在几号页内?对应的物理地址是多少? 解:在该页表中,有3个页表项,分别为(0,2)、(1,3)、(2,7)。 (1)由于逻辑地址共有18位,所以最大的逻辑地址空间为218B=256KB。采用0~10位表示页内偏移量,所以页面大小L=211B,每块大小=页面大小=211B,则页面总数=218/211=128页。 (2)逻辑地址A=1500,对应页号=(int)(1500/211)=0,页内偏移量W=1500。查找页表可知对应的物理块号为2,所以,对应的物理地址E=2×211+1500=5596。 4. 具有快表的地址变换机构 从上面介绍的地址变换过程可知,若页表全部放在内存中,则要存取一个数据或一条指令至少要访问两次内存,一次是访问页表,确定所存取的数据或指令的物理地址,第二次才根据该地址存取数据或指令。显然,这种方法比通常执行指令的速度慢了一倍。 为了提高内存访问的速度,可以在地址变换机构中增设一个具有并行查找能力的高速缓冲存储器(又称联想存储器TLB、快表),通常是在快表中存放正在运行作业当前访问的那些页表项,以加速地址变换过程,主存中的页表有时也称为慢表。配有快表的地址变换机构,如图4.25所示。 引入快表以后的地址变换过程如下: 当CPU给出逻辑地址后,地址变换机构自动地将逻辑地址分为页号和页内偏移量两部分。 将页号与联想存储器中的所有页号进行并行比较,若其中有与此匹配的页号,则表示所要访问的页表项在联想存储器中,于是取出该页对应的块号,与页内偏移量拼接形成物理地址。若联想存储器中的所有页号与所查找页号不匹配,则还需要再访问内存中的页表,从页表中取出物理块号,与页内偏移量拼接形成物理地址,还应将这次所查到的页表项存入快表中。 用物理地址访问内存。 在分页系统中增加了快表后,在快表中找出所需页表项的概率称为平均命中率。据统计,快表中如含有8个页表项时,平均命中率为85%,含有16个页表项时,平均命中率为97%,因此在配备快表的分页存储管理系统中,多一级地址变换不会明显减慢程序的执行速度。 图4.25 配有快表的地址变换机构 ━━━━━━━求解方法提示:基本分页管理方式中有效访问时间的计算法━━━━━━ 所谓有效访问时间(Effective Access Time,简称EAT),是指给定逻辑地址找到内存中对应物理地址单元中的数据所花的总时间。 在基本分页系统中,如果没有快表,访问内存一次需要的时间为t,有效访问时间分为:查页表找到对应的页表项所花时间t、通过对应的物理地址访问一次内存所花时间t,所以:EAT=t+t=2t。 若有快表,设快表TLB的查找需要时间为e,访问内存一次需要的时间为t,命中率为a,则有效访问时间分为:查页表项的平均时间为ea+(t+e)(1-a)、通过对应的物理地址访问一次内存所花时间为t,所以:EAT=ea+(t+e)(1-a)+t=2t+e-ta。 例如,若有快表,且命中率为80%,查找TLB需要20ns,访问内存一次需要100ns,则:EAT=2×100+20-100×80%=140ns。这样,比内存访问时间慢了40%(从100ns上升到了140ns)。又例如,若命中率为98%,其他条件不变,则:EAT=2×100+20-100×98%=122ns。这个命中率仅产生了22%(从100ns上升到了122ns)的访问时间延迟。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 【例4.3】假设一个分页存储管理系统中具有快表,多数活动页表项都可以存在其中。如果页表放在内存中,内存访问时间是1?s,若快表的命中率为85%,则有效访问时间是多少?若快表的命中率为50%,则有效访问时间是多少? 解:有效访问时间是指通过逻辑地址访问对应物理地址中的数据所花的时间。有快表时,先查找快表(由于速度很快,所花时间忽略不计),若找到了对应的页表项,取出物理块号并拼成物理地址,再访问内存,只须访问内存1次;若在快表中没有找到,再在页表中查找,需要访问内存2次。 若快表的命中率为85%,则有效访问时间=2×1μs+0-1μs×85%=1.15μs。 若快表的命中率为50%,则有效访问时间=2×1μs+0-1μs×50%=1.5μs。 由于快表的访问时间相对很短,若题目中没有给出快表访问时间,通常可以看成快表访问时间为0。 5. 两级和多级页表 当页表很大时,可以采用多级页表形式,即构建两级或多级页表。两级页表是将基本分页存储管理中的逻辑地址结构由(页号P,页内偏移量W)改为如下形式: 外层页号P1 外层页内地址P2(或内层页号) 页内偏移量W 如图4.26所示是两级页表的示意图。 图4.26 两级页表示意图 在进行地址变换时,先用外层页号P1在外部页表上查找,找出的单元内容是对应二级页表的首地址,该首地址加上外层页内地址P2就是对应二级页表项的地址,取出该页表项的内容就是物理块号,该物理块号拼接页内偏移量W就得到了物理地址。 两级页表解决了大页表占用大的连续存储空间的问题。多级页表依次类推,不再介绍。 【例4.4】为满足264地址空间的作业运行,采用多级分页存储管理方式,假设页面大小为4KB,在页表中的每个页表项需要占8个字节,则为了满足系统的分页管理至少应采用多少级页表? 解:页面大小=4KB=2^12字节,每个页表项为8字节=2^3字节,所以一个页面中可以存放2^12/2^3=29个页表项。设有n层分页,则64位逻辑地址形式为: 第1层页号 第2层页号 … 第n层页号 页内偏移量 其中,页面大小为212字节,所以页内偏移量占12位。剩下64-12=52位,由于每层指向一个物理块,其中可放下29个表项,所以?52/9?=6(向上取整数)。 4KB的块可以存2^12/2^3=2^9即512个页表项, 6. 基本分页存储管理的内存保护 分页环境下的内存保护由关联到每个物理块的保护位完成。这些位通常保存在页表中。一个位可以定义一个页是读写还是只读属性。每次引用内存都要通过页表来找到正确的物理块号,同时也要计算物理地址。可以检查保护位来确定有没有对一个只读页进行写操作,对只读页的写操作将产生操作系统的硬件自陷或内存保护错误。 通常页表的每项还附属一个位:有效/无效(valid/invalid)位。当这个位被设为valid时,它指明相关联的页处于该进程的地址空间中;如果这个位是invalid,它指明这个页不在进程的逻辑地址空间中。利用有效/无效位可以使对非法地址的访问产生自陷。 进程很少会使用它所有的地址空间,许多进程仅仅使用自己的很小一部分地址空间。在这种情况下,在页表中为地址空间中的每一页都创建一个表项是很浪费的。这个表的大部分都不会被用到,但却占用了宝贵的内存空间。有些系统提供了硬件,以页表长度寄存器的形式指明页表的大小。将这个值与每个逻辑地址进行检查以验证这个地址是否在进程的有限地址空间内。如果这个测试失败,就将向操作系统产生一个错误中断。 7. 基本分页存储管理方式的优缺点 优点如下: 存在页内碎片,但碎片相对较小,内存利用率较高。 实现了离散分配,消除了程序浮动。 便于存储访问控制,有利于代码共享。 无外部碎片。 缺点如下: 需要专门的硬件支持,尤其是快表。 内存访问的效率下降。 不支持动态链接,不能实现真正的共享。 有内部碎片。 4.3.2 例题解析 1. 单项选择题 【例4-3-1】在分页存储管理中,主存的分配是 。 A. 以块为单位进行 B. 以作业的大小分配 C. 以物理段进行分配 D. 以逻辑记录大小进行分配 解:在分页存储管理中,将内存划分与页大小相等的区域,即物理块,在为作业分配存储空间时,总是以块为单位来分配,可以将作业中任一页分配到内存任意空闲块中。本题答案为A。 【例4-3-2】分页式存储管理的主要特点是 。 A. 要求处理缺页中断 B. 要求扩充主存容量 C. 不要求作业装入到主存的连续区域 D. 不要求作业全部同时装入主存 解:分页式存储管理是一种离散分配方法,作业的每个页面装入到一个主存块中,主存块之间不一定是连续区域。本题答案为C。 【例4-3-3】在分页式存储管理中用作存储保护的是 。 A. 页表长度 B. 页表始址 C. 页长 D. 重定位寄存器 解:A。 【例4-3-4】 存储管理方式提供一维地址结构。 A. 分段 B. 分页 C. 分段和段页式 D. 都不是 解:分页存储管理方式中所有地址都是一致的,而分段存储管理方式中每个段都有自已的地址,段之间是独立的,通过段号和段内地址实现地址变换。所以将分页存储管理方式中的地址结构看成是一维地址结构,分段存储管理方式中的地址结构看成是二维地址结构。本题答案为B。 【例4-3-5】下列 存储管理方式能使存储碎片尽可能少,而且使内存利用率较高。 A. 固定分区 B. 可变分区 C. 分页管理 D. 段页式管理 解:分页管理方式页内碎片相对较小,内存利用率高。本题答案为C。 【例4-3-6】以下解决主存碎片问题较好的存储器管理方式是 。 A. 可变式分区 B. 分页管理 C. 分段管理 D. 单一连续区管理 解:分页管理方式中没有外部碎片,内存利用率高,而分段管理方式中难以找到连续的空闲区放入整段,相对内存利用率不高。本题答案为B。 【例4-3-7】 存储管理支持多道程序设计,算法简单,但存储碎片多。 A. 段式 B. 页式 C. 固定分区 D. 段页式 解:固定分区可用于多道程序系统,相对于其他选项算法简单,没有外部碎片,但不能实现多进程共享一个主存区,主存利用率低,存在较多的内部碎片。本题答案为C。 【例4-3-8】操作系统采用分页存储管理方式,要求 。 A. 每个进程拥有一张页表,且进程的页表驻留在内存中 B. 每个进程拥有一张页表,但只有执行进程的页表驻留在内存中 C. 所有进程共享一张页表,以节约有限的内存空间,但页表必须驻留在内存中 D. 所有进程共享一张页表,只有页表中当前使用的页面必须驻留在内存中,以最大限度地节省有限的内存空间 解:在多个进程并发执行时,所有进程的页表大多数驻留在内存中,在系统中只设置一个页表寄存器PTR,在其中存放页表在内存的起始地址和页表的长度。平时,进程未执行时,页表的起始地址和页表长度存放在本进程的PCB中,当调度到某进程时,才将这两个数据装入页表寄存器中。本题答案为A。 【例4-3-9】在一个分页存储管理系统中,页表内容如表4.2所示。若页的大小为4KB,则地址转换机构将逻辑地址0转换成的物理地址为 。 A. 8192 B. 4096 C. 2048 D. 1024 解:在分页存储管理系统中,物理地址为页面对应的物理块号与页内地址拼接的结果,逻辑地址0的页号为0,页内位移也为0,故物理地址为2?4KB=8192B。本题答案为A。 表4.2 一个页表 页号 块号 0 2 1 1 2 6 3 3 4 7 【例4-3-10】在分页管理系统中,分页是由 完成的。 A. 程序员 B. 硬件 C. 编译软件 D. 都不对 解:在分页管理系统中,分页和地址转换过程都是由硬件完成的。本题答案为B。 【例4-3-11】分页系统中的页面是 。 A. 用户感知的 B. 操作系统感知的 C. 编译程序感知的 D. 链接装配程序感知的 解:在分页管理系统中,分页是由操作系统指挥硬件完成的,页面是由操作系感知的。本题答案为B。 【例4-3-12】位示图法可用于 。 A. 页式虚拟存储管理中页面置换 B. 可变式分区存储管理中空闲区的管理 C. 分页式存储管理中主存空闲块的管理 D. 文件目录的查找 解:位示图是一种存储空间管理方法,可用于主存和磁盘空间的管理,要求管理的基本单位大小是固定的,所以可用于分页式存储管理中主存空闲块的管理。本题答案为C。 【例4-3-13】以下有关外层页表的叙述中错误的是 。 A. 反映在磁盘上页面存放的物理位置 B. 外层页表是指向页表的页表 C. 为不连续(离散)分配的页表再建立一个页表 D. 有了外层页表则需要一个外层页表寄存器就能实现地址变换 解:外层页表并不是反应磁盘上页面存放的物理位置,而是在页表较大时将页表进行分页,再建立的页表的页表。本题答案为A。 【例4-3-14】在基本分页存储管理中,设有8页的逻辑空间,每页有1024个字节,它们被映射到32块的物理存储区中,则逻辑地址的有效位是 ① 位,物理地址至少是 ② 位。 A. 10 B. 13 C. 14 D. 15 解:对于逻辑地址结构,8页=23页,每页1024个字节=210个字节,所以逻辑地址有效位数=3+10=13位。对于物理地址结构,每块大小=每页大小=210,共有32块=25个块,所以物理地址有效位数至少=5+10=15位。本题答案为:①B ②D。 2. 填空题 【例4-3-15】在分页存储管理中,要求程序中的逻辑地址可以分页,页的大小与 大小一致。 解:本题答案为:物理块。 【例4-3-16】作业的页表中包含逻辑地址中的 ① 与主存中 ② 的对应关系。 解:本题答案为:①页号 ②块号。 【例4-3-17】分页系统中信息的逻辑地址到物理地址的变换由 决定。 解:本题答案为:页表。 【例4-3-18】在基本分页存储管理中,地址变换公式为:物理地址= ① ×块长+ ② 。 解:本题答案为:①块号 ②页内地址。 【例4-3-19】在基本分页存储管理中主存分配情况可用一个 表示,其中某位为0表示对应块为空闲。 解:本题答案为:位示图。 【例4-3-20】在基本分页存储管理中,按给定的逻辑地址读写时,要访问两次主存,第1次是 ① ,第2次是 ② 。 解:本题答案为:①查页表按页号读出对应的块号 ②按计算出来的物理地址进行读写。 【例4-3-21】分页存储管理做重定位时,实际上是把 ① 作为物理地址的高位地址,而 ② 作为它的低地址部分。 解:本题答案为:①块号 ②页内地址。 【例4-3-22】在某基本分页存储管理中,逻辑地址为24位,其中8位表示页号,则允许的最大页面大小是 字节。 解:逻辑地址由页号和页内地址两部分组成,页内地址的位数=24-8=16,页面大小为216字节。本题答案为:216。 【例4-3-23】在基本分页存储管理系统中,把一段时间内总是经常访问的某页表项存放在 中,可实现快速查找并提高指令执行速度。 解:本题答案为:快表。 【例4-3-24】某分页存储管理中,页表如表4.3所示,页长为4KB,则地址转换机构将逻辑地址12293转换成物理地址 。 表4.3 一个页表 页号 块号 0 2 1 5 2 6 3 8 4 3 5 11 解:12293=3×4KB+5,对应3号页的物理块块号为8,所以物理地址=8×4KB+5=32773。本题答案为:32773。 【例4-3-25】某分页存储管理中,页面大小为4KB,某进程的页号0~8对应的物理块号分别为8、9、10、15、18、20、21、22、23。则该进程的逻辑地址05AF8H对应的物理地址是 。 解:页面大小4KB=212B,05AF8H对应的二进制为0000 0101 1010 1111 1000(后12位为页内地址),对应5号页的物理块块号为20(对应的二进制数10100),所以物理地址=10100||1010 1111 1000=10100||1010 1111 1000=14AF8H(||表示地址拼接)。本题答案为:14AF8H。 3. 判断题 【例4-3-26】判断以下叙述的正确性。 (1)在分页存储管理中,用户应将自己的程序划分成若干相等的页。 (2)在分页存储管理中,页的大小是可以不相等的。 (3)在分页存储管理中,作业装入主存后,其地址是连续的。 (4)在分页存储管理中,作业的页面大小和内存物理块大小可以不相同。 (5)在基本分页存储管理中,一个作业必须全部装入内存才能运行。 (6)在基本分页存储管理中,一个作业的逻辑地址为12位,则逻辑地址空间的容量为212B。 (7)在基本分页存储管理中,一个作业的逻辑地址由页号和页内地址两部分组成。 (8)快表位于内存的一个特殊区域中。 解:(1)错误。分页存储管理中,分页过程是由操作系统完成的,用户不能干预。 (2)错误。在分页存储管理中,所有页的大小是相等的。 (3)错误。在分页存储管理中,作业装入主存后,分配在不同的页面中,页之间不一定连续,所以作业的地址不一定是连续的。 (4)错误。在在分页存储管理中,为了便于实现,通常作业的页面大小和内存物理块大小相等。 (5)正确。 (6)正确。 (7)正确。 (8)错误。快表是一种特殊的相联存储器,不属于内存,其存取速度比内存快。 4. 问答题 【例4-3-27】某分页系统的逻辑地址为16位,其中高6位为页号,低10位为页内偏移量,则在这样的地址结构中,请回答: (1)一页有多少个字节? (2)逻辑地址可有多少页? (3)一个作业最大的地址空间是多少字节? 解:(1)由于逻辑地址中低10位为页内偏移量,所以每页的大小=210字节。 (2)由于逻辑地址中高6位为页号,所以共有26个页面。 (3)由于逻辑地址共有16位,所以一个作业最大的地址空间是216字节。 【例4-3-28】在某个分页管理系统中,某一个作业有4个页面,被分别装入到主存的第3、4、6、8块中,假定页面和块大小均为1024字节,当作业在CPU上运行时,执行到其地址空间第500号处遇到一条传送命令: MOV 2100,3100 请计算出MOV指令中两个操作数的物理地址。 解:在页表中,逻辑页(0,1,2,3)对应物理块(3,4,6,8),页面大小L为1024字节。 逻辑地址A1=2100,页号P1=(int)(2100/1024)=2,页内偏移量W1=2100-2×1024=52,对应的物理块号为6,则A1对应的物理地址E1=6×1024+52=6196。 逻辑地址A2=3100,页号P2=(int)(3100/1024)=3,页内偏移量W2=3100-3×1024=28,对应的物理块号为8,则A2对应的物理地址E2=8×1024+28=8220。 【例4-3-29】对一个将页表存放在内存中的分页系统,请回答: (1)如果访问内存需要0.2?s,一个数据的有效访问时间是多少? (2)如果加一个快表,且假定在快表中找到页表项的命中率为90%,则访问一个数据的有效访问时间又是多少(假定查快表需要花费的时间为0)? 解:(1)在分页系统中,访问一个数据需要2次内存访问,所以有效访问时间为:2×0.2=0.4us。 (2)在增加快表后,访问一个数据时先在快表中查找,若未找到再在页表中查找。快表命中只需0.2us,快表未命中需0.4us,则有效访问时间为90%×0.2us +10%×0.4us=0.22us。 【例4-3-30】已知某分页系统,主存容量为64KB,页面大小为1KB,对于一个4页的作业,其0、1、2、3页分别被分配到主存的2、4、6、7块中。 (1)将十进制的逻辑地址1023、2500、3500、4500转换成物理地址。 (2)以十进制的逻辑地址1023为例,画出地址变换过程图。 解:(1)对上述逻辑地址,可先计算出它们的页号和页内偏移量(逻辑地址除以页面大小,得到的商为页号,余数为页内偏移量),然后通过页表转换成对应的物理地址。 对于逻辑地址1023:计算(int)1023/1KB,得到页号P1=0,页内偏移量W1=1023,查页表找到对应的物理块号为2,故物理地址E1=2×1KB+1023=3071。 对于逻辑地址2500:计算(int)2500/1KB,得到页号P2=2,页内偏移量W2=452,查页表找到对应的物理块号为6,故物理地址E2=6×1KB+452=6596。 对于逻辑地址3500:计算(int)3500/1KB,得到页号P3=3,页内偏移量W3=428,查页表找到对应的物理块号为7,故物理地址E3=7×1KB+428=7596。 对于逻辑地址4500:计算(int)4500/1KB,得到页号P4=4,页内偏移量W4=404,因页号不小于页表长度,故产生越界中断。 (2)逻辑地址1023的地址变换过程如图4.27所示。 图4.27 逻辑地址1023的地址变换过程 【例4-3-31】某系统采用分页存储管理方式,设计如下:页面大小为4KB,允许用户虚地址空间最大为16页,允许系统物理内存最多为512个内存块。试问该系统虚地址寄存器和物理地址寄存器的长度各是多少位? 解:页面大小L=4KB=212字节,即页内偏移量占12位。由于物理块大小等于页面大小,所以物理块大小为212字节,物理块位数占12位。 允许用户虚地址空间最大为16页=24页,即页号占4位。 允许系统物理内存最多为512个内存块=29个内存块,即内存块位数占9位。 虚地址寄存器位数=页号位数+页内偏移量位数=4+12=16位。 物理地址寄存器位数=物理块位数+内存块位数=12+9=21位。 【例4-3-32】在一个分页存储管理系统中,页的大小为2KB。设主存容量为512KB,描述主存分配的位示图如图4.28所示,0表示未分配,1表示已分配,此时系统要将一个9KB的作业装入内存,回答以下问题: (1)为作业分配内存后,请给出该作业的页表(分配内存时首先分配内存的低地址端)。 (2)分页存储管理有无碎片存在?若有,会存在什么碎片?为该作业分配内存后,会产生零头吗?如果产生,碎片大小为多少? (3)若某系统采用分页存储管理,内存容量为64MB,也采用位示图管理内存,页面大小为4KB,该位示图占用多大内存? 解:(1)因作业大小为9KB,所以需要5(9KB/2KB上取整=5)个物理块,查位示图,从上向下、从左向右找值为0的块的块号,依次分配给0~4页,对应的页表如表4.4所示。 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 物理块 装入时刻 1 1 0 1 1 1 0 0 1 1 1 0 0 1 1 0 21 250 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 9 140 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 300 1 1 1 1 1 0 0 0 0 0 1 0 1 0 1 0 5 160 ... 32 270 图4.28 内存位示图 表4.4 一个页表 页号 块号 0 6 1 18 2 22 3 23 4 27 (2)分页存储管理有碎片存在,分页存储管理存在内部碎片,为该作业分配内存会产生大小为1KB的内部碎片。 (3)64MB的内存中有64MB/4KB=16KB个物理块,每块使用1位二进制,所以位示图大小为16K位,即16K位/8=2KB。 【例4-3-33】为何引入多级页表?多级页表是否影响速度? 解:早期的内存空间和进程空间都比较小,一个进程的页表长度也较小,可以在内存分配一个连续的存储区域保存进程的页表。但随着内存空间和进程空间的快速增长,页表越来越大,单级页表的存放遇到困难。例如,对于长度为232B的逻辑地址空间,页面长度定义为212(4KB),则一个进程最多可以拥有220个页面,也就是说系统需要提供长度为220项的连续页表存储区,这是很困难的。为此常将页表分为多级进行存放,例如对于上述例子,将220分为210×210两级,一级称为外页表,另一级称为内页表,此时外页表和内页表的长度都在210以内。可以很自然地把二级页表扩展为多级页表.显然,多级页表会降低地址映射的速度,但通过快表仍可以将效率保持在合理的范围内。 例如对于4级页表,假定快表的命中率为98%,快表与内存的访问时间分别为20ns和100ns,那么,当快表命中时,需访问一次快表,得到主存地址后再访问一次主存得到该地址的数据,有效访问时间为20ns+100ns;当快表未命中时,需访问一次快表,未命中,然后访问4级页表(4次访问主存)得到主存地址,最后访问一次主存得到该地址的数据,有效访问时间为20ns+500ns。所以在这样的页表组织中平均有效访问时间为:EAT=98%×(20+100)+2%×(20+500)=128ns,额外的开销是128-100=28ns。 |