在Windows下,内核可以将物理内存页面交换到页面文件中的页面。
为简单起见,我们假设只有一个页面文件。
据我所知,页面文件由与物理内存页面大小相同的页面组成。即4K。
我只是想知道:
内核如何知道页面文件中的哪个页面免费才能存储?
(免费在这里表示页面文件中的页面以前没有存储过另一个物理内存页面。)
答案 0 :(得分:1)
存在严重过度简化的风险。 。 。实现虚拟内存的常用方法是磁盘是主存储。除非存在到文件的映射,否则不存在虚拟页面。该映射在整个过程中保持不变。
磁盘上的虚拟内存在可用时映射到物理内存。
内核维护一些数据结构(例如位图)以指示页面文件和其他结构的空闲区域,以维护逻辑地址到文件的映射。
答案 1 :(得分:1)
我相信您在内存管理中询问页面替换算法。
当操作系统需要在内存中保存新页面并在页面文件(也称为页面表)上跟踪其信息时,不能保证会有一个免费的位置 - 意味着其他页面'信息可能已经占用了所有这些信息。在这种情况下,操作系统必须逐出现有页面。操作系统不需要空闲空间,因为如果没有,它就会成功。
如果您对了解更多内容感兴趣(这是一个非常大的主题),您可能会发现来自纽约大学“操作系统”课程的lecture notes很有帮助。 This is the demand paging unit,在下面你可以阅读一些页面替换算法(“WS Clock”和“Aging”可能是最重要的)。
希望这有用!