共享库之所以共享,是因为它们从磁盘上的同一文件中加载,还是因为它们被加载到内存中一次,并且每个人都共享相同的内存区域?在Linux中,它们只加载一次,并且在每个进程空间中虚拟映射吗?这是如何工作的?
编辑:当我说共享时,我想我指的是动态链接,但如果有区别,请告诉我。
共享库之所以共享,是因为它们从磁盘上的同一文件中加载,还是因为它们被加载到内存中一次,并且每个人都共享相同的内存区域?在Linux中,它们只加载一次,并且在每个进程空间中虚拟映射吗?这是如何工作的?
编辑:当我说共享时,我想我指的是动态链接,但如果有区别,请告诉我。
一般来说是后者 (尽管 $LD_PRELOAD
可以改变这个; 详见ld.so(8)
手册页的环境部分)。CPU TLB用于将库的页映射到应用程序的进程空间中。