1、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的
2、安全。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
3、 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 后所看到的桌面,到你日常使
4、用的应用程序,都设计得简约精致。无论是浏览网络、查看邮件和外地朋友视频聊天,所有事情都简单高效、趣味盎然。当然,简化复杂任务要求尖端科技,而 OS X 正拥有这些尖端科技。它不仅使用基础坚实、久经考验的 UNIX 系统提供空前的稳定性,还提供超强性能、超炫图形并支持互联网标准。22系统架构Mac OS X架构的主要特点是系统软件和接口的分层结构,其中一层依赖于它的下一层。并且Mac OS X需要把不同的一组技术继承到一起(其中某些技术在发展历史上有着很大的差异),并将这套统一整合后的技术建立在一个高级内核环境的基础上。1而我们分析复杂软件的一种常用方法就是把软件的各个部分分解成不同的“层”。直
5、观地看来,一层位于另一层之上,最基础的层位于最底端。这种视图暗示了软件层与层之间的一般接口与依赖关系。软件中位置越高的层就越接近于实际的应用程序代码,其下又紧紧依赖于其他层的支持,层层累加,高层依赖于低层。2.1内核环境(Core Operating System)3内核环境为Mac OS X提供基础层。Mac OS X的核心基于Unix操作系统,名为Darwin,主要由Mach和BSD组成。用户可以通过终端(Terminal)程序来使用Unix的命令。同时,Mac OS X也包括了网络协议栈、网络服务、文件系统和设备驱动程序。内核环境为开发设备驱动(I/O Kit)和可装载内核扩展提供了工具
6、。内核是操作系统的核心,距有很多最基本的功能,它负责管理系统的进程、内存、设备、驱动程序、文件和网络系统,决定着系统的性能和稳定性。内核环境由以下几个主要部分构成:2.1.1系统内核:XNUXNU,由苹果电脑发展的操作系统内核,被使用于Mac OS X中,XNU是X is Not Unix的缩写。XNU最早是由NeXT公司为了NeXTSETP操作系统而发展的,采用了一种混合式核心(Hybrid Kernel),结合了Mach、BSD以及I/O Kit的面向对象应用程式接口,系统内核以C+撰写。2.1.2Mach内核Mach 提供了对任务、线程、端口、虚拟地址、内存管理和任务间通信的基本抽象概念
7、和具体实现。Mach也是操作系统的一部分,用于管理处理器的使用,控制时序安排及强制内存保护。另外,它为操作系统的其他部分提供了计时服务、同步基本单元和以消息为中心的底层构造。Mach内核使得任何进程都拥有一般系统中内核才有的权限,从而允许用户进程实现与硬件交互等基本操作。Mach主要是以以下概念作为基础而研发的: “任务”即拥有一组系统资源的对象,允许“线程”在其中执行。 “线程”是执行的基本单位,拥有一个任务的上下文,并且共享任务中的资源。 “port”是任务间通讯的一组受保护的消息队列,任务可以对任何port发送或接收数据 “消息”是某些有类型的数据对象的集合,它们只可以发送至port,而
8、非某特定任务或线程Mach继承了Accent IPC的理念,基于共享内存的进程间通信机制(IPC)。除了操作文件,Mach可以操作“任务”,可以使大量的内核代码可以转移到用户空间,使内核变得更小。在原本的UNIX下,用户进程调用内核只能通过系统调用或陷入(trap)。用户进程使用一个库安排好数据的位置,然后软件触发一个中断,内核在初始化时会为所有中断设置handler,因此程序触发中断的时候,控制权就转移给了内核,在一些必要的检查之后即可得以进一步操作。在Mach下这交给了IPC系统,用户进程先向内核申请一个port的访问许可,然后利用IPC机制向这个port发送消息。IPC消息传递机制的应用
9、为线程和并发提供了很好的支持。进程之下是多个线程,线程作为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)
10、”开始的分层架构,通过使用虚拟文件系统(VFS)底层构造,开发者可以编写内核扩展以增加对其他文件系统的更多支持。在典型的Mac OS X文件系统的根目录中,其包含:/Mac OS X/:一个特殊的卷,操作系统由它开始启动,系统文件和资源也被安装在其上。这个卷通常是Mac OS扩展格式(HFS+,Mac OS Extended)的卷。/Network/:作为装载到用户系统上的本地网络的根目录。/Other Volumes/:显示一个或多个被连接的外部设备或不是启动卷的内部设备。其中可以包括有Zip驱动器、CD-ROM驱动器、被装载的网络服务器以及硬盘和它们的分区等。2.1.2.2 网络内核环境实
11、现了许多的本地网络协议以及功能。作为网络内核扩展(NKE),实现了一些Mac OS X的网络功能和协议栈。并且可以在不进行重新编译和重新连接的情况下动态地对内核的网络底层结构进行扩展。2.1.2.3 POSIX可移植操作系统接口(Portable Operating System Interface, POSIX),是IEEE为要在各种UNIX操作系统上运行的软件,而定义API的一系列互相关联的标准的总称。POSIX标准意在期望获得源代码级别的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。2.1.3
12、BSD内核伯克利软件套件(Berkeley Software Distribution,BSD)可以通过一个二进制兼容层(compatibility layer)运行相同架构下其他操作系统上的源程序。BSD采用单内核,这意味着内核中的设备驱动,在核心态下运行,从而作为操作系统的核心部分。Mac OS X使用的BSD内核是4.4版本,其用于支持Mach的抢占式多任务处理、内存保护、动态内存分配和对称多处理。在Mac OS X中,BSD构成网络和文件系统的基础。它所提供或支持的一些其他方面的特性,包括:进程的生成与管理、信号处理、系统启动与关闭、一般输入/输出设备的操作、基本文件的操作,以及对终端
13、和其它设备的处理。它也能实现用户和组的身份识别技术,以及对文件和其他资源进行访问限制的相关功能。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
14、 Kit支持下面的特性: 动态和自动的设备配置(即插即用) 支持很多新型设备,包括图形加速和多媒体设备 电源管理 内核的强制内存保护分离核心级和用户级程序的地址空间 抢占式多任务 对称多处理 对不同类型的设备可以共享的公共功能进行抽象 增强了的开发体验新的驱动程序易于书写2.2应用服务层(Graphics and Media)应用服务包含了那些与图形用户界面有关的系统服务,它们对所有的应用程序环境开放。应用服务层包括Quartz、QuickDraw、OpenGL和一些基础的系统管理器。这个环境负责处理屏幕渲染、打印、事件处理、低级别的视窗和指针管理。并且它也包含了用来实现图形用户界面的库、框架
15、和后台服务器。2.2.1图形和视窗环境Mac OS X的抢占式应用服务是对图形和视窗环境的一种补充。从它的本质来说,应用程序必须通过图形用户界面来显示它的视窗,并允许用户来使用它的控件。图形和视窗环境“无偿”提供给应用程序这些基本能力,以减轻它们在自己的环境中实现这些功能的负担。除了对屏幕上所显示的视窗进行文本和图像渲染(以及文本和图形打印),该环境也提供了重要的低级别功能,例如:初始事件路由以及指针管理。2.2.1.1 Quartz 2DQuartz的Quartz 2D是一个具有矢量特性的图形库。它的API允许您通过指定一系列命令和数学程式来生成文本与图像。这些命令和程式用来在二维空间内绘制
16、线段,几何形状,颜色,阴影,半透明效果和其它图形属性,而您无需为每一个特定像素指定属性。作为结果,一个几何形状可有效地以一系列路径和属性的方式来定义,而不是以位图的方式来定义。通过使用矢量,Quartz 2D也能使用一种坐标系来作为绘画的参照,比方说这种坐标系是以英寸或厘米为单位的,而不是基于像素栅格。这种坐标体系很灵活,允许不同的度量标准,并且当它不与任何一个屏幕分辨率绑定时,它具有一定程度的显示独立性。它还使用了浮点坐标。优先于Quartz Compositor的合成,Quartz 2D把以坐标系来表现的矢量图像信息转化为像素值。Quartz 2D API是设备独立的,这意味着,绘画操作的
17、最终目的文件可以是窗口位图,也可以是可移植文档格式(PDF)文件、PostScript文件或其它输出格式。当使用QuickDraw或其它输入机制来显示PDF文件时,应用程序可以直接或间接地调用Quartz 2D API用于Quartz 2D的主要输入方式是由QuickDraw和本机C API所生成的绘画命令和程式。(将来,更多的前端API可能会被支持)使用QuickDraw的应用程序可以通过CGContextRef接口来调用Quartz 2D,从而获得它的功能。而QuickDraw使应用程序可以由GrafPort接口来得到CGContextRef。来自QuickDraw或本机API的命令和程式
18、被即刻转换为所需的输出格式,这些输出格式既可以是屏幕渲染的位图数据、PostScript(PostScript打印机的打印数据格式),也可以是其它类型打印机的光栅数据。打印预览时,还可以自动发布PDF。将来,更多的后端转换器可能会被支持,例如:绘图仪。正如前一段所提出的,Quartz 2D是Mac OS X打印系统的底层引擎。打印工作常常被分成二个步骤。Quartz 2D用于解释那些由本机C或QuickDraw API所构建的文本和图形,并将它们保存为PDF格式(主要的脱机打印格式)。这时,PDF可再次通过Quartz 2D,将其转换为适当的输出格式。2.2.1.2 Open GL开放图形库(
19、Open Graphics Library,OpenGL)是个定义了一个跨编程语言、跨平台的应用程序接口(API)的规范,它用于生成二维、三维图像。OpenGL规范描述了绘制2D和3D图形的抽象API。尽管这些API可以完全通过软件实现,但它是为大部分或者全部使用硬件加速而设计的。OpenGL规范描述了绘制2D和3D图形OpenGL的API定义了若干可被客户端程序调用的函数,以及一些具名整型常数(例如,常数GL_TEXTURE_2D对应的十进制整数为3553)。虽然这些函数的定义表面上类似于C编程语言,但它们是语言独立的。的抽象API。尽管这些API可以完全通过软件实现,但它是为大部分或者全部
20、使用硬件加速而设计的。OpenGL不仅语言无关,而且平台无关。规范只字未提获得和管理OpenGL上下文相关的内容,而是将这些作为细节交给底层的窗口系统。出于同样的原因,OpenGL纯粹专注于渲染,而不提供输入、音频以及窗口相关的API。2.2.1.3QuickTimeQuickTime是一种交互式多媒体环境,具有图形环境和应用程序环境上的功能和特性。2.2.1.4Quartz CompositorMac OS X的Quartz Compositor层由视窗服务器和由视窗服务器所实现的(私有的)系统编程接口(SPI)所组成。这一层负责对初始屏幕显示、视窗合成与管理、事件路由和指针管理进行响应。视
21、窗服务器是一个单独的系统范围内的进程,用于协调低级别的视窗动作,并强制保持在屏幕上所显示视窗的基本一致性。它是一个轻量级的服务器,因为它自己不能进行渲染,但可以与位于其上层的客户图形库进行通讯。从绘画模型方面来说,它是“不会发表意见的”。视窗服务器与其它系统服务和库几乎没有依赖关系。它依赖于内核环境中的I/O Kit(尤其是,用I/O Kit构建的设备驱动程序),为的是与框架缓冲器、输入设备的底层结构和输入输出设备进行通讯。它也与核心服务的某些框架相链接,以获取进程管理服务,如基本进程的激活。视窗服务器的一个首要职责是视窗合成。当视窗在被绘制、被重画、覆盖和被覆盖时,由它来合成每一个应用程序的
22、视窗像素。每个视窗都被描述成一幅位图,它包括了半透明(alpha通道)和抗锯齿信息。位图作为缓冲器允许视窗服务器去“记住” 一个应用程序的视窗内容,并在不干涉应用程序的情况下将它进行再合成。然而,视窗服务器(Quartz Compositor)没有记忆那些被图形库(例如Quartz 2D)用来创建视窗和其它图象的矢量信息。取而代之的是,位图被应用程序和视窗服务器所共享,应用程序直接对共享位图进行绘画操作,并相应地由视窗服务器来合成该位图。在它的Quartz Compositor组件中,Quartz以一个分层式的合成引擎来作为视窗系统的模型。传统的视窗系统使用交换模型,在这个模型中屏幕上的每一个
23、像素完全属于一个视窗(或桌面)。因为这种模型,转变就必然很突然;举个例子来说,当您关闭一个视窗时,它会立刻消失。在另一方面,一个分层式合成视窗系统基于“图像(视频)混合”模型。在这个模型上,屏幕中的每一个像素都能够被视窗和视窗间实时共享(尤其是在半透明和抗锯齿特性上)。这种模型允许平滑地在图形用户界面的状态间进行转换,这是Aqua体验所带来的与众不同的特性之一。2.2.2GUI:AquaAqua是Mac OS X的GUI之商标名称,以及在这个GUI主要使用的布景主题(另外一个布景主题是拉丝金属,Brushed metal)。它是以水的布景主题为基础,如同它的名字可以猜想到的,有类似液滴的元件,
24、且丰富地使用半透明和反射效果。2.2.3进程管理器Mac OS X中,由进程管理器来管理所有的进程。它对共享资源的访问进行控制,管理应用程序的调度和执行,并允许多个应用程序共享CPU时间和其它资源。当用户双击一个应用程序或一个文档图标时,Finder使用进程管理器来启动应用程序。进程管理器也提供了许多机制,允许您控制进程的执行,启动进程并获得有关进程的信息。2.2.4Carbon事件管理器Carbon事件管理器把事件分配给合适的事件处理器,这种分配是基于事件类型和目标应用程序环境的。视窗服务器把它接收到的事件放到目标应用程序进程的运行循环端口中。Carbon事件管理器从端口获得事件,把它打包成
25、合适的形式,并把它传递给应用程序(可以是 Carbon、Cocoa和Java)事件处理结构的最低层“容器”。要实现这一点,Carbon事件管理器需要经常确定哪个窗口是当前的活动窗口,在窗口上是否有键盘输入的焦点,等等。2.2.5Apple事件Apple事件是一种高级事件,应用程序可以把它发送到本地或者远程计算机上的其它应用程序中,甚至可以发送给它们自己。Apple事件是Mac OS X中应用程序间通讯的主要机制。应用程序主要用它们来对其它应用程序的服务和信息发出请求,或者对这些请求提供响应。系统级的脚本语言AppleScript,作为一项相关的技术同样也是Mac OS X的一部分。用户可以使用
26、AppleScript发送Apple事件给应用程序。2.2.6剪贴板Mac OS X中的剪贴板(也被称为“粘贴板”)是一种后台服务程序,它允许在应用程序间转移数据。在某些方面它与Mac OS 9中的剪贴板相似,但也有一些不同的地方。Mac OS X中的剪贴板可以对同一数据保留多种表现形式。它被所有正在执行的应用程序所共享使用,剪贴板中包含了用户进行剪切或复制的数据。当一个应用程序要把数据传送给另一个应用程序时,剪贴板同样也能帮助实现这一功能。剪贴板用于复制-剪切-粘贴操作,并在拖拽操作中作为一种数据传送机制。同时它也被服务用于在应用程序间的数据传送。2.3核心服务层(Frameworks an
27、d UI)在核心服务层中,通常的服务与图形用户界面没有直接的联系。核心服务层包含了一些跨环境执行的与编程相关的基本抽象概念,例如:字符串、运行循环和集合。在核心服务中,也有用来管理进程、线程、资源、虚拟内存和用来与文件系统进行交互的API。2.3.1核心基础(Core Foundation)4Core Foundation是一种提供底层软件服务的框架(CoreFoundation.framework),所提供的这些底层软件服务不论对应用服务、应用程序环境还是对应用程序本身都是十分有用的。使用Core Foundation所带来的一个好处就是:提高了在不同环境和层中的框架、库和应用程序之间共享代
28、码和数据的性能。Core Foundation也能够通过Unicode字符串来容易地实现国际化,并提供了用于实现操作系统独立性的抽象概念。在Core Foundation中需要使用隐含类型,您可以用这些类型来创建“对象”,每一个对象都有它自己的独立标识和值(或一系列值)。在创建这些对象时,Core Foundation为内存分配提供了特定工具。并且,它还具备了一些通用基本类型和多态函数,用以实现类型间操作。Core Foundation包括了与一些编程实体相符合的隐含类型,这些编程实体如字符串、数组、代码字典、日期、整数和树。它还具备了一种用于插件的标准体系结构,以及一种用于动态查找、装载代码
29、和位置相关资源的机制(和一套与其相对应的API)。另外,它所拥有的服务能够通过URL访问本地和远程资源,设立分布式通知中心,读写XML属性列表,解析XML以及读写每个用户和每台机器的预置参数。表1列出了Core Foundation的服务和它的相关隐含类型:服务类型描述基本服务(Base Services)CFAllocator, 基本类型定义了在整个Core Foundation API中被使用的基本类型和多态函数。束服务(Bundle Services)CFBundle提供了一种极好的方法,用来组织、定位程序中不同类型的资源,包括:图像,声音,本地化字符串,和可执行代码。集合服务(Coll
30、ection Services)CFArray, CFDictionary, CFTree, CFSet, CFBag提供了对于常用数据结构连同相关功能的一种高级抽象,这些数据结构包括:数组、字典(关系数组或向量)和树。通知服务(Notification Services)CFNotificationCenter一种实现分布式通知的机制,它允许一个进程发送消息(通知)给同一台机器上的另外一个进程。插件服务(Plug-in Services)CFPlugIn为Mac OS X应用程序(和Mac OS 9应用程序)提供了一种标准插件体系结构。预置服务(Preferences Services)CF
31、Preference允许程序保存和获取用户的预置参数。属性列表服务(Property List Services)提供了一种把数据组织成某种形式的方法,这种组织形式具有高度的结构化,可传递,可存储,和易于访问的特点,并能保持尽可能的高效。属性列表API允许基本数据类型的分层组织结构与标准XML之间的相互转换。运行循环服务(Run Loop Services)CFSocket, CFRunLoop (and related)提供了低级事件处理和分派服务。字符串服务(String Services)CFString, CFCharacter- Set提供了一整套快速高效的字符串处理和转换功能。字符
32、串服务提供了对Unicode的完全支持,因此大大简化了国际化的过程。它同样也增强了字符串数据在Carbon和Cocoa应用程序之间的共享。URL服务(URL Services)CFURL, CFURLAccess允许程序通过URL来访问储存在本地或远程的资源。实用工具服务(Utility Services)CFDate, CFTimeZone, CFNumber, CFUUID, CFByteOrder提供了各种杂项服务,例如:日期和时间的计算和显示,数字的“对象” 封装,字节交换和UUID的生成。XML解析器(XML Parser)CFXMLParser为读取和分析XML文档的数据提供了一个
33、XML解析器。表1 Core Foundation服务2.3.2Carbon核心(Carbon Core)Carbon 核心是CoreServices.framework的一部分,包括许多Carbon管理器,并为所有应用程序环境提供低级服务。这些服务包括协作和抢占线程、资源管理、内存管理和文件系统操作。管理器描述替身管理器(Alias Manager)使用替身来帮助定位指定的文件、目录或者卷。提供了创建和解析文件系统替身记录的规则。集合管理器(Collection Manager)提供了一种存储信息集合的抽象数据类型。组件管理器(Component Manager)使得您的应用程序在运行时能够
34、找到并使用不同的软件对象(组件)。同时允许创建和管理组件。日期,时间和度量单位工具(Date, Time, and Measurement Utilities)允许应用程序获取和处理日期时间、地理位置、时区和度量单位。文件管理器(File Manager)赋予了程序访问储存在物理卷(包括硬盘,CD,和Zip碟)上的文件的能力。它能适应HFS+(Mac OS Extended)、HFS(Mac OS Standard)、UFS、NFS和其它被支持的文件格式。文件管理器能用于创建,打开,更新,保存和关闭文件;搜索特定的文件或目录;获取有关文件或目录的信息;和执行其它与文件有关的高级操作。文件管理器
35、也支持Unicode,并且它的API是线程安全的。文件夹管理器(Folder Manager)允许程序搜索和创建文件夹,并且控制文件在文件夹之间的移动。它新增了对域的支持。内存管理工具(Memory Management Utilities)提供了一些实用的专用程序,用来检测或控制内存环境的某些方面。内存管理器(Memory Manager)在应用程序的受保护地址空间内控制内存的动态分配。它包含了用来分配共享内存和永久内存的新规则,以及与Mac OS X中虚拟内存相关的各项功能。多进程服务(Multiprocessing Services)使程序能够创建和管理单独的抢占式时序线程。另外,它还包
36、含了同步服务和原子指令。资源管理器(Resource Manager)提供了一些实用的专用程序,用来检测或控制内存环境的某些方面。文本编码转换管理器(Text Encoding Conversion Manager)提供了两个工具-文本编码转换器和Unicode转换器,应用程序可以用它们来实现文本转换。文本工具(Text Utilities)提供了一整套工具用来实现对文本的不同操作,含概了从字符串排序到单词边界查找的各种操作。线程管理器(Thread Manager)允许程序创建和管理协同式时序线程。时间管理器(Time Manager)赋予程序以一种方法,用于在指定时间定时执行程序(可以是只
37、执行一次,也可以是重复多次)。这种执行时间相关任务的机制是与硬件相独立的。Unicode工具(Unicode Utilities)实现对Unicode文本的多种操作,包括Unicode key 翻译。表2 核心服务层中的Carbon管理器2.3.3CFNetWorkCFNetwork是CoreServices.framework的一部分,是用于用户级联网和通讯的首选API。CFNetwork提供了一套用于生成、串行化、非串行化和管理协议消息的函数。这些协议消息可以在客户端和服务器间进行常规的交换。CFNetwork使得您不必为了要交换协议消息而去学习和实现一个协议的具体细节。CFNetwork
38、的设计支持很多协议,包括:HTTP、SMTP、LDAP和FTP。CFNetwork的当前实现提供了处理http消息的功能。2.3.4Web服务Web服务是CoreServices.framework的一部分,允许您调用互联网或本地企业内部网上的远程程序。Web服务使用如 SOAP(Simple Object Access Protocol,简单对象访问协议)和XML-RPC的标准协议,通过HTTP传递服务请求。这些标准协议允许在其它完全不同的计算平台之间进行通讯,也允许创建分布式服务。Web服务核心框架定义了一组API,用来发送请求给使用那些协议的远程服务器和处理有关响应。应用程序开发人员也可
39、以把Web服务机能结合到他们使用了Apple Event管理器和AppleScript的应用程序中。2.3.5Open TransportOpen Transport是CoreServices.framework中的Carbon兼容性API,它提供了对传统联网和通讯技术的支持。Open Transport使应用程序能够同时使用更多的网络系统(例如:AppleTalk与网络打印机进行通讯,TCP/IP连接到互联网)。有了Open Transport,用户就可以保存和修改不同的网络配置,也可以方便地在它们之间进行切换。Mac OS X中的Open Transport版本支持Mac OS 8和Mac
40、 OS 9中那些普遍被使用的接口。例如,它支持IP协议的Open Transport终端规则。尽管如此,它不包括面向连接并基于事务的终端特性(这将只影响到AppleTalk协议的用户,例如ASP)。而且它既不支持本地XTI(X/Open Transport接口)接口也不支持BSD流的接口。来自于Open Transport早期版本的一个重要变化是为许多功能附加了客户端上下文参数。每一个Open Transport客户端现在都拥有它自己的上下文,以使得Open Transport可以代表客户端来跟踪它所分配的资源。在这种情形中,客户端是一个应用程序或共享库,而资源则是像终端、计时任务和内存块那样
41、的对象。2.4应用程序环境(Applications)5一个应用程序环境是由框架、库和服务(和相关的API)来组成的。它为使用这些相关API所开发的程序在运行时的执行,提供了必要的环境支持。应用程序环境依赖于系统软件的所有基础层。2.4.1Cocoa6Cocoa应用程序环境基于两个面向对象框架:Foundation 基本框架(Foundation.framework)与 Application Kit 应用程序工具箱框架(AppKit.framework)。这些框架都提供了面向Java和Objective-C的API(其中大部分的Java类只是简单地“桥接”了他的Objective-C实现)。
42、对于核心服务层和应用服务层的各自关系来说,Foundation 与 Application Kit在某些方面有着相似之处。Foundation框架中的类提供了不对用户界面产生影响的对象和功能;Foundation框架直接基于Core Foundation。而 Application Kit 中的类提供了所有能够影响用户界面上所呈现内容的对象和动作,例如:窗口和按钮、对鼠标和键盘的响应。 Application Kit 直接依赖于Foundation框架。Foundation框架的类可归为以下几种类别:用于基本编程类型和操作的对象包装(或“助手(helper)”),包括:字符串、数组、字典、数字
43、、字节交换、解析和异常处理等。用于内核环境实体和服务的对象包装,例如任务、端口、运行循环、计时器、线程和锁。对象相关功能,尤其是内存管理(自动释放缓冲区),远程调用、存档和串行化。文件系统和I/O功能,包括了URL处理、文件查找和代码以及本地化资源的动态装载。其他服务,例如分布式通知、取消(和重做)、格式化数据、使用系统日期和时间。正如所期待的一样,许多Application Kit类被设计成用于创建和管理显示在图形用户界面上的对象。在这些类中,包括了窗口、对话框、按钮、图表、文本框、滚动条、弹出式菜单、滚动图、应用程序(下拉)菜单,甚至是用于QuickTime流的电影播放界面。然而,Appl
44、ication Kit所拥有的特性与功能使得它远比作为一个用户界面对象的类集合更为有用。它有着对事件处理、应用程序管理与文档管理的成熟机制。它提供了对色彩、字体和打印进行管理与整合的应用方式(甚至提供了针对这些功能的对话框)。它允许以许多不同的图形格式来合成图像,还为绘画、矢量图处理提供了框架。它具有针对拼写检查、拖拽和复制粘贴等操作所提供的工具。其他的 Cocoa 框架还能用于支持脚本、网络管理和其他用途。2.4.2CarbonCarbon是一套源于早期的Mac OS API的编程接口,并已被修改以获得对Mac OS X的支持,尤其是支持Mac OS X的内核环境。Carbon继承了大部分M
45、ac OS已有的管理器和API,特别是继承了全部函数的70%,及典型应用程序所经常使用函数的95%。2.4.2.1 内存为了适应内核环境的某些特性,例如高级虚拟内存和内存保护,许多API,尤其是内存管理器(Memory Manager),都经过了一些改进,限制和取消了API对系统内存或临时内存等区域的使用。举例来说,在Mac OS X中分配的临时内存也被分配在应用程序地址空间中。尽管不再有访问系统堆栈的功能,但新提供的规则被允许分配共享内存和永久内存。另外,Mac OS X中的虚拟内存系统还引入了许多寻址模式方面的变化。2.4.2.2 硬件接口硬件接口常用于硬件低级访问的Mac OS 9管理器
46、,例如,ADB管理器、设备管理器和以太网驱动程序,没有在Mac OS X中实现。由I/O Kit提供的不同的设备驱动程序架构来协调所有对硬件设备的低级访问。2.4.2.3 资源因为在Mac OS X中没有ROM,所以访问在ROM中的资源的相关功能在Carbon中是不被支持的。资源管理器也对资源映射访问设置了更严格的约束。2.4.2.4 必须替换的管理器所列的Carbon技术现在已取代了先前的技术,使用新的库是必需的。以前现在AppleTalk Manager(AppleTalk 管理器)Open Transport(开放传输)PPC Toolbox(PPC工具箱)Apple events(Ap
47、ple事件)Standard File Package(标准文件包)Navigation Services(浏览服务)QuickDraw 3DOpen GLHelp Manager(帮助管理器)Carbon Help Manager(Carbon帮助管理器)Apple Guide(Apple手册)Apple Help(苹果帮助)Printing Manager(打印管理器)Carbon Printing Manager(Carbon打印管理器)各种驱动管理器I/O Kit(输入/输出工具箱)QuickDraw GXQuartz和Apple Type Services for Unicode Imaging(针对Unicode的Apple字体打印服务)Vertical Retrace Manager(垂直回描管理器)Time Manager(时间管理器)表3 必须替换的管理器2.4.2.5 推荐替换的管理器以前现在TextEditMultilingual Text Engine(多语言文本引擎)QuickDrawQuartzEvent Manager(时间管理器)Carbon Event Manager(Carbon事件管理器)Font Manager(字体管理器)Apple Type Services
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100