gpt4 book ai didi

linux - 两个进程共享代码段

转载 作者:太空狗 更新时间:2023-10-29 11:34:45 28 4
gpt4 key购买 nike

假设我们背靠背运行两个进程说:-

$ grep abc abc.txt ==> pid 100
$ grep def def.txt ==> pid 101

我在“开始 Linux 编程”一书第 11 章中读到,进程的代码部分将被共享,因为它是只读的。是这样吗?我认为如果 grep 被编译为共享库,那么代码部分将被共享。

还有一个问题,在共享库的情况下,操作系统如何知道库是否已经加载?假设如果 2 个进程同时调用共享库函数,那么如何将两个进程的虚拟地址转换为指向 RAM 中相同位置的物理地址?

最佳答案

操作系统不再将文件加载到内存中。相反,文件是 memory mapped .这意味着磁盘上文件的 inode 和偏移量将连接到内存中的页面。这使得查明文件的某些部分是否已经加载变得非常简单。此外,您可以只将文件的一部分保留在 RAM 中(设置后,您不再需要设置代码,因此您可以“忘记”它并重新使用这些页面来做更有用的事情)。

关于linux - 两个进程共享代码段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3132180/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com