1 苹果开发人员技术文档连载之-系统架构( 二 )



·BSD命令环境提供了一个可以在命令行上执行BSD程序的外壳 。标准的BSD工具、脚本以及自定义或第三方程序在该环境上都有效 。该图显示了BSD命令环境与内核环境层之间有着直接的联系 。注意 , 您可以在命令行上运行建立在非BSD环境中的程序 , 例如基于Cocoa Foundation框架上的程序 。
·内核环境通过usr/lib中的系统库把BSD服务输出给系统的高层(头文件在/usr/include内) 。BSD命令对开发者也是有用的;然而 , 在某些已安装的Mac OS X中 , 可能没有包含BSD命令 。这是因为BSD命令环境是一个特殊的可选择的环境 , 在这篇文档中并不做更深入的描述 。

对Mac OS X开发者而言Carbon、Cocoa和Java是三个主要的应用程序环境:

·Carbon是为Mac OS X设计的 , 并能适应Mac OS 9的API和库 。它保留了大部分先前的 API(70%的函数)以及包括一些专门为Mac OS X开发的API和服务 。
·Cocoa是一组先进的面向对象的API集合 。可以用Java和Objective-C来开发Cocoa应用程序 。
·Java环境是用于开发和部署100%纯Java及混合API 的Java应用程序和applet的 。

系统软件的各个层可直接支持Carbon、Cocoa和Java环境 , 这些层为所有应用程序环境提供服务 。这些层以宽度递减的方式堆加 , 应用程序代码可以访问较低位置的层 , 而无需中间层的介入 。

这些层的第一层是应用服务层 。它包含了Mac OS X的图形和视窗环境 , 主要由Quartz和QuickDraw来实现 。这个环境负责处理屏幕渲染、打印、事件处理、低级别的视窗和指针管理 。并且它也包含了用来实现图形用户界面的库、框架和后台服务器 。

QuickTime是对操作系统的一种扩展 , 它在结构上跨越了系统软件的不同层 。它是一个交互的多媒体环境 , QuickTime具备了针对图形环境和应用程序环境的一致特点和功能性 。图3-1显示QuickTime跨越了应用服务层和应用程序环境层 。在执行时 , QuickTime需要一个主应用程序环境(或浏览器) , 但由QuickTime所提供的具有独特性和成熟性的多媒体构件通常只存在于应用程序环境中 。

应用服务层位于核心服务层之上 。在核心服务层中 , 通常的服务与图形用户界面没有直接的联系 。在这里您会发现一些跨环境执行的与编程相关的基本抽象概念 , 例如:字符串、运行循环和集合 。在核心服务中 , 也有用来管理进程、线程、资源、虚拟内存和用来与文件系统进行交互的API 。“核心服务”讨论了软件系统的这一层 。

内核环境是系统软件中最低的一个阶层 , 正好位于核心服务层的下面 。内核环境为它上面的层提供了重要的操作系统功能 , 例如:

·抢占式多任务处理
·具有内存保护和和动态内存分配的高级虚拟内存
·对称多处理(SMP)
·多用户访问
·基于VFS的文件系统(虚拟文件系统)
·设备驱动程序
·网络
·基本的线程包

它是一个高性能和高度模块化的内核 , 可以支持设备驱动程序的动态装载、网络扩展和文件系统 。内核环境由五个主要部件构成:

·Mach 提供了对任务、线程、端口、虚拟地址、内存管理和任务间通信的基本抽象概念和具体实现 。Mach也是操作系统的一部分 , 用于管理处理器的使用 , 控制时序安排及强制内存保护 。另外 , 它为操作系统的其他部分提供了计时服务、同步基本单元和以消息为中心的底层构造 。
·BSD BSD的4.4版本用于支持Mach的抢占式多任务处理、内存保护、动态内存分配和对称多处理 。在Mac OS X中 , BSD构成网络和文件系统的基础 。它所提供或支持的一些其他方面的特性 , 包括:进程的生成与管理、信号处理、系统启动与关闭、一般输入/输出设备的操作、基本文件的操作 , 以及对终端和其它设备的处理 。它也能实现用户和组的身份识别技术 , 以及对文件和其他资源进行访问限制的相关功能 。BSD提供了许多POSIX API 。

推荐阅读