一、苹果官方将整个系统大致划分为上述四个层次:
苹果的官方 Mac OS X 和iOS文档展示了一种非-常优雅分层的方法,当然这个层次结构有一点过于简化:
•用户体验层:是用户能接触到的图形应用,Mac OS X中包括 Aqua、Dashboard(仪表盘:包括多种多样的小工具,能够实现很多像天气情况查询,股票信息查询,iTunes音乐播放控制,世界时钟,实时新闻等信息的查询及浏览)、Spotlight(搜索工具支持搜索系统和应用内的文本、照片、文件等,还能进行单位、货币换算,当接入网络后,可以直接用关键字搜索网页) 和accessibility(辅助功能)等,在iOS中包括 SpringBoard(图形用户界面:Graphical User Interface,简称 GUI,又称图形用户接口,是指采用图形方式显示的计算机操作用户界面,Aqua是Mac OS X的GUI)、Spotlight。
•应用框架层:包括 Cocoa、Carbon和Java,而在 iOS 中只有Cocoa(严格地说应该是 Cocoa的衍生品Cocoa Touch),即开发人员接触到的框架。
为什么新建一个类的时候我们都是选择Cocoa Class呢?Cocoa是什么呢?
Cocoa不是一种编程语言,它可以运行多种编程语言,它也不是一个开发工具(通过命令行我们仍然可以开发Cocoa程序),它是创建Mac OS X和iOS程序的原生面向对象的API,为这两者应用提供了编程环境。
我们通常称为“Cocoa框架”,事实上Cocoa本身是一个框架的集合,它包含了众多子框架,其中最重要的要数Foundation和UIKit,前者是框架的基础,和界面无关,其中包含了大量常用的API;后者是基础的UI类库。这两个框架在系统中的位置如下图:
•核心框架层:有时候称为图形和媒体层,包括核心框架、Open GL 和 Quick Time 。
•Darwin层:即操作系统的核心,包括系统内核、驱动、Shell等内容,这一层是开源的,并提供了底层 API,其所有源码都可以在opensource.apple.com里找到,而上面那些层,则是闭源的,属于苹果私有的知识产权。
Darwin核心的架构:
硬件层上面的三个组成部分:Mach、BSD、IOKit (还包括一些上面没标注的内容),共同组成了XNU内核。
Mach层:是XNU内核的内环,其作为一个微内核,仅提供了诸如处理器调度、IPC (进程间通信)等非常少量的基础服务(在Mach 中,所有的东西都是通过自己的对象实现的,进程、线程和虚拟内存都被称为”对象”;和其他架构不同,Mach的对象间不能直接调用,只能通过消息传递的方式实现对象间的通信,"消息"是Mach中最基础的概念,消息在两个端口(port)之间传递,这就是Mach的 IPC (进程间通信) 的核心)。
BSD 层:是围绕 Mach 层的一个外环,其提供了诸如进程管理、文件系统和网络等功能。
IOKit层:是为设备驱动提供了一个面向对象(C++)的一个框架。
参考:殊途同归的iOS终端与Linux后台开发技术、http://images.china-pub.com/ebook3765001-3770000/3769686/ch02.pdf