gpt4 book ai didi

linux - 操作系统如何知道映射内存中的页面是脏的?

转载 作者:可可西里 更新时间:2023-11-01 10:55:41 24 4
gpt4 key购买 nike

我的意思是直接在内存中更新数据,而不使用 write()。

在 linux 中,我认为在 msync 调用中指定的所有数据都已刷新。

但在 Windows 中,FlushViewOfFile 的文档说“写入脏页”,因此操作系统以某种方式知道哪些页面已更新。

这是如何运作的?我们必须使用 WriteFile 来更新映射内存吗?如果我们在 linux 中使用 write() 是否 msync 只同步脏页?

最佳答案

在大多数(也许是所有)运行 Linux 或 Windows 的现代计算机上,CPU 代表操作系统跟踪脏页。此信息存储在 page table 中.

(例如,参见 Intel® 64 and IA-32 ArchitecturesSoftware Developer’s Manual, Volume 3A 的第 4.8 节和 AMD64 Architecture Programmer's Manual, Volume 2 的第 5.4.2 节。)

如果该功能在特定 CPU 上不可用,则操作系统可以改为使用页面错误来检测对页面的首次写入,如 datenwolf 的回答中所述。

关于linux - 操作系统如何知道映射内存中的页面是脏的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41433299/

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