共享内存是如何在windows中实现的
How is shared memory implemented in windows?
内存分配在哪里?新内存在哪个地址空间?
Windows中有两种常见的共享内存类型。
一种是多个进程将同一个文件映射到内存中。这显然发生在可执行文件和库中,但也可能发生在数据文件中。基本上,进程共享内存的事实对它的工作方式几乎没有影响。它是通过与映射单个进程时相同的需求分页来实现的。
另一种类型是共享的匿名映射。可以通过调用CreateFileMapping函数来创建这些文件,而无需指定要映射的有效文件。这与分配内存的情况相同,只是多个进程可以访问它。就像正常的内存使用一样,如果没有访问它,或者出于其他目的需要RAM,它可以被分页到磁盘。
对于共享的匿名映射,内核为进程提供了一个内存句柄,以便进程在想将其映射到自己的内存空间时可以引用它。
相关文章:
- 用于 Windows 写入临时文件的 mkstemp() 实现
- 在Windows Visual Studio中实现<netinet/in.h>
- 如何实现从 Windows 脚本主机到脚本的事件调度
- 可能的 std::async 实现错误 Windows
- 如何检查 CNG Windows API 是否返回符合 FIPS 的算法实现
- opengl32.lib如何在Windows(仅1.1版本)上工作?它是否真正实现了OpenGL函数
- 在 Windows 中使用 boost::asio 实现最佳缓冲区大小
- windows应用程序中的键盘类实现
- 尝试实现 Windows API 包装器的事件处理程序时遇到问题
- 用Win32/C API更改Windows 7壁纸(未实现操作异常)
- Windows事件在Linux中使用条件变量实现
- 使用本机windows API实现win32线程安全队列
- 为windows实现一个自定义的unistd.h来处理VisualStudio问题
- 如何在 Windows 上仅使用事件和联锁原语实现递归锁
- 如果有的话,可以实现Windows原生外观:GTK+,wxWidgets,Qt,FLTK
- 在 Windows 上的 C++ 中实现强大、简单(且快速)的进程间通信
- 如何在c++中实现一个在Linux和Windows中都能工作的适配器框架
- 共享内存是如何在windows中实现的
- 使用Windows消息循环的回调实现
- 在c#中实现c++中的函数(MAKE_HRESULT - Windows函数)