This memo is based on the course of Dr.Li with Operating System as the reference book.
本章内容:
- 页式内存管理(非连续)
- TLB(类似网络中DNS服务器的作用)
- 页表的结构(层次结构,哈希结构,反向结构)
- 分段
8.4 分页
分页( paging) 内存管理方案允许进程的物理地址空间可以是非连续的。
8.4.1 基本方法
实现分页的基本方法涉及将物理内存分为固定大小的块,称为帧(frame); 而将逻辑地址也分为同样大小的块,称页(page)。
页大小是由硬件来决定的。页的大小通常为2的幂。同时逻辑地址也是2的幂。所以在求页号和偏移的时候可以用左移右移操作,加快速度。
由CPU 生成的每个地址分为两个部分:页号(p) 和页偏移(d) 。页号作为页表的索引。页表包含每页所在物理内存的基地址,这些基地址与页偏移的组合就形成了物理地址,就可送交物理单元。
由于页大小和帧大小相同,下图中的d也相同,这样在转换中只需要求得对应物理内存中的基值起点,再加上偏移d即可,转换更加方便。
采用分页技术不会产生外部碎片(因为进程得到的空间是以页为单位),所以可能会有内部碎片。
在帧表( frametable ) 中,每个条目对应着一个帧,以表示该帧是空闲还是己占用, 如果占用,是被哪个进程的哪个页所占用。
8.4.2 硬件支持
由于页表有可能非常大,所以需要将页表放在内存中,并将页表基寄存器( page-table base register