预绑定
预绑定是早期版本的 macOS(以前称为 Mac OS X)使用的一种优化技术,旨在让 应用程序启动得更快。它适用于 Mach-O 文件,这是 macOS 中应用程序、库和其他可执行代码所使用的原生格式。
预绑定的工作方式
应用程序通常依赖包含多个程序都会使用的代码的共享库。通常,动态链接器必须找到这些库,将它们加载到 内存中,并解析对其函数和数据的引用。预绑定会提前完成其中一部分工作:在应用程序启动前分配首选内存地址,并记录已解析的引用。
早期版本的 Mac OS X 会在软件安装期间,或在系统优化过程中执行预绑定。虽然这一过程缩短了应用程序的启动时间,但对应用程序或其库进行更改可能会使预绑定信息失效,因此需要重新生成这些信息。随着操作系统采用与位置无关的代码和地址空间布局随机化(ASLR),这种技术的作用也逐渐降低。地址空间布局随机化会有意改变内存位置,以提高安全性。
现代环境中的预绑定
现代版本的 macOS 已不再使用传统的预绑定。相反,Apple 的动态链接器 dyld 会使用共享动态链接器缓存和启动闭包等技术,高效地加载 Mach-O 应用程序。虽然这些技术具有类似的效果,但严格来说,预绑定一词指的是早期版本 Mac OS X 所使用的过程。
测试你的知识