操作系统分层
Application Layer : 主要是 Cocoa 框架
Media Frameworks :图形和音频框架
Core Services :进程和应用的支持框架,对用户界面没有直接影响
Core OS : 核心操作系统,提供基础的 API
Kernel and Device Drivers : XNU 和 所有内核扩展
介绍了不同的属性列表 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 链接。将他们的符号作为自己的符号重新导出
Darwin's 的 libSystem.B.dylib
给原始内核服务 提供的导出函数
导出函数都是一个包装器,所有的调用都通过一个统一的接口进行,通过 特定的呼叫 分配一个 sys/syscall.h
中定义的特定的值 通过特定的功能传输到内核。根据不同的 调用号实现系统调用
系统调用的实现,首先要检查 pthread\\testcancel
样标记为 cancelation
线程就可以避免阻塞系统调用并返回到用户模式。这直接调用nocancel系统调用会跳过该检查。