• 【知识梳理】多级页表的原理分析【地址形成过程】【扩充思考】


    在这里插入图片描述

    多级页表的地址形成过程

    首先每个进程中都至少有一个页表(段页式可以有多个页表),都有一个页表基地址寄存器(PTBR),以下针对三级页表进行分析。

    level1:PTBR代表的是一级页表的基地址,一级页目录号代表的是一级页表中的页表项相对一级页表的基地址的偏移量,通过将基地址和偏移量相加得到一级页表项的物理地址。一级页表项中存储着该页表项对应的二级页表的基地址(相当于二级页表的PTBR)。

    level2:一级页表中的页表项储存的是二级页表的基地址,二级页目录号代表的是二级页表中的页表项相对二级页表的基地址的偏移量,通过将基地址和偏移量相加得到二级页表项的物理地址。二级页表项中存储着该页表项对应的三级页表的基地址(相当于三级页表的PTBR)。

    level3:二级页表中的页表项储存的是三级页表的基地址,三级页目录号代表的是三级页表中的页表项相对三级页表的基地址的偏移量,通过将基地址和偏移量相加得到三级页表项的物理地址。三级页表项中存储着物理块号,和块内偏移量拼接成物理地址。

    扩充思考

    在这里插入图片描述
    针对这样一个二级页表,假设每个页表项大小为4B,按字节编址。
    问:该页表共占多少页?虚拟地址空间为多大?
    答:
    (1)因为一页共有4KB(由页内偏移量为12位可知),一页可装载 2 10 2^{10} 210(1024)个页表项,页目录表(一级页表)有一个,其中的1024个页表项指向了1024个二级页表,二级页表中的页表项指向的是物理块。因此,一共有1+1024=1025个页表。

    (2)因为页目录表指向了 2 10 2^{10} 210个二级页表,而每个二级页表都指向了 2 10 2^{10} 210个物理块,因此,通过这个二级页表可以映射到 2 10 ∗ 2 10 = 2 20 2^{10}*2^{10}=2^{20} 210210=220个物理块,因此这个虚拟地址空间大小为 2 20 2^{20} 220页。

    参考资料

    图1:https://www.geeksforgeeks.org/multilevel-paging-in-operating-system/
    图2:王道操作系统P213

  • 相关阅读:
    .NET Aspire 正式发布:简化 .NET 云原生开发
    罗克韦尔AB PLC 通过KEPServer实现与西门子1200PLC的以太网通信
    django集成es
    docker-compose 搭建 kafka 集群
    技术分享 | app自动化测试(Android)– 属性获取与断言
    【送书福利-第二十六期】机械工业出版社《算法秘籍》~
    设计模式-单例模式
    数组更新检测
    js录制屏幕并输出视频
    Android解锁
  • 原文地址:https://blog.csdn.net/weixin_45415929/article/details/133466909