Mac OS X操作系统结构分析

骨z1里的傲慢
972次浏览
2020年01月03日 23:32
最佳经验
本文由作者推荐
苹果系统app开发
Mac OS X操作系统结构分析
李俊阳1
(1. 武汉理工大学计算机科学与技术学院物联网1203班, 湖北省武汉市, 430063)
摘  要: Mac OS X是苹果公司为Mac电脑开发的专属操作系统的最新版本。一直以来,Mac OS X操作系统以它的快速、干净、安全等特性为公众喜爱。Mac OS X可谓是Unix系操作系统当中最为成功的操作系统之一,那么研究其操作系统结构就成了探寻其快速、干净、安全等特性的必不可少的步骤。作为Unix系操作系统,Mac OS X的核心底层部分和Unix系统类似,但是在应用、框架等方面,Mac OS X做了大量的工作来保证在功能愈发强大的同时保护Mac OS X的安全。Mac OS X的系统结构由四个层组成,分别是:内核环境、应用服务层、核心服务层和应用程序环境。
关键词:Mac OS X;操作系统结构;系统架构;苹果操作系统
Mac OS X是苹果公司为Mac电脑开发的专属操作系统的最新版本。一直以来,Mac OS X操作系统以它的快速、干净、安全等特性为公众喜爱。Mac OS X可谓是Unix系操作系统当中最为成功的操作系统之一。目前,苹果公司已经开放了Mac OS X的内核系统Darwin的源代码,并公开了一系列的Mac OS X系统文档,借助Darwin源代码的分析、苹果公司公开的文档以及Unix系统架构的分析,我们可以总结出一个完整的Mac OS X操作系统结构框架。
1 Mac OS X操作系统简介
Mac OS X于1998年首次推出,并从2002年起随Mac电脑发售。它是一套Unix基础的操作系统,包含两个主要的部份:核心名为Darwin,是以FreeBSD源代码和Mach微核心为基础,由苹果公司和独立开发者社群协力开发;及一个由苹果电脑开发,名为Aqua之专有版权的图形用户接口。
Mac OS X 是先进的操作系统。基于坚如磐石的 UNIX 基础,设计简单直观,让处处创新的 Mac 安全易用,高度兼容,出类拔萃。UNIX 之威力,Mac 之简单OS X 既简单易用且功能强大。所有的一切 - 从启动 Mac 后所看到的桌面,到你日常使用的应用程序,都设计得简约精致。无论是浏览网络、查看邮件和外地朋友视频聊天,所有事情都简单高效、趣味盎然。当然,简化复杂任务要求尖端科技,而 OS X 正拥有这些尖端科技。它不仅使用基础坚实、久经考验的 UNIX 系统提供空前的稳定性,还提供超强性能、超炫图形并支持互联网标准。[2]
2    系统架构
Mac OS X架构的主要特点是系统软件和接口的分层结构,其中一层依赖于它的下一层。并且Mac OS X需要把不同的一组技术继承到一起(其中某些技术在发展历史上有着很大的差异),并将这套统一整合后的技术建立在一个高级内核环境的基础上。[1]
而我们分析复杂软件的一种常用方法就是把软件的各个部分分解成不同的“层”。直观地看来,一层位于另一层之上,最基础的层位于最底端。这种视图暗示了软件层与层之间的一般接口与依赖关系。软件中位置越高的层就越接近于实际的应用程序代码,其下又紧紧依赖于其他层的支持,层层累加,高层依赖于低层。

2.1    内核环境(Core Operating System)[3]
内核环境为Mac OS X提供基础层。Mac OS X的核心基于Unix操作系统,名为Darwin,主要由Mach和BSD组成。用户可以通过终端(Terminal)程序来使用Unix的命令。同时,Mac OS X也包括了网络协议栈、网络服务、文件系统和设备驱动程序。内核环境为开发设备驱动(I/O Kit)和可装载内核扩展提供了工具。
内核是操作系统的核心,距有很多最基本的功能,它负责管理系统的进程、内存、设备、驱动程序、文件和网络系统,决定着系统的性能和稳定性。
内核环境由以下几个主要部分构成:
2.1.1    系统内核:XNU
XNU,由苹果电脑发展的操作系统内核,被使用于Mac OS X中,XNU是X is Not Unix的缩写。
XNU最早是由NeXT公司为了NeXTSETP操作系统而发展的,采用了一种混合式核心(Hybrid Kernel),结合了Mach、BSD以及I/O Kit的面向对象应用程式接口,系统内核以C++撰写。
2.1.2    Mach内核
Mach 提供了对任务、线程、端口、虚拟地址、内存管理和任务间通信的基本抽象概念和具体实现。Mach也是操作系统的一部分,用于管理处理器的使用,控制时序安排及强制内存保护。另外,它为操作系统的其他部分提供了计时服务、同步基本单元和以消息为中心的底层构造。
Mach内核使得任何进程都拥有一般系统中内核才有的权限,从而允许用户进程实现与硬件交互等基本操作。Mach主要是以以下概念作为基础而研发的:
l “任务”即拥有一组系统资源的对象,允许“线程”在其中执行。
l “线程”是执行的基本单位,拥有一个任务的上下文,并且共享任务中的资源。
l “port”是任务间通讯的一组受保护的消息队列,任务可以对任何port发送或接收数据
l “消息”是某些有类型的数据对象的集合,它们只可以发送至port,而非某特定任务或线程
Mach继承了Accent IPC的理念,基于共享内存的进程间通信机制(IPC)。除了操作文件,Mach可以操作“任务”,可以使大量的内核代码可以转移到用户空间,使内核变得更小。
在原本的UNIX下,用户进程调用内核只能通过系统调用或陷入(trap)。用户进程使用一个库安排好数据的位置,然后软件触发一个中断,内核在初始化时会为所有中断设置handler,因此程序触发中断的时候,控制权就转移给了内核,在一些必要的检查之后即可得以进一步操作。
在Mach下这交给了IPC系统,用户进程先向内核申请一个port的访问许可,然后利用IPC机制向这个port发送消息。IPC消息传递机制的应用为线程和并发提供了很好的支持。进程之下是多个线程,线程作为IPC机制的单元,Mach得以在消息被处理时控制线程睡眠或唤醒。这允许系统将进程分布于多个处理器上,消息直接通过共享内存实现。
基本的Mach内核由以下几个部分组成:
2.1.2.1 文件系统
从体系结构上看,Mac OS X实现了对多文件系统的支持,其中最为重要的文件系统包括有:Mac OS Extended (HFS)、Mac OS Standard (HFS)、UFS、ISO 9660、NFS和AFP。
Mac OS X文件系统中的几乎每个文件都有其适合放置的存储这一类型文件的标准目录区域。
文件系统的层次通常被表现为一个以“根(root)”开始的分层架构,通过使用虚拟文件系统(VFS)底层构造,开发者可以编写内核扩展以增加对其他文件系统的更多支持。在典型的Mac OS X文件系统的根目录中,其包含:
/Mac OS X/:一个特殊的卷,操作系统由它开始启动,系统文件和资源也被安装在其上。这个卷通常是Mac OS扩展格式(HFS+,Mac OS Extended)的卷。
/Network/:作为装载到用户系统上的本地网络的根目录。
/Other Volumes/:显示一个或多个被连接的外部设备或不是启动卷的内部设备。其中可以包括有Zip驱动器、CD-ROM驱动器、被装载的网络服务器以及硬盘和它们的分区等。
2.1.2.2 网络
内核环境实现了许多的本地网络协议以及功能。作为网络内核扩展(NKE),实现了一些Mac OS X的网络功能和协议栈。并且可以在不进行重新编译和重新连接的情况下动态地对内核的网络底层结构进行扩展。
2.1.2.3 POSIX
可移植操作系统接口(Portable Operating System Interface, POSIX),是IEEE为要在各种UNIX操作系统上运行的软件,而定义API的一系列互相关联的标准的总称。
POSIX标准意在期望获得源代码级别的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。
2.1.3 BSD内核
伯克利软件套件(Berkeley Software Distribution,BSD)可以通过一个二进制兼容层(compatibility layer)运行相同架构下其他操作系统上的源程序。BSD采用单内核,这意味着内核中的设备驱动,在核心态下运行,从而作为操作系统的核心部分。
Mac OS X使用的BSD内核是4.4版本,其用于支持Mach的抢占式多任务处理、内存保护、动态内存分配和对称多处理。在Mac OS X中,BSD构成网络和文件系统的基础。它所提供或支持的一些其他方面的特性,包括:进程的生成与管理、信号处理、系统启动与关闭、一般输入/输出设备的操作、基本文件的操作,以及对终端和其它设备的处理。它也能实现用户和组的身份识别技术,以及对文件和其他资源进行访问限制的相关功能。
2.1.4    设备驱动程序和I/O Kit
在Mac OS X中,设备驱动程序由I/O Kit生成。I/O Kit是一种提供面向对象编程模型(基于限制性的C++形式)以改善设备驱动程序开发效率的框架。I/O Kit对连接到Mac OS X的硬件进行建模,并且抽象出特定范畴内的各种设备的公共功能,从而简化了设备驱动程序开发的过程。内核环境包括有许多现成的设备驱动程序。
I/O Kit的基本目标从一开始就是为了提供和增加Mac OS X(特别是内核环境)的内在功能和能力。作为Mac OS X的驱动程序模型,I/O Kit支持下面的特性:
l 动态和自动的设备配置(即插即用)
l 支持很多新型设备,包括图形加速和多媒体设备
l 电源管理
l 内核的强制内存保护——分离核心级和用户级程序的地址空间
l 抢占式多任务
l 对称多处理
l 对不同类型的设备可以共享的公共功能进行抽象
l 增强了的开发体验——新的驱动程序易于书写
2.2        应用服务层(Graphics and Media)
应用服务包含了那些与图形用户界面有关的系统服务,它们对所有的应用程序环境开放。应用服务层包括Quartz、QuickDraw、OpenGL和一些基础的系统管理器。这个环境负责处理屏幕渲染、打印、事件处理、低级别的视窗和指针管理。并且它也包含了用来实现图形用户界面的库、框架和后台服务器。
2.2.1    图形和视窗环境
Mac OS X的抢占式应用服务是对图形和视窗环境的一种补充。从它的本质来说,应用程序必须通过图形用户界面来显示它的视窗,并允许用户来使用它的控件。图形和视窗环境“无偿”提供给应用程序这些基本能力,以减轻它们在自己的环境中实现这些功能的负担。除了对屏幕上所显示的视窗进行文本和图像渲染(以及文本和图形打印),该环境也提供了重要的低级别功能,例如:初始事件路由以及指针管理。
2.2.1.1 Quartz 2D
Quartz的Quartz 2D是一个具有矢量特性的图形库。它的API允许您通过指定一系列命令和数学程式来生成文本与图像。这些命令和程式用来在二维空间内绘制线段,几何形状,颜色,阴影,半透明效果和其它图形属性,而您无需为每一个特定像素指定属性。作为结果,一个几何形状可有效地以一系列路径和属性的方式来定义,而不是以位图的方式来定义。