屁宝Sault 2024-04-18 12:06 采纳率: 0%
浏览 5

操作系统页表映射困惑

最近在学操作系统,关于内存管理页表映射存在疑惑。
虚拟地址通过多级页表映射成物理地址,页表是一个树形结构,比如2级页表,每个页表2^10个页表项,那么是不是一个顶级页表对应2^20个物理页?如果给每个进程都分配一个不同的顶级页表,那么每个进程相当于都对应2^20*4KB=4GB的物理内存?即使它并没有完全使用这些物理内存,别的进程也无法使用,因为它们的顶级页表不一样,所映射的物理地址也不会相同?我觉得我还是理解不了,崩溃了

  • 写回答

5条回答 默认 最新

  • 关注

    中午好🌞🌞🌞
    本答案参考ChatGPT-3.5

    对于你关于页表映射的疑惑,我来为你解答。

    首先,虚拟地址通过页表映射到物理地址是一个多级的过程。每个级别的页表项大小由硬件决定,一般是4字节或8字节。例如,2级页表中,每个页表项大小为4字节,那么一个顶级页表中会有2^10个页表项。

    接下来,我们来解答你的问题:

    1. 是不是一个顶级页表对应2^20个物理页? 拿2级页表来说,一个顶级页表项指向一个二级页表。因此,一个顶级页表最多可以映射2^10个二级页表,如果每个二级页表也有2^10个页表项,那么一个顶级页表可以对应2^20个物理页。

    2. 如果给每个进程都分配一个不同的顶级页表,那么每个进程相当于都对应2^20*4KB=4GB的物理内存? 每个进程拥有自己的页表,通过页表映射将虚拟地址转换成物理地址。对于2级页表来说,一个进程的顶级页表可以映射2^20个物理页,每个物理页大小为4KB,因此可以映射4GB的物理内存。但需要注意的是,这只是当前进程能够访问的物理内存的范围,并不代表全部物理内存。

    3. 即使它并没有完全使用这些物理内存,别的进程也无法使用,因为它们的顶级页表不一样,所映射的物理地址也不会相同? 每个进程有自己独立的页表,因此它们的虚拟地址空间和物理地址空间是相互独立的,完全不同的进程可以映射同样的虚拟地址到不同的物理地址。这也表示如果一个进程并没有使用全部的物理内存空间,其他进程仍然可以使用这部分未使用的物理内存。

    综上所述,页表映射是一种将虚拟地址转换成物理地址的机制,每个进程拥有独立的页表,根据页表映射关系来访问物理内存。只有在自己的地址空间范围内才能访问具体的物理内存。其他进程拥有不同的页表,映射的物理地址也不会相同。希望这能够解决你的困惑。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月18日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀