介绍了不同的属性列表 property list

Application 是一种特殊类型的包,即具有固定目录结构的包,不仅包含应用程序的可执行文件,还支持私有dylib、frameworks、icons和其他UI元素等文件。

Macos严格遵循固定结构。*OS less o省略 conents/ 并将 Resources/可执行文件 折叠到应用程序根目录中

每个 app 都 需要 一个 info.plist 它提供应用程序部署所需的元数据以及操作提示。

MacOS IOS 提供大量的私有frameworks,里面不提供标题和对应的文档

所有用户模式二进制文件的关键在于一个单一的核心库-/usr/lib/libsystem.B dylib

这是Darwins最基本的库,它提供了数以千计的导出函数,这些导出函数包含真正的“核心操作系统”服务,即由最低级别的C运行时提供的服务,或内核函数的包装器

MacOS 中 libSystem.B.dylib 是一个小文件,实际上不提供任何符号,它与 /usr/lib/system 中的其他的 dylibs 链接。将他们的符号作为自己的符号重新导出

System Calls

Darwin's 的 libSystem.B.dylib 给原始内核服务 提供的导出函数

导出函数都是一个包装器,所有的调用都通过一个统一的接口进行,通过 特定的呼叫 分配一个 sys/syscall.h 中定义的特定的值 通过特定的功能传输到内核。根据不同的 调用号实现系统调用

系统调用的实现,首先要检查 pthread\\testcancel 样标记为 cancelation 线程就可以避免阻塞系统调用并返回到用户模式。这直接调用nocancel系统调用会跳过该检查。