Tuesday, July 8, 2008

从技术层面谈谈Mac OS X的优点(转贴)

原帖转自 macfans.com.cn
http://www.macfans.com.cn/viewthread.php?tid=104387&pid=1338361&page=1&extra=page%3D1#pid1338361

作者 armadillo

从技术层面谈谈Mac OS X的优点
1.内核

这里说的内核并不只是系统kernel,还包括BSD子系统。Mac OSX源于jobs创建的Next公司的NestSTEP操作系统(这一点从Xcode文档的API名称可以看出来,很多都是NS开头的),前者则是源于最早由卡耐基·梅隆大学开发的mach系统(在Mac系统下依然可以看到/mach_kernel 这个文件,呵呵),这是一个微内核系统。Mach微内核主要负责底层应用,比如抢占式多任务,包括内核线程(Mac OSX用内核线程实现POSIX线程),内存保护,虚拟内存管理,进程间通信,中断管理,实时支持,内核调试支持,以及控制台I/O等等,与Mac OS9相比,这是一个巨大的飞跃(Mac OS 9一度被指责为没有内存管理机制,所有应用程序都在同一个进程中运行);

后来引入的BSD子系统则为Mac OS X带来了强大的网络功能以及完善的权限管理系统(当年BSDSystem的创举就在于使用独立的代码实现了完整的TCP/IP协议,在安装Mac OS X时会看到安装“BSDSubsystem”这一项)。这部分代码主要来源与FreeBSD代码库,少部分来源于OpenBSD以及NetBSD。BSD子系统可以说是Mac OS X的精髓所在,一方面它提供了对各种业界标准的兼容,另一方面则保证系统安全性。正是因为BSD子系统提供的良好兼容性,Mac OS X 10.5通过了Open Group的UNIX 03认证,也就是说,Mac OS X是一个标准的Unix操作系统。

此外还有I/O Kit等子系统,主要负责内核扩展(你可以把他理解为硬件的驱动程序)等等。




而把这些全部加起来,就是大名鼎鼎的Darwin(你可以使用uname来查看系统名称)。Apple开放了Darwin的源代码,大家可以在AppleDeveloper网站上下载到相应的源代码。默认情况下,Apple只提供了Console界面而不包括其他软件包;也有人通过port其他平台的软件包将Darwin打造成一个完整的Unix系统内核(XNU)。这方面的内容大家可以参考http://www.oreillynet.com/pub/a/ ... what-is-darwin.html(O‘Reilly MacDev Center)。

2.GUI

先来说说Linux以及其他一些*nix系统的图形界面。一般来说都以X-window(不是windows)作为其GUI的底层。Wikipedia有这样一段介绍:

“X provides the basic framework, or primitives, for building GUIenvironments: drawing and moving windows on the screen and interactingwith a mouse and/or keyboard. X does not mandate the user interface —individual client programs handle this. As such, the visual styling ofX-based environments varies greatly; different programs may presentradically different interfaces. X is built as an additional applicationlayer on top of the operating system kernel.”

通俗来讲,就是说X-window提供了图形界面的底层框架,各种应用程序可以利用x-window提供的这个框架来实现图形显示。目前有两个主要的X-window的实现,一个是XFree86,另一个则是X.org。前者由于从2004年开始不再以GPL协议开源,因此基本上流行的Linux发行版都转向了后者。Apple从10.3系统开始提供X11应用程序环境(大家一定还记得实用工具下面的X11.app),10.5之前一直使用XFree86,而在10.5则转向X.org(其实10.5下的X11.app是一个称为Xquartz的开源项目)。

扯远了,继续说Mac OS X。Mac OS X并没有采用X11作为其图形框架,Mac OS X默认的GUI称为Quartz(石英的意思,很遗憾,它不是开源的)。粗略来讲,Quartz通过显卡硬件加速实现了美观而复杂的图形显示效果。Quartz同样源于NextSTEP时代,当时为了给出版印刷行业提供便利,NextSTEP使用了Adobe的DisplayPostScript技术(这就是今天PDF所采用的技术)。这里不讲技术细节了,就来对比一下Windows系统。在Win98/2000时代,Windows采用GDI作为图形输出接口(Graphics DevicesInterface),但是这个东西不支持硬件加速,运行速度缓慢。举例来说,如果使用GDI输出视频,估计帧数只能达到个位数,因此微软在输出视频时采用了性能更高的、硬件加速的DirectX。在WindowsVista之前,Windows都是使用GDI进行图形输出,由于性能限制,不可能实现复杂的图形效果,而Mac OS X在诞生起所有2D输出都经过硬件加速,因此可以实现复杂的图像效果。至于Quartz Extreme,大家不妨将它理解为OpenGL在Mac OS X上的一个实现。

总的来说,以上是我觉得Mac OS X技术层面最为先进的两处。其实各个系统都有其可取之处,比如Windows对硬件的兼容性,Linux的可定制性,以及Mac OS X的美观性与易用性。没有最好的系统,只有最适合的系统。个人觉得Mac OS X在很多方面恰好提供了Windows和Linux两方面的长处,比如良好标准的兼容性(通过UNIX 03认证,绝大多数For*nix的软件都可以在Mac OSX下编译运行)以及美观的GUI。所以,还是希望大家能够多了解一些技术知识。本人才疏学浅,错误疏漏难免,还望大家多多指证,不胜感激!