gpt4 book ai didi

linux - Linux 内核如何交换文件映射页?

转载 作者:IT王子 更新时间:2023-10-29 00:37:53 25 4
gpt4 key购买 nike

我使用文件映射来读取一个 20 GB 的文件。当主内存耗尽时,内核如何将文件映射页面交换到磁盘?

我想一个可能的方法是将页面条目设置为 NULL。那么下次访问该页面时,会再次调用do_no_page()函数将文件映射到内存。这样对吗?

另一个问题是内核使用什么优先级来交换内存页?普通页面还是文件映射页面?

最佳答案

页表中的每个条目都有一个无效位。当一个页面被交换到硬盘驱动器时,它的 invalid 位被设置。每当访问页面时,MMU(处理器内部的内存管理单元)都会引发异常,系统负责将页面重新加载到内存中。然后重新执行错误的指令。

通常被交换的页面是不经常访问的页面。每个页表条目中还有另一位可以知道何时访问了一个页面。如何选择正确的页面与这个单个位交换是一个大问题,Andrew Tanenbaum 在非常好的操作系统中有一整章是关于这个的。

您可以使用mlock() 系统调用将页面锁定到RAM 内存中。如果您使用 mmap() 将您的文件映射到内存中,则可以使用标志 MAP_LOCKED 来完成(请参阅手册)。

关于linux - Linux 内核如何交换文件映射页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2176957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com