没有合适的资源?快使用搜索试试~ 我知道了~
首页Ellen Hancock与Mac OS X:从IBM到Apple的转折点
"《Mac OS X背后的故事 - 精美杂志版》深入探讨了Mac OS X这一操作系统的发展历程,特别聚焦于关键人物Ellen Hancock。Ellen曾是IBM的高管,她在1995年跳槽至National Semiconductor,并在此期间推动了CompactRISC架构,这为后来的ARM7系列奠定了基础。然而,真正让她与Mac OS X紧密相连的是1997年她加入苹果公司时的重要决策。 在苹果面临困境时期,当时的CEO Gil Amelio说服Ellen离开National Semiconductor,共同应对Apple的危机。当时的Apple面临着软件问题,特别是Mac OS在功能和现代操作系统标准上的落后。为了解决这个问题,公司决定放弃原计划的Copland项目,转而引入了NeXT操作系统,这一转折点对于Mac OS X的诞生至关重要。 Mac OS X的开发始于1997年,以解决旧系统的不足,特别是提出了色彩支持和多任务功能等长期目标。这些目标不仅体现在短期的产品升级中,如颜色增强,还预示着未来操作系统的核心理念。作为技术总监,Ellen Hancock的影响力贯穿整个Mac OS X的演化过程中,她的决策直接影响了Mac OS从麦金塔时代的单一任务系统转变为后来的多用户、图形化的现代化操作系统。 《Mac OS X背后的故事》系列文章不仅讲述了操作系统的技术变迁,还揭示了苹果高层管理决策的智慧与挑战,对于了解Mac OS X的发展脉络和对现代科技产业的影响具有重要价值。无论是对iOS开发者还是对科技爱好者而言,都是不可多得的深入了解Mac OS X历史和幕后故事的珍贵资料。"
资源详情
资源推荐
章 3
Mac OS X 背后
的故事(三)
Mach之父Avie
Tevanian
节 1
Mach之父Avie Tevanian
1975年,美国罗彻斯特大学纽约分校,一组研究员正在做一个
名为RIG(Rochester’s!Intelligent!Gateway)的项目,它由
Jerry!Feldman主持设计。RIG的目标是给所有本地以及远端的
计算设备(比如磁盘、列印机、磁带、绘图机等)提供一组统
一的访问方式,其作业系统称为Aleph。为了实现所需要的功
能,Aleph的内核主要构建了一个进程交互
(Interprocess!Communication,IPC)的机制。RIG的各进
程,只要设置了目标端口,就可以彼此间发送信息。RIG项目
没过几年就被判了死刑,主要是缺少很多有用的功能,比如端
口没有保护机制,一次最多只能发送2KB大小的信息(受硬件
限制),也没有很好的网络支持等。不过在20世纪70年代,这
个系统依然代表着当时作业系统设计的先进水平,比如除了进
程交互外,每个进程还有内存保护的功能,这足以让20世纪90
年代末都没有做出内存保护技术的Apple公司汗颜。
该项目后来失败了,随后在1979年,RIG的Richard!Rashid博
士毕业到卡内基-梅隆大学当教授,开始做Accent项目。它是一
个网络作业系统,于
1981年4月开始活跃开
发。受RIG的影响,
Accent系统的亮点也在
于可以使用IPC,而且
解决了很多RIG的不
足。比如每个进程有
4GB的虚拟内存空间,
而且甚至连内核自已都
可以被存入缓存页面,
内存有先进的更新前拷贝(Copy-on-Write)功能,可以实现
进程间大信息的传送等。读者可以把Accent理解为支持虚拟内
存技术,并且具有网络透明IPC功能的RIG内核。
但过了几年,开发者们越来越对Accent失去兴趣。在1980年
初,很多人觉得多核计算是计算机未来发展的潮流,但Accent
内核在设计时并没有考虑到这些问题。而且,随着许多实验室
纷纷购置性能更强劲的计算机,这就意味着Accent需要移植到
新的目标架构上。此外,Unix正大行其道,不管是在作业系统
理论上还是在用户程序上,都成为最为流行的作业系统模式,
而Accent并不是一个Unix系统,所以无法享受Unix世界的诸多
美好。为了解决这个问题,研究人员决定把所有设计推翻重
来,于是就有了一个全新的系统。
13
在匹兹堡的一个雨天,卡内基-梅隆大学的Avie!Tevanian,此
系统的最主要开发者,正打着伞和同学们在去吃午饭的路上。
他们一边绕着无数的泥塘,一边构思给这个新系统取什么名字
好。灵感突来,Avadis!Tevanian建议把这个系统叫作Muck,
引得同学们哈哈大笑。后来,Richard!Rashid和一位意大利同
事Dario!Giuse说起这玩笑,结果这位同事不经意地把Muck发
为Mach,遂把Richard!Rashid笑翻,伟大的Mach系统因此得
名。
Mach是一个受Accent启发而搞出的Unix兼容系统。那年,
Unix已经十六岁,而且依然是作业系统理论与实践开发的主要
阵地。Unix内核由于新加入的功能越来越多,变得越来越复
杂。而Mach的一个主要目标就是尽量缩减Unix的各项服务,
以使内核变得简单可维护。此项目从1984年开始,目标主要是
包含完整的多任务支援、良好的硬件移植性,并要把大量服务
移出内核作为跑在内核上的服务,以及提供与Unix的兼容性。
Mach使用纯C编写,所以在一定程度上保证了可移植性,这事
实上为后面的NeXT向PowerPC移植以及2005年的向Intel移植
提供了很重要的前提。而为了缩减内核该管的任务,Mach做得
很绝,只提供内存和处理器管理。类似于档案系统、网络、输
入输出等功能都作为单个的系统进程,独立执行于内核之上。
Mach的开发过程以4.3BSD作为起点,以RIG的Accent作为参
考,采纳DEC的虚拟内存设计思路,逐步开发,以新写的代码
代替BSD的代码。两年后的1986年,虽然没能把系统服务完全
分离于内核之外,但已颇见成效。Mach第一版大功告成,组员
发表会议论文,成为操作系统史上里程碑式的经典,引发操作
系统业界的“微内核”学潮,如今学习作业系统设计的皆需学习
此文,二十五年来被引用一千二百余次。
这篇文章主要讲了两方面内容:IPC和虚拟内存。在IPC方面,
Mach把复杂的消息传送机制分为四个独立的清晰概念—任务、
线程、端口、信息。任务是拥有一组系统资源的对象,允许线
程在其中执行;线程是执行的基本单位,拥有一个任务的上下
文,并且共享任务中的资源。
由于该论文的影响力,所以项目得到了
OSF(Open!Software!Foundation)在内的很多投资。当然
了,学术和工程永远存在差距,所以即使是最受欢迎的
Mach!2.5其实仍然是一个包括大多数BSD服务层的单内核。但
包括NeXTSTEP、OSF/1在内的很多操作系统都采用Mach作为
其内核技术,原因是广大研究人员依然相信微内核代表着未
来。虽然Mach!2.5的效率比传统的Unix系统稍低一些,但研究
者们表示情绪淡定,因为Mach支持多处理器系统,可以利用多
线程把任务处理得飞快,相比之下其他Unix内核并没有多处理
器的完善支援,因此Mach效率稍低完全可以接受。但随着真正
把Mach和BSD服务完全脱离的Mach!3微内核面世,研究人员
们的情绪就再也淡定不起来了。因为服务和内核分离后,任务
间的IPC数量暴涨,一个简单的Unix系统调用要涉及到十多个
开端口、设权限、发送、收取消息的操作,哪怕是使用数年后
的1997年的硬件,跑一个系统调用密集的程序,Mach的效率
要比一般的Unix系统慢50%,而且根本没有什么好方法来解决
这个问题。
所以Mach!3出来后,虽有少数微内核信徒继续执著地改进
Mach,或者开始其他微内核比如L4的研究。但学术界对Mach
的兴趣大减,因而Mach!3也成为最后一版。项目解散后,
Richard!Rashid去了微软研究院。
14
再说我们的主角Avie!Tevanian,他1987年博士毕业去了
NeXT。这家公司刚刚由Steve!Jobs成立两年,这两年
Steve!Jobs啥正经事都没干,只是花了十万美元雇Paul!Rand设
计了一个公司商标。直到Avie!Tevanian加入后,这个公司才开
始干实事。1987年公司确认要开发一个面向研究人员使用的计
算机工作站,于是软硬件的开发工作紧锣密鼓地展开。硬件组
由领导过Apple!Lisa的Rich!Page原班人马负责,而软件则由
Avie!Tevanian负责,计划开发一个有图形界面的操作系统
NeXTSTEP。由于Avie!Tevanian是Mach主要的开发者,自然
NeXTSTEP就基于Mach了。1988年10月12日,NeXT发布预览
版(0.8版),并于1989年9月18日发布1.0版(注:http://
en.wikipedia.org/wiki/NeXTSTEP)。
作为NeXTSTEP系统的内核,NeXT分支的Mach经历了不少变
化。NeXTSTEP!0.8主要使用Mach!2.0版,而稍后的
NeXTSTEP!1.0版主要基于Mach!2.5版,包含一个自己定制的
当时最新的4.3BSD服务层。从3.1版开始,NeXT分支的Mach
还包括一个全新的设备驱动框架,!名为Driver!Kit,仅供x86系
列的硬件使用。和Mach以及BSD代码不同,Driver!Kit是使用
Objective-C写的。为什么是一个面向对象的语言呢?看
NeXTSTEP!3.3的DriverKit文档。读者大概就会发现,
NeXTSTEP把所有硬件设备理解为对象,而我们知道,对象之
间有继承关系,比如,磁盘(IODisk物件)属于输入输出设备
(IODevice物件)的子物件,而磁盘(IODisk)本身又是逻辑
磁盘(IOLogicalDisk)的父物件。硬件的初始化对应于每个物
件的初始化(init方法),硬件又有读、写,所以可以用
getter/setter的方法。因此,DriverKit是一个非常有特色的实
现。而且由于Objective-C的效率很高,依赖很少(Objective-C
程序可以直接被编译器翻译成等价的C语言程序并编译,而
Objective-C的运行库libobjc也以高效著称),所以也是编写驱
动的良好选择。几年后的IOKit其实就是个DriverKit的翻版。
这时,NeXTSTEP操作系统大获成功,风险投资商们纷纷购
买,但硬件却始终卖不出去(注:
Aaron!Hillegass《Cocoa!Programming!for!Mac!OS!X》前
言),所以NeXT砍掉了硬件部门专做软件,更是使
NeXTSTEP发展到了巅峰时期,同时支持68K、x86、PA-RISC
和SPARC等硬件,但颇有意味的是它就是不支持PowerPC架
构。它可以同时产生一个包含所有架构可执行码的二进制文
件,来使开发的程序在所有平台上执行。这个功能也影响了后
来Mac!OS!X的技术。Mac!OS!X!10.4时代有两件跨时代意义的
事情,一件是Apple搞出了64位的Power!Mac,开发者可以发
布一个包含64位和32位程序的单一可执行文件,而无需让用户
去区分;另一件是和Intel合作。Apple正式发表了
Universal!Binary技术,可以一个Mach-O文件同时包含Intel和
PowerPC的指令。这非常贴心的设计(要知道,大多数电脑用
户根本不知道Intel、PowerPC、64位、32位等技术)就是来自
于Mach的技术。
NeXTSTEP!3.3后,NeXTSTEP因为NeXT和Sun的合作改名为
OPENSTEP,1996年发布4.0版,到1997年2月4日,NeXT被
Apple收购之前,期间内核改进除源码同步到Mach!3.0版外不
明,而且出于不知道的原因,我手头的OPENSTEP正式版光盘
中,居然找不到DriverKit的发布说明和编程文档,故不作详
述。不过这段时间,Apple的活动值得好好一说。之前在
《Linus!Torvalds的短视》中,我们曾提到,1996年,Apple和
OSF曾经合作,把Mach移到PowerPC!Mac上,再把Linux作为
单一的服务跑在Mach上,这个项目叫做MkLinux。在1996年
发布基于Mach!3.0和Linux!1.3的预览版,并更新到2002年结
15
剩余76页未读,继续阅读
杯子里的绿萝
- 粉丝: 15
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 达梦数据库DM8手册大全:安装、管理与优化指南
- Python Matplotlib库文件发布:适用于macOS的最新版本
- QPixmap小demo教程:图片处理功能实现
- YOLOv8与深度学习在玉米叶病识别中的应用笔记
- 扫码购物商城小程序源码设计与应用
- 划词小窗搜索插件:个性化搜索引擎与快速启动
- C#语言结合OpenVINO实现YOLO模型部署及同步推理
- AutoTorch最新包文件下载指南
- 小程序源码‘有调’功能实现与设计课程作品解析
- Redis 7.2.3离线安装包快速指南
- AutoTorch-0.0.2b版本安装教程与文件概述
- 蚁群算法在MATLAB上的实现与应用
- Quicker Connector: 浏览器自动化插件升级指南
- 京东白条小程序源码解析与实践
- JAVA公交搜索系统:前端到后端的完整解决方案
- C语言实现50行代码爱心电子相册教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功