linux中CPU给出虚拟地址转换到物理地址的过程以及访存次数
注:1,2,3...表示逻辑地址到物理地址转换的步骤;黄色的标注的是发生访存的位置(图中标出的是在没有快表的情况下访存的情况);
快表存在时逻辑地址到物理地址的转换过程
1. 在CPU给出有效地址后,由地址变换机构自动地将页号P送入高速缓冲寄存器(也会使用到段号),并将此页号与高速缓存中的所有页号进行比较,若其中有与此相匹配的的页号,便表示所要访问的页表项在快表中;
2. 直接从快表中读出该页所对应的物理块号,并送到物理地址寄存器中。如果在快表中未找到对应的页表项,则还需在访问内存中的页表,找到后,把从页表项中读出的物理块号送地址寄存器;
3. 将此页表项存入快表的一个寄存器单元中,重新修改快表。但如果联想寄存器已满,则操作系统必须找到一个老的且被认为不在需要的页表项换出;
具体的流程如下图:
段页式管理的优缺点
优点:
1. 因为以页为单位分配内存,所以无紧凑问题也无外部碎片
2. 便于处理变化的数据结构,段可以动态增长
3. 便于共享,只需要将程序的段表相应表项指向该共享段在内存中的页表起始地址即可;
4. 因具有段的特点,所以便于提供动态链接,也便于控制存取访问
缺点:
1. 需要更复杂的硬件支持
2. 增加了系统开销和软件编程的复杂度
3. 空间浪费比单纯的分页管理多,因为各段分配的最后以页很有可能部分空间被浪费;另外段表和页表所占的空间都比单纯分页和分段存储管理多