.so 文件是否作为一个整体加载到内存中?

.so 文件是否作为一个整体加载到内存中?

当程序导致 .so 文件加载到内存中时,它是作为一个整体加载的,还是仅加载必要的“块”?

答案1

不会。首先打开 .so 文件,然后mmap()创建保存整个文件内容所需的虚拟地址空间。然而,只有当某些东西试图访问空间中的特定地址时,该访问才会导致页面错误,并且内核将从与该页面的偏移量相对应的文件中读取一个(4k)块到实际内存中。当它在实际内存中时,将重新开始访问。这就是请求分页。

相关内容