什么是内核内存和用户内存? (关于术语“内核页面”和“页面缓存”的问题)

什么是内核内存和用户内存? (关于术语“内核页面”和“页面缓存”的问题)

今天,我阅读了一些关于文件系统的文档(http://tekrants.me/2014/07/14/linux-file-system-write/)。本文中多次提到了术语“内核页”。我现在对内核和用户的内存使用情况感到非常困惑。

据我所知,内核和用户以及用户之间的地址空间是不同的。虚拟到物理的映射是相互独立的。映射到内核地址空间的内存是否不能映射到任何用户地址空间?

而且,对于我上面提到的那篇文章,它基本上讲的是页面缓存的使用。那么,当操作系统被要求将一些数据或代码从磁盘加载到页面缓存时,那些保存数据和代码的页面应该来自哪里呢?用户可以访问这些页面吗?

答案1

  1. 内核管理内存,因此内核代码可以访问内核空间和用户空间。当谈论“内核空间”时,通常指的是内核专用的页面。

  2. “用户空间”不是一个单一的实体。每个进程都有自己的地址空间,可能与其他进程部分重叠。

  3. 缓存由内核管理,不能被用户空间代码访问。当然,如果需要,内核可以将页面从内核空间传输到用户空间。

相关内容