【问题标题】:how paging is done on process control blocks (PCB)如何在进程控制块 (PCB) 上进行分页
【发布时间】:2013-10-09 03:08:13
【问题描述】:
我正在学习操作系统概念,我对概念的组合有一些疑问,尤其是在分页方面。
这些是我现在的信念。所以如果我错了,请纠正我。
- 我认为不仅是用户区,系统区也是分页的,因为我认为没有其他方法可以处理 GB 的操作系统
- PCB(Process Control Block) 包含页表以及其他信息,并且 PCB 在系统空间中。
我的疑问是:
- 是否所有内层页表的页面(例如:二级P.T.,三级P.T.,比如3级分页)也加载到它们对应的PCB中?
- 如果包含主页表的 PCB 也被分页,那么该预主页表将存储在哪里?系统区是否也包含其他系统文件的页面?
【问题讨论】:
标签:
memory-management
operating-system
paging
【解决方案1】:
首先,我假设系统区域是指内核空间。是的,内核空间也被映射,
与用户空间一起。通常通过以下方式完成:
- 身份映射-即虚拟地址和物理地址相同。一般最多4MB
- Indentity Mapping 之后,内核被映射到其他一些虚拟地址,例如 3GB-Linux,windows 使用这种方法。
其次,PCB不包含页表,但包含页目录的物理地址。
这个物理地址存放在cr3寄存器中。处理器计算页表和页的地址,并以此地址为基地址。每个进程都有自己的页目录,因此在任务切换时 cr3 寄存器被更新为包含列表中下一个进程的页目录的物理地址。因此内部页不会加载到 PCB 中。
【讨论】:
-
非常感谢您的回答。像link 这样的参考资料让我知道PCB 包含这样的页表。您的回答没有歧义。