在同一个内存空间中打开两个程序

时间:2015-03-08 20:49:12

标签: c memory memory-management

是否可以在一个内存区域内启动两个完全独立的程序?

例如,我有skype.exeopera.exe,我希望以允许它们共享公共内存的方式启动它们。听起来像穿线给我。

2 个答案:

答案 0 :(得分:0)

如果它们是两个独立的程序,那么你必须确保数据在它们之间以独立的方式传递。假设两个程序正在运行,第一个程序计算第二个程序需要的一些数据。最简单的方法是将第一个程序中的数据打印到文件末尾有一些状态的文件中(表示其他程序开始读取它是安全的)。在另一个程序中,您有一个while循环,用于检查每个时间段内该文件中最后一行的状态。

另一种选择是使用一些像MPI这样的库,它具有实现消息传递的协议。

答案 1 :(得分:0)

这些是同时存在的一些问题,让我试着剖析:

  • 现代操作系统上的进程定义具有自己的虚拟地址空间。因此,如果不对操作系统进行修改以允许完全允许,则在同一地址空间中运行两个进程是不可能的。
  • 即使有这样的修改,也不是一个完美的想法:对线程之间共享的内存的访问由显式构建在它们中的同步原语控制。没有这样的机制来管理两个进程之间的内存访问,这些进程没有明确地设计为
  • 如果在进程之间设置内存,则共享内存完全不需要它们在整个相同的虚拟地址空间中运行:几乎所有现代操作系统中都存在共享内存段,以便实现这一点。同样,必须明确设计这些流程才能使用此功能。
相关问题