一、简单介绍
最近去了解了下,这部分的知识,目前就记录下这方面的知识点。
苹果大致把其操作系统分为四个层次,分别为应用层,应用框架层、核心框架层,还有就是Darwin
1、应用层包括用户能接触到的图形应用,比如说 Spotlight(系统自带搜索栏)、Aqua(Aqua是Mac电脑全新用户界面的名字)、SpringBoard(苹果iDevice的桌面) 等。
2、应用框架层即开发人员接触到的Cocoa等框架,这里了解几个概念,Cocoa框架是指Foundation框架和Application kit框架;Cocoa Touch框架是指Foundation框架和UIKit框架。Cocoa框架用于Mac OS X桌面和笔记本电脑的应用程序的开发,而Cocoa Touch框架用于iPhone与iTouch的应用程序开发。
3、核心框架层包括各种核心框架比如说CoreFoundation、OpenGL(ios是OpenGL ES) 等内容。
4、Darwin也就是操作系统的核心,包括系统内核、驱动、Shell 等内容,这一层是开源的,所有源码都可以在 opensource.apple.com 里找到。 这里的shell就是命令行解释程序。
二、核心架构
接下来看一下Darwin的架构,其中EFI指的就是EFI在概念上非常类似于一个低阶的操作系统,并且具有操控所有硬件资源的能力
三、内核介绍
Mac OS X的内核环境主要包括了Mach微内核和BSD内核,其中BSD部分主要来自FreeBSD。Mach提供了内存管理,支持远程程序调用(RPC)和进程间通信(IPC)工具,还包括消息传递和线程调度。而BSD提供了命令行接口,支持网络和文件系统,以及POSIX API的实现,包括Pthread,POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称。上面的I/O Kit 是苹果电脑为 Mac OS X 驱动程序开发而设计的面向对象的框架。IOKit 层是为设备驱动提供了一个面向对象(C++)的一个框架。
在硬件层上面的三个组成部分:Mach、BSD、IOKit (还包括一些上面没标注的内容),共同组成了 XNU 内核。XNU内核是基于Mach和BSD的,所以它继承了BSD的POSIX接口,也就是说我们可以在Mac OS 系统上直接的去使用POSIX线程的相关接口去创建线程。内核就是操作系统的核心,具有很多基本的功能,比如说负责管理系统的进程、内存、设备、驱动程序、网络系统和文件,决定了系统的性能和稳定性。
XNU是混合内核,兼具宏内核和微内核的特性,因为Mach是微内核架构,BSD是宏内核架构。
微内核的主要功能就是使客户程序和运行在用户空间的各种服务之间进行通信。通信以消息传递形式提供。所以其实OC中用的是消息发送机制就和这个有关。
宏内核被视作为运行在单一地址空间的单一的进程,核心提供的所有服务,都以特权模式,在这个大型的核心地址空间中运作,这个地址空间被称为核心空间(kernel space)。它通常是以单一静态二进制文件的方式被存储在磁盘,或是高速缓存上,在开机之后被加载存储器中的核心空间,开始运作。
Mach操作系统是第一个以多线程方式处理任务的系统,Mach的绝大多数的通信都是通过消息来实现的,消息通过端口来发送和接受。