我对 Linux 中内核数据的物理存储有一些疑问,我知道每个进程的虚拟内存的上 1 GB 指向相同的物理位置,但是
- 这部分数据是否必须像虚拟内存一样在物理介质中连续?
- 内核数据是否仅占用 1 GB 的物理内存?
- 内核数据的某些页面是否可以交换到磁盘(例如,页表、页全局目录始终位于物理内存中,据我所知不能交换到磁盘)
- 将 32 位虚拟地址分为两个级别(页面全局目录的级别 - 10 位,页表的第二个级别 - 10 位)和偏移量 12 位有什么意义,如果它不可分页,那么这两个级别的优点是什么?
答案1
- 不,不必是连续的。任何虚拟页面都可以映射到任何物理页面。
- 在大多数情况下,内核内存被限制为 1 GB,但是页面缓存可以增长到比这更大,因为一次只有一小部分必须映射到内核地址空间中。
- 内核内存是不可分页的。
请注意,这仅适用于 32 位内核。