23,217
社区成员




共享内存通信,一般可以做两块共享内存,一个读一个写就好了,这样就可以不考虑多个两个进程读写的同步问题。。。
两个进程各自打开和映射相同的文件,共享文件方式,可以实现两个进程的通信,但是需要注意同步和缓存。
进程的内存共享,有专门的机制。 不能采用直接传虚地址方式,因为每个进程的页表都是独有的,只有专门的内存共享IPC,才能保证给两个进程映射的物理内存相同。
把硬盘文件映射到不同进程虚拟内存空间中,进程间可以直接读写此虚拟空间地址进行通信
[quote=引用 7 楼 ddj11223 的回复:] [quote=引用 3 楼 lsshao 的回复:] 把物理内存中的数据映射到虚拟内存中 直接传是不行的
[quote=引用 3 楼 lsshao 的回复:] 把物理内存中的数据映射到虚拟内存中 直接传是不行的
把物理内存中的数据映射到虚拟内存中 直接传是不行的
不是直接传递虚存的地址,而是两个进程一个读一个写这个虚拟地址进行通信 也就是说,如果有两个进程,需要用mmap来实现共享内存通信,是不是每个进程都要调用一次mmap,那如果让第一个进程调用一次mmap,得到的虚存addr和length,直接传给第二个进程,实现共享内存通信,这样可以吗? 把硬盘文件映射到不同进程虚拟内存空间中,进程间可以直接读写此虚拟空间地址进行通信
也就是说,如果有两个进程,需要用mmap来实现共享内存通信,是不是每个进程都要调用一次mmap,那如果让第一个进程调用一次mmap,得到的虚存addr和length,直接传给第二个进程,实现共享内存通信,这样可以吗? 把硬盘文件映射到不同进程虚拟内存空间中,进程间可以直接读写此虚拟空间地址进行通信