EricNeon
发表于 2005-1-6 14:03:32
天哪,说了半天,终于开始讲微内核。汗~~
说起微内核就不得不提苹果公司。苹果公司在1982年开始研发他们的Classic Mac OS,整个系统从一开始就采用了Mach微内核来作为基础内核。Classic是一个100%的GUI系统,没有终端。苹果最初设计GUI的时候,发明了一个很先进的文件系统:一个文件包括了两个不同的“分支”(forks)。它分别把参数存在“资源分支”(resource fork),而把原始数据存在“数据分支”(data fork)里,这在当时是非常创新的。但是,因为不能识别此系统,这让它与其它操作系统的沟通成为挑战。
在苹果最初的几个系统中,GUI被设计成独占式的。这导致了内存管理和多任务以及功能扩展等现代操作系统必须必备的功能被严重限制了,从而引发了很多批评。当时Steven Jobs离开了Apple,独立开创了Next系统公司,并立志要创建最好的unix工作站。他把原先苹果公司采用的GUI重新设计,直接与mach结合,做成了Next Cube。Next Cube曾经是桌面上最酷的工作站,除了出色的硬件性能,Next还开发了全新的面向对象的编程环境叫做 NextStep. 这是当时最好的桌面环境了。当然代价就是高昂的价格,六千美元的起始价让许多商业用户转向了SUN 和HP. 不过由于NeXT 在学术界的声望,不少当时最优秀的计算机人才或多或少地受到了NextStep的影响,包括后来的Java ,在设计上受到了NeXT step很大的影响。世界上第一台web server就是运行在NeXT的工作站上。人们都一致同意,面向对象技术的完美体验就是使用NeXT step。NeXT Step在当时最大的卖点有两条:一是基于最纯正的面向对象的系统,二是因为NeXT Step的跨平台特性。Objective C是动态的编程语言所以它是基于Runtime来提供Meta Data (列如 selector, class information等等)。听起来是不是很熟耳(Java?), 可以说NeXTStep 是java出现前最出色的开发环境。至今还有很多基于NeXTStep的项目还在开发中。
bamfox
发表于 2005-1-6 14:27:05
太精彩了,重新看了一遍。该死要开会啦,等会回来把问题奉上,请指点哇 :-)
EricNeon
发表于 2005-1-6 14:27:37
90年代中期,随着互联网的兴起,windows的普及,苹果公司开始走下坡路。Apple当时已经有了一个用来对付windows 95的全新操作系统CopLand, 它因为没能及时赶上技术的需求不得不面对流产的危险。这个系统在GUI方面倒是继续领先潮流,“打印优先”的思想在这个系统被颠覆了。苹果试图用一些自己特有的技术影响整个IT业。但是市场已经向微软倾斜。
IBM与苹果合作开发了新的powerPC体系硬件,按照当时操作系统设计领域的思想,这种靠“独立体系+独立操作系统”的策略可以确保IBM与苹果立于不败之地。但是IBM的OS/2已经难以抵挡windows的入侵,苹果系统也不能适应网络的需求。
苹果的创始人之一乔布斯带着他的NeXTStep回到了苹果公司。两家公司合并后反击微软的策略很简单——立即发布一个新的GUI系统以拖延正面交锋的时间;从新开发一个GUI,以赶上网络应用的需求;GUI以多媒体为中心。这个策略很快被实施,苹果在最短时间内开发并发布了mac OS 8,利用这个系统与windows98抢夺多媒体用户。这个行动非常成功,这为苹果公司争取到了3年多的时间以开发一个全新的系统MAC OS X。
caihua
发表于 2005-1-6 14:36:30
mac OS 8有很多至今仍然值得学习的地方,亲自用过之后才能真正的叹为观止
EricNeon
发表于 2005-1-6 14:54:09
下面说说mac OS X,这也是我最喜欢的操作系统,甚至超过热爱linux。
MAC OS X构架于一个层次型的结构,底部是BSD kernel (Darwin)主要负责系统设备、 进程、 线程调度、网络和内存管理,在这之上是Quartz, OpenGL 和Quicktime负责图形和媒体处理, 而整个GUI 就构建在这个层次之上。darwin内核是mach3.0与FreeBSD、NetBSD内核以及专利的面向对象驱动层 IOKit 的结合。这个内核可以说是集合了微内核与宏内核最经典的部分,但是它应该归属于宏内核。
注意:darwin核心中,mach3.0是在最底层,上面的BSD提供了全功能。所以已经很难断定这个核心到底是属于微内核还是属于宏内核。
mac OS X的GUI提供了四种开发框架:Carbon(基于C/C++的开发环境,提供了对旧版mac os开发的兼容性。MAC OS X 中的Find就是基于carbon编写的。大多数商业软件也都是基于carbon, 可以说直到今天Carbon是OSX上用的最广泛的编程环境)、Cocoa(用Objective C编写的开发环境,它基于NextStep的开发环境。事实上很多Cocoa提供的服务能够被不同的编程语言调用,甚至是script language。Cocoa本身也使用了部分Carbon提供的功能。在某种程度上Carbon和Cocoa的关系类似于以前在windows平台上win32和MFC之间的关系)、J2SE(Mac 上也提供了标准的Java 2 标准版的所有功能,事实上苹果上的Java虚拟机的AWT/JFC部分也是基于Carbon的,这也是为什么COCOA Java和标准JAVA之间相互调用会有问题产生的根本原因)、posix(UNIX遍程的标准API,,它基于C,很多GUI 系统,如Xwindows也是基于posix)。
弄潮儿
发表于 2005-1-6 14:56:17
用过的第一台电脑是Apple II,后来一直用着X86系列的,到现在都没有用过mac os,这是我的一个遗憾。
EricNeon
发表于 2005-1-6 15:00:52
呵呵,我第一次接触电脑是在91年那会儿,也是一台Apple II,这款机器是苹果历史上最经典的机器。
EricNeon
发表于 2005-1-6 15:22:18
说到完全的GUI风格,Mac OS X应该属于后来者,真正抢眼的要算BeOS。早在1995年左右,苹果公司的一部分元老级开发人员不满于苹果的一些策略,独立成立了一个Be公司,开发了一种叫做BeOS的系统。第一个版本于1996年11月正式发布。
直到目前,很多所谓的GUI系统,包括windows在内,其实都不是完全的GUI。他们通过字符、模拟、衬线等方式来设计GUI,这种GUI都是基于字符型的。而BeOS则从内核开始完全独立开发,一个真正的GUI系统就这么出现了。BeOS的定位是powerPC体系上多位体应用平台,所以这导致这种系统很难普及。98年开始,Be公司发布了针对x86体系的BeOS,但是这仍然没有改变现状。更值得一提的是,BeOS是pc体系中最早实现64位的操作系统。
EricNeon
发表于 2005-1-6 15:37:39
时间进入21世纪,各种新型的GUI设计思想开始出现。其中苹果公司的Mac OS X进入开发流程,另一项试图将mac系统移植到PC上的努力也开始了,opendarwin项目正式启动。而将XFree86移植到mac的项目也开始发展起来,项目叫做Xdarwin。
前面说过,mac OS X 提供四种GUI的开发框架,一般mac OS X使用的是Cocoa开发体系,也就是NeXTStep的变种。而X window是属于posix的框架,与mac OS X默认使用的不同,所以不能直接在MAC OS X上架设X。Xdarwin项目让那些试图在mac上使用开源桌面的人的梦想得以实现。而opendarwin最新的成果表明,在x86体系上可以运行超过80%的mac软件。GUI从此开始走向统一。
EricNeon
发表于 2005-1-6 15:45:37
啊呀,休息一下。后面可以说说现在可以看见的趋势了。各位有什么问题?
caihua
发表于 2005-1-6 15:52:38
:roll: 我关心的是界面
肯定来过
发表于 2005-1-6 16:18:50
有个疑问啊
hurd据说也是基于mach微内核开发的,前一段时间好像看到说是这个mach很老了,没有人维护了,所以hurd似乎要转到oskit上了。
可是看EricNeon大侠的贴,似乎现存的几乎所有操作系统都是基于这个mach的。
怎么回事?怎么hurd会说mach很老了呢?
lilyerr
发表于 2005-1-6 16:24:39
说说现在可以看见的趋势了。
EricNeon
发表于 2005-1-6 16:31:08
也不是所有的操作系统都是基于mach内核的,BSD的核心我就还没说呢。而且BSD内核也是一个非常主要的核心。
mach是非常老了,只是这个核心做的很简洁,所以很多操作系统都是直接在这个内核的基础上做些改进的。
EricNeon
发表于 2005-1-6 16:46:32
dzy,不错,win97是在win98前面发布的。不过win me绝对不是在2000年发布的,我在99年就已经在用这个系统了。所谓的win98第三版是微软为联想做的OEM版本,界面是使用win me的。win2k应该是在99年发布的,XP我是在2000年底已经在使用beta版了。呵呵~到了2001年,我记得是6月,市面上开始漏出所谓神州D版。