分页产生内部碎片,分段产生外部碎片。
分页(paging)
分页(paging)内存管理方案允许进程的物理地址空间可以使非连续的。分页避免了将不同大小的内存块匹配到交换空间上,前面叙述的内存管理方案都有这个问题,当位于内存中的代码和数据需要换出时,必须现在备份存储上找到空间,这是问题就产生了。备份存储也有前面所述的与内存相关的碎片问题,只不过访问更慢。
传统上,分页支持一直是由硬件来处理的。最近的设计是通过将硬件和操作系统相配合来实现分页。
基本方法
实现分页的基本方法设计将物理内存分为固定大小的块,称为帧(frame);而将逻辑内存也分为同样大小的块,称为页(page)。当需要执行进程时,其页从备份存储中调入到可用的内存帧中。备份存储也分为固定大小的块,其大小与帧相同。
由CPU生成个每个地址分为两个部分:页号(p)和页位移(d)。页号作为页表的索引。页表包含每页所在物理内存的基地址,这些基地址与页偏移的组合形成物理地址,就可送交物理单元。
页大小(与帧大小一样)是由硬件来决定的。通常为2的幂。选择页的大小为2的幂可以方便的将逻辑地址转换为页号和页偏移。如果逻辑地址空间为 2m ,且页大小为 2n 单元,那么逻辑地址的高 m−n 位表示页号(页表的索引),而低 n 位表示页偏移。每页大小从512B到16MB不等。
设页大小为
分页是一种动态重定位。每个逻辑地址有分页硬件绑定为一定的物理地址。采用分页类似于使用一组基(重定位)地址寄存器,每个基地址对应这一个内存帧。
采用分页技术不会产生外部碎片:每个帧都可以分配给需要它的进程。不过分页有内部碎片。
每个页表的条目通常为 4 B,不过这是可变的,一个