可以定位独立代码节省内存空间吗?

时间:2014-05-13 23:41:50

标签: operating-system dynamic-linking

据我所知,与位置无关的代码可以节省磁盘空间,因为它不会在编译时加载库,并且可以降低启动成本,因为它只在需要运行时加载lib代码。因此,由于每个使用相同lib函数的进程都会将其加载到地址空间中,这种方法如何节省内存?

1 个答案:

答案 0 :(得分:0)

让我们说我有一个共享库,其格式适用于我正在使用的任何系统。该共享库与位置无关。

通过PIC,它可以映射到虚拟地址空间的任何地方。

如果我有10个进程同时使用该共享库,则物理内存中可以有一个副本,其中多个虚拟地址映射到相同的物理地址。

如果代码不是PIC,则需要加载程序在运行时对库进行修复。这些修补程序不能跨进程共享,需要在内存中多次复制代码。