实际上是程序之间的共享内存,Windows编程语言

时间:2015-06-26 04:59:48

标签: windows memory ram sharing

我在Windows平台上,我一直在研究操作系统是如何工作的,C#C ++ VB C可以做什么,但我一直在进入这个绝缘空间"多个程序的问题。

是否有可能(无论多么困难或困难)在绝缘空间中启动两个程序?

例如:

A.exe时 程序启动,在物理RAM中:0 x 0000 0000 0000 00FF

B.EXE 程序启动,在物理RAM中:0 x 0000 0000 00FF 0000

这些程序有自己的变量" foo"在地址" 0x0F"。出于明显的边界原因,0x0F是本地地址,在两个程序之间没有任何意义。两个程序中的每一个都以不同的方式将0x0F解析为两个不同的值。

是否有可能以某种方式共享此内存物理,只需将两个独立程序中的局部变量指向同一物理地址即可?

我知道局部变量通常作为本地处理,并通过将程序的起始偏移量添加到变量来解析,以获得该变量的物理位置变量。

我粗暴地画了一幅图像来代表我的观点: enter image description here

简而言之,如何在两个单独的程序中映射本地内存,以指向物理上的绝对相同位置?或者至少,我如何让程序知道物理地址(例如它们在哪里,它们的变量在物理上的位置,以便它们可以在物理RAM中相互看到并相互修改)以便我可以模拟这种行为?

注意:这必须通过映射完成,否则我只是通过序列化技术复制内存。

是的我知道这会违反很多操作系统安全设备和设计规范。是的,我知道这可能会带来巨大的安全风险。是的我知道这也会影响系统的稳定性。是的我知道操作系统可能会因页面文件而移动内存,并会强制程序重新协商其寻址。我仍然希望无论如何都能达到这个效果。即使我必须编写自己的驱动程序。我只是不知道如何开始这个项目。

PS:类似于两个程序之间RAM中实际物理内存的原始指针。但它必须分配到DLL或第三个程序,或分配到两个程序之一,因此操作系统不会只是覆盖它。我需要直接访问这些数据,没有任何代理,即操作系统,因为我需要性能速度!

PPS:我在考虑编组,调用DLL,这种性质的东西可能会有所帮助,但是由于Window的内存管理的性质,它们都处于绝缘空间。 。我不知道Linux在这方面是否相同。如果Linux能够轻松支持上述想法,我很乐意跳槽。

PPPS:有点像SQL的工作方式,除了我不想在编写查询,发送到服务器,等待服务器串行传回,然后反序列化数据和使用之间的延迟它。

PPSPSP:这种行为存在于嵌入式计算机中,因为所有软件都在同一个共享物理空间中运行,它们可以看到彼此和所有数据。我希望在操作系统中模拟这种行为,不会造成性能损失(即在应用程序域之间序列化数据),也无需创建专门的软件来运行我的程序(模拟器)。

PPPSSSPP:我希望程序A和程序B作为IPC的一种形式访问RAM中的相同物理内存。我需要实际的物理访问,而不是模仿它。假设它是1920x1080的图像,我需要迭代并同时修改两个程序,其中图像将是struct Pixel(int A,R,G,B)的2D数组。我有太多的用途和需要这种技术开始列出所有这些。

0 个答案:

没有答案