【发布时间】:2014-05-13 23:41:50
【问题描述】:
据我了解,Position-independent 代码可以节省磁盘空间,因为它不会在编译时加载库,并且可以降低启动成本,因为它只会在需要运行时加载库代码。因此,由于每个使用相同lib函数的进程都会将其加载到其地址空间中,这种方法如何节省内存?
【问题讨论】:
标签: operating-system dynamic-linking
据我了解,Position-independent 代码可以节省磁盘空间,因为它不会在编译时加载库,并且可以降低启动成本,因为它只会在需要运行时加载库代码。因此,由于每个使用相同lib函数的进程都会将其加载到其地址空间中,这种方法如何节省内存?
【问题讨论】:
标签: operating-system dynamic-linking
假设我有一个共享库,其格式可以在我使用的任何系统上工作。该共享库与位置无关。
作为PIC,它可以映射到虚拟地址空间的任何地方。
如果我有 10 个进程同时使用该共享库,则物理内存中可以有一个副本,其中多个虚拟地址映射到相同的物理地址。
如果代码不是 PIC,它需要加载程序在运行时对库进行修复。这些修复不能跨进程共享,需要内存中的多个代码副本。
【讨论】: