最近在学操作系统,关于内存管理页表映射存在疑惑。
虚拟地址通过多级页表映射成物理地址,页表是一个树形结构,比如2级页表,每个页表2^10个页表项,那么是不是一个顶级页表对应2^20个物理页?如果给每个进程都分配一个不同的顶级页表,那么每个进程相当于都对应2^20*4KB=4GB的物理内存?即使它并没有完全使用这些物理内存,别的进程也无法使用,因为它们的顶级页表不一样,所映射的物理地址也不会相同?我觉得我还是理解不了,崩溃了
操作系统页表映射困惑
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
- Kwan的解忧杂货铺@新空间代码工作室 2024-04-18 12:07关注
中午好🌞🌞🌞
本答案参考ChatGPT-3.5对于你关于页表映射的疑惑,我来为你解答。
首先,虚拟地址通过页表映射到物理地址是一个多级的过程。每个级别的页表项大小由硬件决定,一般是4字节或8字节。例如,2级页表中,每个页表项大小为4字节,那么一个顶级页表中会有2^10个页表项。
接下来,我们来解答你的问题:
-
是不是一个顶级页表对应2^20个物理页? 拿2级页表来说,一个顶级页表项指向一个二级页表。因此,一个顶级页表最多可以映射2^10个二级页表,如果每个二级页表也有2^10个页表项,那么一个顶级页表可以对应2^20个物理页。
-
如果给每个进程都分配一个不同的顶级页表,那么每个进程相当于都对应2^20*4KB=4GB的物理内存? 每个进程拥有自己的页表,通过页表映射将虚拟地址转换成物理地址。对于2级页表来说,一个进程的顶级页表可以映射2^20个物理页,每个物理页大小为4KB,因此可以映射4GB的物理内存。但需要注意的是,这只是当前进程能够访问的物理内存的范围,并不代表全部物理内存。
-
即使它并没有完全使用这些物理内存,别的进程也无法使用,因为它们的顶级页表不一样,所映射的物理地址也不会相同? 每个进程有自己独立的页表,因此它们的虚拟地址空间和物理地址空间是相互独立的,完全不同的进程可以映射同样的虚拟地址到不同的物理地址。这也表示如果一个进程并没有使用全部的物理内存空间,其他进程仍然可以使用这部分未使用的物理内存。
综上所述,页表映射是一种将虚拟地址转换成物理地址的机制,每个进程拥有独立的页表,根据页表映射关系来访问物理内存。只有在自己的地址空间范围内才能访问具体的物理内存。其他进程拥有不同的页表,映射的物理地址也不会相同。希望这能够解决你的困惑。
解决 无用评论 打赏 举报 -
悬赏问题
- ¥15 如何让企业微信机器人实现消息汇总整合
- ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
- ¥15 如何用Python爬取各高校教师公开的教育和工作经历
- ¥15 TLE9879QXA40 电机驱动
- ¥20 对于工程问题的非线性数学模型进行线性化
- ¥15 Mirare PLUS 进行密钥认证?(详解)
- ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
- ¥20 想用ollama做一个自己的AI数据库
- ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
- ¥15 请问怎么才能复现这样的图呀