【发布时间】:2014-03-04 09:45:24
【问题描述】:
内存映射文件(根据规范)很大程度上依赖于操作系统的实际实现,其中一些未知方面已经在 javadoc 中进行了解释。不过,我还有一些其他问题,不知道该去哪里寻求答案。
假设application A 将文件从position=0 映射到内存到size=10。
我会假设操作系统需要一块连续的内存来映射它?还是这取决于实现?
现在假设我们有一个从position=0 映射到size=11 的application B。
前 10 个字节是共享的还是完全不同的映射?这与连续记忆问题有关。
如果我们要使用映射文件进行 IPC,我们需要知道数据是如何反映在其他应用程序中的,那么如果B 写入内存,A 会看到这个吗?
但是,当我阅读规范时,这取决于操作系统。这使得用于通用 IPC 很危险,因为它破坏了可移植性,对吧?
另外假设操作系统确实支持它,所以B 写入内存,A 看到变化,如果我们这样做会发生什么:
B.write("something");
A.write("stuff");
A.read();
A 究竟会读到什么?
或者换一种说法:
如何管理文件指针?
它如何与并发一起工作,是否有跨应用程序锁定?
【问题讨论】: