目录
基本分页存储管理
优点:
- 内存空间利用率高:分页存储管理不会产生外部碎片,尽管会有少量的页内碎片。
缺点:
- 共享和保护困难:分页不利于按照逻辑模块实现信息的共享和保护。
基本分段存储管理
优点:
- 易于实现共享和保护:分段存储管理可以轻松实现信息的共享和保护,只需让各进程的段表项指向同一个段即可。
缺点:
- 可能产生外部碎片:如果段长过大,为其分配连续的内存空间会很不方便。
段页式存储管理的工作原理
在段页式存储管理中,进程的逻辑地址空间被划分为多个段,每个段代表了一个逻辑模块,如代码段、数据段、堆栈段等。每个段又进一步被划分为固定大小的页,这些页是内存分配的基本单位。
逻辑地址结构
逻辑地址在段页式系统中具有三维结构,由以下三部分组成:
- 段号:标识逻辑地址所在的段。
- 页号:在段内,标识具体的页。
- 页内地址:在页内,标识具体的数据位置。
这种地址结构使得段页式系统能够同时利用段的逻辑连续性和页的物理内存分配优势。
段表和页表
段页式存储管理依赖于两个关键的数据结构:段表和页表。
- 段表:每个段在段表中都有一个对应的段表项,记录了段的起始页号、页表在内存中的位置以及段的访问权限等信息。
- 页表:每个页在页表中都有一个对应的页表项,记录了页号与物理内存块号的映射关系。
地址变换过程
当进程访问一个逻辑地址时,地址变换过程如下:
- 从逻辑地址中提取段号、页号和页内偏移量。
- 使用段号查询段表,找到对应的段表项。
- 检查页号是否在段内有效,如果页号越界,则产生越界中断。
- 如果页号有效,使用页号查询页表,找到对应的页表项。
- 根据页表项中的内存块号和页内偏移量计算出最终的物理地址。
- 访问物理地址对应的内存单元。
优点
段页式存储管理结合了分段和分页的优点,具有以下优势:
- 信息的共享和保护:通过段表,可以方便地实现不同进程间的段共享,并为每个段设置访问权限,增强内存保护。
- 内存空间利用率:由于页的大小固定,段页式管理能够有效减少外部碎片,提高内存利用率。
补充
- 地址变换复杂:段页式管理需要经过段表和页表两次查表操作,再加上最终的内存访问,共需三次访存才能完成地址变换,这无疑增加了CPU的负担。
- 快表机构:为了提高地址变换的效率,现代系统引入了快表(TLB,Translation Lookaside Buffer)机构。快表是一个小型的缓存,用于存储最近使用的地址映射信息。当访问快表命中时,可以大幅减少地址变换所需的时间。然而,快表的存在增加了硬件的复杂性,并且快表缺失时,系统性能会受到一定影响。