4.5 分页存储管理方式

4.5 离散分配存储管理方式

离散分配存储管理方式是在内存管理中一种重要的技术,它允许将一个进程的各部分分散存储在内存的多个不连续的区域中。这种方法的出现,主要是为了充分利用内存空间,避免因内存碎片而导致的空间浪费。离散分配可以分为三种基本形式:分页存储管理、分段存储管理和段页式存储管理。

4.5.1 分页存储管理的基本方法

页面和物理块

  • 页面(Page):分页存储管理将进程的逻辑地址空间划分为多个固定大小的区域,称为“页”或“页面”,典型的页面大小为1KB至8KB。
  • 物理块(Frame):相应地,内存的物理地址空间也被划分为同样大小的“物理块”或“页框”。每一页可以被放置在任何一个物理块中,从而实现离散分配。

地址结构

分页地址结构包含两个主要部分:页号(P)和位移量(W),其中位移量表示页内的地址。例如,32位地址中,低12位可能是位移量,表示每页大小为4KB,而高20位是页号,表示最多可以有1M个页。

页表

为了在内存中定位每个页面的物理位置,系统为每个进程建立一张页表。页表的每一项对应一个逻辑页,并记录该页所在的物理块号。页表使得进程的各页可以离散地存储在内存的任何物理块中,实现了从逻辑地址到物理地址的映射。

分段存储管理方式

分段存储管理将用户程序的地址空间分为多个逻辑上有意义的段,每段可以是程序的一个函数、数组或其他数据结构。每个段在内存中可以不连续存放,从而也实现了离散分配。

段页式存储管理方式

段页式存储管理是分页和分段存储管理方式的结合,既有分段的逻辑分区优点,又有分页的物理地址管理优点。在这种方式下,首先将进程分成若干逻辑段,然后再将每个段分成多个页面,它既支持按逻辑单元的保护和共享,又能有效管理物理内存。

离散分配存储管理方式大大增强了内存管理的灵活性和内存的利用率,为现代操作系统中实现高效、动态的内存管理提供了强有力的支持。

 

4.5.2 地址变换机构

地址变换机构在离散分配存储管理方式中扮演了至关重要的角色。其基本任务是实现从逻辑地址到物理地址的转换,以确保程序能够正确地访问内存中的数据和指令。这一过程主要依赖于页表来完成,页表的功能是通过一组专门的寄存器实现的,这些寄存器因其高速访问能力而有利于地址变换的速度提升。

1. 基本的地址变换机构

在程序执行期间,每条指令的地址都需进行变换,因此地址变换机制通常由硬件实现。系统为每个进程建立一个页表,页表寄存器(PTR)中存放页表在内存中的始址和页表的长度。当进程被调度执行时,这两个数据从进程的PCB(进程控制块)装入页表寄存器中。在访问数据时,地址变换机构将逻辑地址分为页号和页内地址两部分,通过页号在页表中查找相应的物理块号,完成从逻辑地址到物理地址的转换。

2. 具有快表的地址变换机构

为了提高地址变换的速度,地址变换机构中可以增设一个特殊的高速缓冲寄存器,也称为联想寄存器或快表(TLB)。快表用于存放当前频繁访问的页表项,使得CPU在每次访问数据时,能够减少对内存的直接访问次数。当CPU提供有效地址后,快表中的页号会与高速缓存中的所有页号进行比较,若找到匹配的页号,则直接从快表中读出相应的物理块号,从而加快了地址变换的过程。若在快表中未找到,则需要访问内存中的完整页表。

快表的更新

当从页表中读取新的页表项时,需要将其存入快表中。如果快表已满,操作系统会替换掉一个旧的、认为不再需要的页表项,以保持快表的更新和有效性。快表的存在显著提高了地址变换的速度,尽管增设快表会带来额外的成本,但由于从快表中找到所需页表项的概率很高,因此整体上大大减少了地址变换所需的时间开销。

通过引入地址变换机构,尤其是配备了快表的高效地址变换机制,离散分配存储管理方式能够有效地提升内存利用率,同时保证了系统运行效率。这种机制使得现代计算机系统能够支持复杂的多任务和大规模应用程序的运行,满足了高速运算和大数据处理的需求。

 

4.5.3 访问内存的有效时间

在分页存储管理方式中,处理器发出访问请求到实际获取内存中数据的总时间是衡量系统性能的一个重要指标,称为内存的有效访问时间(Effective Access Time, EAT)。这个指标反映了引入分页机制和快表(TLB)后,系统访问内存数据的速率和效率。

基本分页存储管理方式

在没有快表的基本分页机制中,CPU需要两次内存访问来获取数据:第一次是访问页表以获取物理块号,第二次是根据物理块号访问实际的数据。因此,有效访问时间为两次内存访问时间之和,即:

其中,t 代表访问内存一次所需要的时间。

引入快表的分页存储管理方式

引入快表(TLB)后,部分页表项被缓存在这个高速缓存中,从而减少了访问页表的内存访问次数。但是,由于快表的容量有限,不是所有的页表项都能缓存在快表中,因此存在一个快表命中率 a 的概念,表示在快表中直接找到页表项的概率。

当快表命中时,只需要一次内存访问和一次快表访问;当快表未命中时,则需要一次快表访问和两次内存访问。因此,有效访问时间的计算公式为:

其中,λ 是访问快表所需的时间,a 是快表命中率,t 是访问内存所需的时间。

例如,若快表访问时间 λ=20ns,内存访问时间 t=100ns,不同命中率下的有效访问时间如下:

  • 命中率 a=0% 时,EAT=220ns
  • 命中率 a=50% 时,EAT=170ns
  • 命中率 a=80% 时,EAT=140ns
  • 命中率 a=90% 时,EAT=130ns
  • 命中率 a=98% 时,EAT=124ns

这一分析表明,快表的引入显著降低了内存的有效访问时间,从而提高了系统的性能。通过优化快表的设计和提高命中率,可以进一步减少处理器访问内存数据所需要的时间,提升整个系统的运行效率。

4.5.4 两级和多级页表

现代计算机系统支持大规模逻辑地址空间,这导致页表占用的内存空间巨大,而连续存储这些页表变得不现实。对此,采用两种方法解决:离散分配页表空间和仅将当前需要的部分页表项调入内存。

两级页表

两级页表通过对页表本身进行分页来解决大页表问题,使每个页表页面的大小与内存物理块的大小相同,并离散存储各页面。外层页表(Outer Page Table)记录各页表页面的物理块号。

以32位逻辑地址空间、4KB页面大小为例:原本需要1M个页表项的单级页表,通过采用两级页表结构,使每个页表分页包含1024个页表项,最多允许有1024个页表分页。外层页号和外层页内地址各占10位,逻辑地址由外层页号、外层页内地址、页内地址三部分组成。

两级页表的地址变换机构需要增设一个外层页表寄存器,存放外层页表的始址。地址变换通过外层页号找到指定页表分页的始址,再通过外层页内地址找到指定页表项,得到物理块号,实现逻辑地址到物理地址的转换。

多级页表

对于64位计算机系统,两级页表可能仍不足以有效管理巨大的逻辑地址空间。采用多级页表,如三级页表,可进一步细分和管理页表,实现更大范围的逻辑地址空间管理。

在实现上,页表的离散分配并未减少占用的内存空间,但使当前只需调入部分页表项成为可能。例如,在运行进程时,外层页表必须调入内存,而具体的页表可能只需调入一部分。外层页表项中的状态位指示该页表分页是否已调入内存。

对于64位系统,通过限制直接寻址存储空间的长度(如45位),并采用三级页表结构,可以有效管理大规模的物理存储空间,同时保持系统的性能和存储空间的有效利用。

综上,两级及多级页表机制是解决大规模地址空间与有限物理内存之间矛盾的有效方法,既支持了大地址空间的需求,又提高了内存利用率和系统的整体性能。

 

4.5.5 反置页表

反置页表是为了解决传统页表占用大量内存空间的问题而引入的一种页表机制。在传统分页系统中,每个进程有其自己的页表,每个页表项对应逻辑地址空间中的一页,并记录该页在物理内存中的位置。随着进程逻辑地址空间的扩大,所需的页表项数量巨增,占用的内存空间也随之增大。反置页表通过为每个物理块设置一个页表项,按物理块编号排序,每个页表项记录页号和该页所属进程的标识符,从而有效减少页表所需的内存空间。

地址变换过程

地址变换过程中,系统根据进程标识符和页号,在反置页表中检索相应的页表项。如果找到匹配的项,其序号即为该页所在的物理块号,与页内地址一同构成最终的物理地址。如果整个反置页表检索完毕仍未找到匹配项,表示该页未装入内存。对于不具备请求调页功能的系统,这种情况意味着地址错误;对于具备该功能的系统,则触发请求调页中断,系统随后将缺失页调入内存。

内存占用减少

例如,对于64MB内存和4KB页面大小的系统,反置页表仅占用64KB内存,大大减少了页表对内存的需求。反置页表主要记录已调入内存的页面信息,而未调入的页面信息需通过外部页表管理,外部页表记录了各页面在外存的位置。

检索效率

虽然反置页表大幅减少了内存占用,但直接检索大型线性表的效率不高。因此,通常采用哈希(Hash)算法加速检索过程,快速定位页表项。哈希算法可能导致地址冲突,即多个逻辑地址映射到同一哈希表项,需要通过适当机制解决这一问题。

总结

反置页表通过减少页表内存占用、使用哈希算法加速检索,有效提高了内存管理效率。然而,它也引入了地址冲突的问题,需要通过额外的机制来处理。在现代计算机系统中,反置页表是优化内存管理和减少系统开销的重要技术之一。

 

 

  • 26
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值