代码之家  ›  专栏  ›  技术社区  ›  Amir Zadeh

Linux中共享对象与普通库的区别

  •  2
  • Amir Zadeh  · 技术社区  · 15 年前

    绑定到共享对象或普通对象之间的主要区别是什么?还有,在一些程序之间共享一些变量,并且知道我们的变量永远不会被另一个程序更改,这是怎么可能的呢?

    1 回复  |  直到 15 年前
        1
  •  2
  •   R.. GitHub STOP HELPING ICE    15 年前

    变量永远不会在程序之间共享。(虽然特别分配的共享内存可以共享,但在C术语中这是一个“对象”而不是“变量”) 背衬 是进程之间共享的内容,无论是主程序(静态或动态链接)还是共享库文件,都是相同的。操作系统的虚拟内存实现负责在内容与磁盘上的内容保持不变的情况下为多个进程使用相同的物理内存页,并在运行时对写入的页进行物理复制。所有这些对于您的应用程序来说都是透明的,它可以看到一个线性的32位或64位地址空间,它只包含自己的代码和数据。

    实际上,动态链接系统进行了许多存储优化,将每个进程将要更改的数据隔离为几个页面,从而允许在使用相同可执行文件或相同库的进程之间共享绝大多数页面。