- OSX系统的整体架构(见下图)

- 内核态编程环境
1.BSD - 来自FreeBSD的内核部分。
FreeBSD是一个高效、稳定的UNIX操作系统,是众多BSD UNIX分支中的一个。正是因为OSX基于FreeBSD的内核,也让它继承了其身上很多的优势,包括相当多的工具支持。这也是为什么Linux的用户可以很容易的适应OSX的主要原因。
2.IOKit - 苹果抽象的驱动模型,面向对象的设计。
IOKit是一个面向对象的驱动模型框架,它是早期DriverKit的一个翻版,Driver Kit是使用Objective-C写的,而IOKit是一个C++的驱动架构,它在DriverKit的基础上做了很大的改进,比如IOKit可以写在用户空间跑的驱动(虽然大多仍是跑在内核空间上的),因而驱动挂了而系统不会挂。另外IOKit考虑到了计算机发展的趋势,所以在电源管理、即插即用、动态加载上做得更好。
- 用户态程序环境
1.BSD - UNIX POSIX API
OSX 早期版本基于 FreeBSD 内核修改,提供了类UNIX的Shell,支持了许多UNIX的命令。POSIX API接口由内核直接支持,故POSIX API使用标准的C语言,其引用的接口文件的实现均直接由内核实现。
2.Carbon - 苹果早期的API,封装了部分底层接口
Carbon为早期的OSX所用,但至今仍然保留,其基于 Core Foundation框架,提供了更多更底层的支持,Carbon的接口均为C语言,但所提供的很多类型却可以Cocoa中的对象无缝转换(CF与NS的对象转换)。
3.Cocoa - 苹果建议Application使用的框架
Cocoa框架是用Objective-C提供的一套面向对象的接口,提供了丰富了UI界面及用户交互体验,并且极大的方便了程序员快速开发一个完整的Application,所以它提供了完善的App的bundle标准(info.plist、resource、frameworks、多语言等)。