mac os x操作系统结构分析_第1页
mac os x操作系统结构分析_第2页
mac os x操作系统结构分析_第3页
mac os x操作系统结构分析_第4页
mac os x操作系统结构分析_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 主要是以以下概念作为基础而研发的: “任务”即拥有一组系统资源的对象,允许“线程”在其中执行。 “线程”是执行的基本单位,拥有一个任务的上下文,并且共享任务中的资源。 “port”是任务间通讯的一组受保护的消息队列,任务可以对任何 port发送或接收数据 “消息”是某些有类型的数据对象的集合,它们只可以发送至 port,而非某特定任务或 线程 Mach继承了 Accent IPC的理念,基于共享内存的进程间通信机制(IPC) 。除了操作文件, Mach可以操作“任务” ,可以使大量的内核代码可以转移到用户空间,使内核变得更小。 在原本的 UNIX下,用户进程调用内核只能通过系统调用或陷入(trap) 。用户进程使用一个库 安排好数据的位置,然后软件触发一个中断,内核在初始化时会为所有中断设置 handler,因此程 序触发中断的时候,控制权就转移给了内核,在一些必要的检查之后即可得以进一步操作。 在 Mach下这交给了 IPC系统,用户进程先向内核申请一个 port的访问许可,然后利用 IPC机 制向这个 port发送消息。IPC 消息传递机制的应用为线程和并发提供了很好的支持。进程之下是 多个线程,线程作为 IPC机制的单元,Mach 得以在消息被处理时控制线程睡眠或唤醒。这允许系 统将进程分布于多个处理器上,消息直接通过共享内存实现。 基本的 Mach内核由以下几个部分组成: 文件系统 从体系结构上看,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 驱动器、被装载的网络服务器以及硬盘和它们的分区等。 网络 内核环境实现了许多的本地网络协议以及功能。作为网络内核扩展(NKE),实现了一些 Mac OS X的网络功能和协议栈。并且可以在不进行重新编译和重新连接的情况下动态地对内核的网络底层 结构进行扩展。 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 支持下面的特性: 动态和自动的设备配置(即插即用) 支持很多新型设备,包括图形加速和多媒体设备 电源管理 内核的强制内存保护分离核心级和用户级程序的地址空间 抢占式多任务 对称多处理 对不同类型的设备可以共享的公共功能进行抽象 增强了的开发体验新的驱动程序易于书写 2.2 应用服务层(Graphics and Media) 应用服务包含了那些与图形用户界面有关的系统服务,它们对所有的应用程序环境开放。应用 服务层包括 Quartz、QuickDraw、OpenGL 和一些基础的系统管理器。这个环境负责处理屏幕渲染、 打印、事件处理、低级别的视窗和指针管理。并且它也包含了用来实现图形用户界面的库、框架和 后台服务器。 2.2.1 图形和视窗环境 Mac OS X的抢占式应用服务是对图形和视窗环境的一种补充。从它的本质来说,应用程序必 须通过图形用户界面来显示它的视窗,并允许用户来使用它的控件。图形和视窗环境“无偿”提供 给应用程序这些基本能力,以减轻它们在自己的环境中实现这些功能的负担。除了对屏幕上所显示 的视窗进行文本和图像渲染(以及文本和图形打印) ,该环境也提供了重要的低级别功能,例如: 初始事件路由以及指针管理。 Quartz 2D Quartz的 Quartz 2D是一个具有矢量特性的图形库。它的 API允许您通过指定一系列命令和 数学程式来生成文本与图像。这些命令和程式用来在二维空间内绘制线段,几何形状,颜色,阴影, 半透明效果和其它图形属性,而您无需为每一个特定像素指定属性。作为结果,一个几何形状可有 效地以一系列路径和属性的方式来定义,而不是以位图的方式来定义。 通过使用矢量,Quartz 2D也能使用一种坐标系来作为绘画的参照,比方说这种坐标系是以英 寸或厘米为单位的,而不是基于像素栅格。这种坐标体系很灵活,允许不同的度量标准,并且当它 不与任何一个屏幕分辨率绑定时,它具有一定程度的显示独立性。它还使用了浮点坐标。优先于 Quartz Compositor的合成,Quartz 2D 把以坐标系来表现的矢量图像信息转化为像素值。 Quartz 2D API是设备独立的,这意味着,绘画操作的最终目的文件可以是窗口位图,也可以 是可移植文档格式(PDF)文件、PostScript 文件或其它输出格式。当使用 QuickDraw或其它输入机 制来显示 PDF文件时,应用程序可以直接或间接地调用 Quartz 2D API 用于 Quartz 2D的主要输入方式是由 QuickDraw和本机 C API所生成的绘画命令和程式。 (将 来,更多的前端 API可能会被支持)使用 QuickDraw的应用程序可以通过 CGContextRef接口来调 用 Quartz 2D,从而获得它的功能。而 QuickDraw使应用程序可以由 GrafPort接口来得到 CGContextRef。 来自 QuickDraw或本机 API的命令和程式被即刻转换为所需的输出格式,这些输出格式既可以 是屏幕渲染的位图数据、PostScript(PostScript 打印机的打印数据格式) ,也可以是其它类型打 印机的光栅数据。打印预览时,还可以自动发布 PDF。将来,更多的后端转换器可能会被支持,例 如:绘图仪。 正如前一段所提出的,Quartz 2D是 Mac OS X打印系统的底层引擎。打印工作常常被分成二 个步骤。Quartz 2D用于解释那些由本机 C或 QuickDraw API所构建的文本和图形,并将它们保存 为 PDF格式(主要的脱机打印格式) 。这时,PDF 可再次通过 Quartz 2D,将其转换为适当的输出格 式。 Open GL 开放图形库(Open Graphics Library,OpenGL)是个定义了一个跨编程语言、跨平台的应用 程序接口(API)的规范,它用于生成二维、三维图像。 OpenGL规范描述了绘制 2D和 3D图形的抽象 API。尽管这些 API可以完全通过软件实现,但它 是为大部分或者全部使用硬件加速而设计的。 OpenGL规范描述了绘制 2D和 3D图形 OpenGL的 API定义了若干可被客户端程序调用的函数, 以及一些具名整型常数(例如,常数 GL_TEXTURE_2D对应的十进制整数为 3553) 。虽然这些函数的 定义表面上类似于 C编程语言,但它们是语言独立的。的抽象 API。尽管这些 API可以完全通过软 件实现,但它是为大部分或者全部使用硬件加速而设计的。 OpenGL不仅语言无关,而且平台无关。规范只字未提获得和管理 OpenGL上下文相关的内容, 而是将这些作为细节交给底层的窗口系统。出于同样的原因,OpenGL 纯粹专注于渲染,而不提供 输入、音频以及窗口相关的 API。 QuickTime QuickTime是一种交互式多媒体环境,具有图形环境和应用程序环境上的功能和特性。 Quartz Compositor Mac OS X的 Quartz Compositor层由视窗服务器和由视窗服务器所实现的(私有的)系统编 程接口(SPI)所组成。这一层负责对初始屏幕显示、视窗合成与管理、事件路由和指针管理进行响 应。 视窗服务器是一个单独的系统范围内的进程,用于协调低级别的视窗动作,并强制保持在屏幕 上所显示视窗的基本一致性。它是一个轻量级的服务器,因为它自己不能进行渲染,但可以与位于 其上层的客户图形库进行通讯。从绘画模型方面来说,它是“不会发表意见的” 。 视窗服务器与其它系统服务和库几乎没有依赖关系。它依赖于内核环境中的 I/O Kit(尤其是, 用 I/O Kit构建的设备驱动程序) ,为的是与框架缓冲器、输入设备的底层结构和输入输出设备进 行通讯。它也与核心服务的某些框架相链接,以获取进程管理服务,如基本进程的激活。 视窗服务器的一个首要职责是视窗合成。当视窗在被绘制、被重画、覆盖和被覆盖时,由它来 合成每一个应用程序的视窗像素。每个视窗都被描述成一幅位图,它包括了半透明(alpha 通道) 和抗锯齿信息。位图作为缓冲器允许视窗服务器去“记住” 一个应用程序的视窗内容,并在不干 涉应用程序的情况下将它进行再合成。然而,视窗服务器(Quartz Compositor)没有记忆那些被图 形库(例如 Quartz 2D)用来创建视窗和其它图象的矢量信息。取而代之的是,位图被应用程序和视 窗服务器所共享,应用程序直接对共享位图进行绘画操作,并相应地由视窗服务器来合成该位图。 在它的 Quartz Compositor组件中,Quartz 以一个分层式的合成引擎来作为视窗系统的模型。 传统的视窗系统使用“交换“模型,在这个模型中屏幕上的每一个像素完全属于一个视窗(或桌面) 。 因为这种模型,转变就必然很突然;举个例子来说,当您关闭一个视窗时,它会立刻消失。在另一 方面,一个分层式合成视窗系统基于“图像(视频)混合”模型。在这个模型上,屏幕中的每一个 像素都能够被视窗和视窗间实时共享(尤其是在半透明和抗锯齿特性上) 。这种模型允许平滑地在 图形用户界面的状态间进行转换,这是 Aqua体验所带来的与众不同的特性之一。 2.2.2 GUI:Aqua Aqua是 Mac OS X的 GUI之商标名称,以及在这个 GUI主要使用的布景主题(另外一个布景主 题是拉丝金属,Brushed metal) 。它是以水的布景主题为基础,如同它的名字可以猜想到的,有类 似液滴的元件,且丰富地使用半透明和反射效果。 2.2.3 进程管理器 Mac OS X中,由进程管理器来管理所有的进程。它对共享资源的访问进行控制,管理应用程 序的调度和执行,并允许多个应用程序共享 CPU时间和其它资源。当用户双击一个应用程序或一个 文档图标时,Finder 使用进程管理器来启动应用程序。进程管理器也提供了许多机制,允许您控 制进程的执行,启动进程并获得有关进程的信息。 2.2.4 Carbon事件管理器 Carbon事件管理器把事件分配给合适的事件处理器,这种分配是基于事件类型和目标应用程 序环境的。视窗服务器把它接收到的事件放到目标应用程序进程的运行循环端口中。Carbon 事件 管理器从端口获得事件,把它打包成合适的形式,并把它传递给应用程序(可以是 Carbon、Cocoa 和 Java)事件处理结构的最低层“容器” 。要实现这一点,Carbon 事件管理器需要经常确定哪个窗 口是当前的活动窗口,在窗口上是否有键盘输入的焦点,等等。 2.2.5 Apple事件 Apple事件是一种高级事件,应用程序可以把它发送到本地或者远程计算机上的其它应用程序 中,甚至可以发送给它们自己。Apple 事件是 Mac OS X中应用程序间通讯的主要机制。应用程序 主要用它们来对其它应用程序的服务和信息发出请求,或者对这些请求提供响应。 系统级的脚本语言 AppleScript,作为一项相关的技术同样也是 Mac OS X的一部分。用户可 以使用 AppleScript发送 Apple事件给应用程序。 2.2.6 剪贴板 Mac OS X中的剪贴板(也被称为“粘贴板” )是一种后台服务程序,它允许在应用程序间转移 数据。在某些方面它与 Mac OS 9中的剪贴板相似,但也有一些不同的地方。Mac OS X中的剪贴板 可以对同一数据保留多种表现形式。它被所有正在执行的应用程序所共享使用,剪贴板中包含了用 户进行剪切或复制的数据。当一个应用程序要把数据传送给另一个应用程序时,剪贴板同样也能帮 助实现这一功能。剪贴板用于复制-剪切-粘贴操作,并在拖拽操作中作为一种数据传送机制。同时 它也被服务用于在应用程序间的数据传送。 2.3 核心服务层(Frameworks and UI) 在核心服务层中,通常的服务与图形用户界面没有直接的联系。核心服务层包含了一些跨环境 执行的与编程相关的基本抽象概念,例如:字符串、运行循环和集合。在核心服务中,也有用来管 理进程、线程、资源、虚拟内存和用来与文件系统进行交互的 API。 2.3.1 核心基础(Core Foundation) 4 Core Foundation是一种提供底层软件服务的框架(CoreFoundation.framework) ,所提供的 这些底层软件服务不论对应用服务、应用程序环境还是对应用程序本身都是十分有用的。使用 Core Foundation所带来的一个好处就是:提高了在不同环境和层中的框架、库和应用程序之间共 享代码和数据的性能。Core Foundation也能够通过 Unicode字符串来容易地实现国际化,并提供 了用于实现操作系统独立性的抽象概念。 在 Core Foundation中需要使用隐含类型,您可以用这些类型来创建“对象” ,每一个对象都 有它自己的独立标识和值(或一系列值) 。在创建这些对象时,Core Foundation为内存分配提供 了特定工具。并且,它还具备了一些通用基本类型和多态函数,用以实现类型间操作。Core Foundation包括了与一些编程实体相符合的隐含类型,这些编程实体如字符串、数组、代码字典、 日期、整数和树。它还具备了一种用于插件的标准体系结构,以及一种用于动态查找、装载代码和 位置相关资源的机制(和一套与其相对应的 API) 。另外,它所拥有的服务能够通过 URL访问本地 和远程资源,设立分布式通知中心,读写 XML属性列表,解析 XML以及读写每个用户和每台机器的 预置参数。 表 1列出了 Core Foundation的服务和它的相关隐含类型: 服务 类型 描述 基本服务(Base Services) CFAllocator, 基本类型 定义了在整个 Core Foundation API中 被使用的基本类型和多态函数。 束服务(Bundle Services) CFBundle 提供了一种极好的方法,用来组织、定 位程序中不同类型的资源,包括:图像, 声音,本地化字符串,和可执行代码。 集合服务 (Collection Services) CFArray, CFDictionary, CFTree, CFSet, CFBag 提供了对于常用数据结构连同相关功能 的一种高级抽象,这些数据结构包括: 数组、字典(关系数组或向量)和树。 通知服务 (Notification Services) CFNotificationCenter 一种实现分布式通知的机制,它允许一 个进程发送消息(通知)给同一台机器 上的另外一个进程。 插件服务(Plug- in Services) CFPlugIn 为 Mac OS X应用程序(和 Mac OS 9应 用程序)提供了一种标准插件体系结构。 预置服务 (Preferences Services) CFPreference 允许程序保存和获取用户的预置参数。 属性列表服务 (Property List Services) 提供了一种把数据组织成某种形式的方 法,这种组织形式具有高度的结构化, 可传递,可存储,和易于访问的特点, 并能保持尽可能的高效。属性列表 API 允许基本数据类型的分层组织结构与标 准 XML之间的相互转换。 运行循环服务 (Run Loop Services) CFSocket, CFRunLoop (and related) 提供了低级事件处理和分派服务。 字符串服务 (String Services) CFString, CFCharacter- Set 提供了一整套快速高效的字符串处理和 转换功能。字符串服务提供了对 Unicode的完全支持,因此大大简化了 国际化的过程。它同样也增强了字符串 数据在 Carbon和 Cocoa应用程序之间 的共享。 URL服务(URL Services) CFURL, CFURLAccess 允许程序通过 URL来访问储存在本地或 远程的资源。 实用工具服务 (Utility Services) CFDate, CFTimeZone, CFNumber, CFUUID, CFByteOrder 提供了各种杂项服务,例如:日期和时 间的计算和显示,数字的“对象” 封 装,字节交换和 UUID的生成。 XML解析器(XML Parser) CFXMLParser 为读取和分析 XML文档的数据提供了一 个 XML解析器。 表 1 Core Foundation服务 2.3.2 Carbon核心(Carbon Core) Carbon 核心是 CoreServices.framework的一部分,包括许多 Carbon管理器,并为所有应用 程序环境提供低级服务。这些服务包括协作和抢占线程、资源管理、内存管理和文件系统操作。 管理器 描述 替身管理器(Alias Manager) 使用替身来帮助定位指定的文件、目录或者卷。提供了创建和解 析文件系统替身记录的规则。 集合管理器 (Collection Manager) 提供了一种存储信息集合的抽象数据类型。 组件管理器 (Component Manager) 使得您的应用程序在运行时能够找到并使用不同的软件对象(组 件) 。同时允许创建和管理组件。 日期,时间和度量单 位工具(Date, Time, and Measurement Utilities) 允许应用程序获取和处理日期时间、地理位置、时区和度量单位。 文件管理器(File Manager) 赋予了程序访问储存在物理卷(包括硬盘,CD,和 Zip碟)上的 文件的能力。它能适应 HFS+(Mac OS Extended)、HFS(Mac OS Standard)、UFS、NFS 和其它被支持的文件格式。文件管理器能 用于创建,打开,更新,保存和关闭文件;搜索特定的文件或目 录;获取有关文件或目录的信息;和执行其它与文件有关的高级 操作。文件管理器也支持 Unicode,并且它的 API是线程安全的。 文件夹管理器(Folder Manager) 允许程序搜索和创建文件夹,并且控制文件在文件夹之间的移动。 它新增了对域的支持。 内存管理工具(Memory 提供了一些实用的专用程序,用来检测或控制内存环境的某些方 Management Utilities) 面。 内存管理器(Memory Manager) 在应用程序的受保护地址空间内控制内存的动态分配。它包含了 用来分配共享内存和永久内存的新规则,以及与 Mac OS X中虚 拟内存相关的各项功能。 多进程服务 (Multiprocessing Services) 使程序能够创建和管理单独的抢占式时序线程。另外,它还包含 了同步服务和原子指令。 资源管理器(Resource Manager) 提供了一些实用的专用程序,用来检测或控制内存环境的某些方 面。 文本编码转换管理器 (Text Encoding Conversion Manager) 提供了两个工具-文本编码转换器和 Unicode转换器,应用程序 可以用它们来实现文本转换。 文本工具(Text Utilities) 提供了一整套工具用来实现对文本的不同操作,含概了从字符串 排序到单词边界查找的各种操作。 线程管理器(Thread Manager) 允许程序创建和管理协同式时序线程。 时间管理器(Time Manager) 赋予程序以一种方法,用于在指定时间定时执行程序(可以是只 执行一次,也可以是重复多次) 。这种执行时间相关任务的机制 是与硬件相独立的。 Unicode工具 (Unicode Utilities) 实现对 Unicode文本的多种操作,包括 Unicode key 翻译。 表 2 核心服务层中的 Carbon管理器 2.3.3 CFNetWork CFNetwork是 CoreServices.framework的一部分,是用于用户级联网和通讯的首选 API。CFNetwork 提供了一套用于生成、串行化、非串行化和管理协议消息的函数。这些协议消息 可以在客户端和服务器间进行常规的交换。CFNetwork 使得您不必为了要交换协议消息而去学习和 实现一个协议的具体细节。CFNetwork 的设计支持很多协议,包括:HTTP、SMTP、LDAP 和 FTP。CFNetwork 的当前实现提供了处理 http消息的功能。 2.3.4 Web服务 Web服务是 CoreServices.framework的一部分,允许您调用互联网或本地企业内部网上的远 程程序。Web 服务使用如 SOAP(Simple Object Access Protocol,简单对象访问协议)和 XML- RPC的标准协议,通过 HTTP传递服务请求。这些标准协议允许在其它完全不同的计算平台之间进 行通讯,也允许创建分布式服务。Web 服务核心框架定义了一组 API,用来发送请求给使用那些协 议的远程服务器和处理有关响应。 应用程序开发人员也可以把 Web服务机能结合到他们使用了 Apple Event管理器和 AppleScript的应用程序中。 2.3.5 Open Transport Open Transport是 CoreServices.framework中的 Carbon兼容性 API,它提供了对传统联网和 通讯技术的支持。Open Transport使应用程序能够同时使用更多的网络系统(例如:AppleTalk 与 网络打印机进行通讯,TCP/IP 连接到互联网) 。有了 Open Transport,用户就可以保存和修改不同 的网络配置,也可以方便地在它们之间进行切换。 Mac OS X中的 Open Transport版本支持 Mac OS 8和 Mac OS 9中那些普遍被使用的接口。例 如,它支持 IP协议的 Open Transport终端规则。尽管如此,它不包括面向连接并基于事务的终端 特性(这将只影响到 AppleTalk协议的用户,例如 ASP) 。而且它既不支持本地 XTI(X/Open Transport接口)接口也不支持 BSD流的接口。 来自于 Open Transport早期版本的一个重要变化是为许多功能附加了客户端上下文参数。每 一个 Open Transport客户端现在都拥有它自己的上下文,以使得 Open Transport可以代表客户端 来跟踪它所分配的资源。在这种情形中,客户端是一个应用程序或共享库,而资源则是像终端、计 时任务和内存块那样的对象。 2.4 应用程序环境(Applications) 5 一个应用程序环境是由框架、库和服务(和相关的 API)来组成的。它为使用这些相关 API所 开发的程序在运行时的执行,提供了必要的环境支持。应用程序环境依赖于系统软件的所有基础层。 2.4.1 Cocoa6 Cocoa应用程序环境基于两个面向对象框架:Foundation 基本框架 (Foundation.framework)与 Application Kit 应用程序工具箱框架(AppKit.framework) 。这些 框架都提供了面向 Java和 Objective-C的 API(其中大部分的 Java类只是简单地“桥接”了他的 Objective-C实现) 。 对于核心服务层和应用服务层的各自关系来说,Foundation 与 Application Kit在某些方面 有着相似之处。Foundation 框架中的类提供了不对用户界面产生影响的对象和功能;Foundation 框架直接基于 Core Foundation。而 Application Kit 中的类提供了所有能够影响用户界面上所 呈现内容的对象和动作,例如:窗口和按钮、对鼠标和键盘的响应。 Application Kit 直接依赖 于 Foundation框架。 Foundation框架的类可归为以下几种类别: 用于基本编程类型和操作的对象包装(或“助手(helper) ”) ,包括:字符串、数组、字典、 数字、字节交换、解析和异常处理等。 用于内核环境实体和服务的对象包装,例如任务、端口、运行循环、计时器、线程和锁。对象 相关功能,尤其是内存管理(自动释放缓冲区) ,远程调用、存档和串行化。文件系统和 I/O功能, 包括了 URL处理、文件查找和代码以及本地化资源的动态装载。其他服务,例如分布式通知、取消 (和重做) 、格式化数据、使用系统日期和时间。 正如所期待的一样,许多 Application Kit类被设计成用于创建和管理显示在图形用户界面上 的对象。在这些类中,包括了窗口、对话框、按钮、图表、文本框、滚动条、弹出式菜单、滚动图、 应用程序(下拉)菜单,甚至是用于 QuickTime流的电影播放界面。 然而,Application Kit所拥有的特性与功能使得它远比作为一个用户界面对象的类集合更为 有用。 它有着对事件处理、应用程序管理与文档管理的成熟机制。 它提供了对色彩、字体和打印进行管理与整合的应用方式(甚至提供了针对这些功能的对话框) 。 它允许以许多不同的图形格式来合成图像,还为绘画、矢量图处理提供了框架。 它具有针对拼写检查、拖拽和复制粘贴等操作所提供的工具。 其他的 Cocoa 框架还能用于支持脚本、网络管理和其他用途。 2.4.2 Carbon Carbon是一套源于早期的 Mac OS API的编程接口,并已被修改以获得对 Mac OS X的支持, 尤其是支持 Mac OS X的内核环境。Carbon 继承了大部分 Mac OS已有的管理器和 API,特别是继承 了全部函数的 70%,及典型应用程序所经常使用函数的 95%。 内存 为了适应内核环境的某些特性,例如高级虚拟内存和内存保护,许多 API,尤其是内存管理器 (Memory Manager) ,都经过了一些改进,限制和取消了 API对系统内存或临时内存等区域的使用。 举例来说,在 Mac OS X中分配的临时内存也被分配在应用程序地址空间中。尽管不再有访问系统 堆栈的功能,但新提供的规则被允许分配共享内存和永久内存。另外,Mac OS X中的虚拟内存系 统还引入了许多寻址模式方面的变化。 硬件接口 硬件接口常用于硬件低级访问的 Mac OS 9管理器,例如,ADB 管理器、设备管理器和以太网 驱动程序,没有在 Mac OS X中实现。由 I/O Kit提供的不同的设备驱动程序架构来协调所有对硬 件设备的低级访问。 资源 因为在 Mac OS X中没有 ROM,所以访问在 ROM中的资源的相关功能在 Carbon中是不被支持的。 资源管理器也对资源映射访问设置了更严格的约束。 必须替换的管理器 所列的 Carbon技术现在已取代了先前的技术,使用新的库是必需的。 以前 现在 AppleTalk Manager(AppleTalk 管理器) Open Transport(开放传输) PPC Toolbox(PPC 工具箱) Apple events(Apple 事件) Standard File Package(标准文件包) Navigation Services(浏览服务) QuickDraw 3D Open GL Help Manager(帮助管理器) Carbon Help Manager(Carbon 帮助管理器) Apple Guide(Apple 手册) Apple Help(苹果帮助) Printing Manager(打印管理器) Carbon Printing Manager(Carbon 打印管理器) 各种驱动管理器 I/O Kit(输入/输出工具箱) QuickDraw GX Quartz和 Apple Type Services for Unicode Imaging(针对 Unicode的 Apple字 体打印服务) Vertical Retrace Manager(垂直回描管理 器) Time Manager(时间管理器) 表 3 必须替换的管理器 推荐替换的管理器 以前 现在 TextEdit Multilingual Text Engine(多语言文本引擎) QuickDraw Quartz Event Manager(时间管理器) Carbon Event Manager(Carbon 事件管理器) Font Manager(字体管理器) Apple Type Services for Fonts(Apple 字体打印服务) QuickDraw Text(QuickDraw 文本) Multilingual Text Engine(多语言文本引 擎)或 Apple Type Services for Unicode Imaging(针对 Unicode的 Apple字体打印服 务) Resource Manager(资源管理器) Interface Builder Services(IB 服务) Script Manager(语系管理器) Unicode Utilities(Unicode 工具) 表 4 推荐替换的管理器 普通变化 Carbon中,多种管理器中的许多功能已经被改变或删除。 数据结构 为了确保系统数据的完整性以及支持通过抢占线程来访问所有系统服务的功能,Carbon 限制 了直接对数据结构进行访问。取代了以往通过函数来返回指向那些可被解除引用的数据结构的指针 和句柄,现在的 Carbon提供了可用于获取和设置字段数据的 accessor函数,也包括了能用于创建 和解除数据结构的一些函数。 预定义过程(Definition procedures) 在 Carbon中,视窗管理器、菜单管理器、控制管理器和列表管理器仍然允许用户创建和使用 标准的和自定义的预定义过程(WDEF、MDEF、CDEF 和 LDEF) ,但您必须确保把它们编译为 PowerPC 代码。另外,这些管理器为预定义过程的创建与打包提供了新的规则。 2.4.3 Java JDK Java应用程序环境允许您在 Mac OS X上开发和执行 Java程序,包括 100%的纯 Java应用程序 和 applets。该环境由一个统一的工业化标准所实现-那就是包括了 Java虚拟机(VM)在内的最 新版本的 Java开发工具(JDK) 。因为这个原因,在该环境下生成的 Java应用程序是可移植的。您 可以把它复制到一个硬件完全不同,操作系统也不同的机器上,只要该系统具有兼容的 Java 虚拟 机,您的应用程序就可以在该系统上运行。另外,Java applet可以在任何性能合适的互联网浏览 器中运行。 Cocoa应用程序环境中包含了适应 Application Kit和 Foundation框架的 Java包。这些包允 许您使用 Java作为开发语言来开发 Cocoa应用程序。 (出于某种原因)您可以混合使用这些包里的 API和本机 Java API(不包括 AWT或 Swing API)。关于 Cocoa应用程序环境的更多内容,参见 “Cocoa”。另外,苹果公司的 Jdirect和 Sun公司的 JNI(Java Native Interface)编程界面允许 您的 Java程序调用其他框架,包括 Carbon。并且您可以使用 QuickTime for Javala来为 Mac OS 和 Windows平台编写多媒体 Java应用程序。 Mac OS X内的 Java应用程序环境有三个主要的构件: 开发环境,包括 Java编译器(javac)和 Java调试器(jdb)以及其它工具,包括: javap、javadoc 和 appletviewer等。这个“命令行“环境需要一个 BSD shell,例如它可以由苹果 的终端应用程序来提供。苹果还提供了 Project Builder应用程序,作为这个环境的前端开发工具, 而且第三方也可以使用他们自己的前端开发工具。命令行工具位于 JavaVM.framework/Commands子 目录下,并提供符号连接来将其连接到目录/usr/bin 中。运行时环境由 Sun公司的高性能 Hotspot Java虚拟机、 “just-in-time”(JIT)字节码编译器和基本的 Java包所组成。Java 虚拟机位于 /System/Library/Frameworks/JavaVM.framework/Libraries目录下。这些基础包包括 ava.lang、java.util、java.io 和 ;它们都在同一框架下的 Classes目录中的 classes.jar归档文件中。一个应用程序框架含有为建立一个 Java应用程序所必需的类。 这些包中较为重要的是 java.awt和 javax.swing,通常它们被称为 AWT(Abstract Windowing Toolkit) 和 Swing。AWT 包实现了标准的用户界面组件(例如:按钮和文本框) 、基本绘图组件、 布局管理器和事件处理机制。Swing 包则极大的扩展了这套用户界面组件。这些组

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论