我一直在阅读有关 memory mapped files 的内容,它允许跨多个进程共享文件。
每个进程(具体为 32 位)都有 4GB 的私有(private)地址空间,分为 2GB 用户模式地址空间 和 2GB 为内核保留,如 here 所述通过 Eric Lippert 。用户模式地址空间是每个进程私有(private)的,不能被其他进程修改。
那么,这是否意味着 MMF 被映射到内核模式地址空间,因为它在所有进程之间共享?
我搜索了很多关于 MMF 映射的地方,但找不到任何说明这一点的资源。所以,如果我的假设是正确的或者我在这里遗漏了什么,请在这里发布问题? MSDN 的任何资源也很好。
最佳答案
内存映射文件被映射到用户模式地址空间。
这样想。假设您有一个 4K 文件,该文件被内存映射到两个进程中。这仅仅意味着磁盘上的一个存储页面与两个进程中每个进程中的特定虚拟地址空间页面相关联。
此页面上的图 3 可能会有所帮助:
关于c# - 内存映射文件被加载到进程的用户模式地址空间或内核地址空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23594414/