由于我只有第一版:Understanding the Linux Kernel,所以看了一些Linux 2.2.14的源码,很老了。
从源代码来看,我认为属于进程通过 open() 系统调用打开的文件的内存页面不受进程的 vm_area_struct 列表管理。此外,内核似乎只在必要时交换所选进程的 vm_area_struct 列表中的页面。
我知道交换意味着内核将一些页面放入交换区域,并且文件页面无法交换。但是,内核仍然可以写回任何脏数据并取消链接文件页面以获取一些空闲页面。所以我的问题是,为什么内核也不尝试释放一些属于打开文件的页面?
或者我的理解,例如文件页面不是由进程的 vm_area_struct 列表管理的,是完全错误的吗?