作者:paizhang
知乎文章编号:44934452
创建于:2018-09-19 3:02:11
修改于:2018-09-19 3:07:07
Mac OS Classic是早期图形界面OS的先行者,而Macintosh人机友好的交互模式也是市场的开创者之一,奠定了Mac电脑一派相承的操作基础。你是否了解Mac OS Classic系统的底层架构,与底层架构下硬件固件的历史沿革?本文将向你做更多介绍,这将帮助你更好地玩转苹果老机。
Mac OS最初被称作「系统软件」,随着1980年代的Macintosh们横空出世。它的设计宗旨为一切极简图形化,只需要一个鼠标,即可轻松玩转Macintosh。在这个设计宗旨下,第一代Macintosh电脑带来了最初的Mac OS,这是一个单任务单用户操作系统,用户只需要对着窗口、图标和文字打交道,而没有设计命令行界面。这一宗旨贯穿所有Mac OS Classic系统。
Mac OS Classic的核心系统架构为Toolbox。在Toolbox的基础上,硬件会加载系统、系统扩展、控制板等系统资源和应用程序。Toolbox作为最底层的组成部分,承担固件功能并且提供一些Manager、实用工具、库与API等基本功能;系统资源在Toolbox上加载,提供用户界面和基本的功能,也提供一些功能供应用程序差遣。要正常启动一台Macintosh,ROM与系统这两个部分是必须的,缺一不可。而其他部分,系统扩展通过系统的接口,增强和添加功能,或者驱动硬件功能;控制板则自定义一些功能。这些系统资源是可选的,它们会在系统加载时被加载到内存中,并形象地表现在屏幕上。
Mac OS Classic没有现代意义上的系统内核。Toolbox与系统之上,系统提供的资源非常零碎,就好像是胡乱地拼凑而成。Toolbox的功能非常简单,除了上文介绍过的那些功能——而现代操作系统的一些重要概念,例如系统和内存的保护,还有真正的多任务都在Classic系统上缺失。应用程序的运行十分不够讲究,它们直接运行在Toolbox上,差遣系统的资源,没有任何多余的部分。应用程序除了差遣那些系统提供的已有功能和资源,还可以直接操作硬件和任何内存,所有的应用程序和操作系统的资源一同运行在同样的内存空间里。任何软件的失误都可能让整个操作系统宕机和失败,因此Mac OS Classic的应用程序必须做到万无一失。
从第一代Macintosh开始,Macintosh内置一个Macintosh ROM。这个芯片固化在主板上,也有可能在一个插槽里,作为一个固件芯片存在,一直到New World ROM电脑推出(后文介绍)。不同的Macintosh型号有不同的ROM,型号和容量也不同,ROM专门设计为配套它们的硬件,它们实现的功能都是是类似的。有些Macintosh ROM还存储了一些有趣的彩蛋,可以通过MacsBug打开。
没有ROM的Macintosh不能启动。在按下电源按钮后,硬件的控制大权来到Macintosh ROM上,Macintosh ROM与它内建的Macintosh Toolbox对硬件进行自检。如果自检不通过,或ROM里的基础代码运行出错,则会加载ROM里的宕机声音并显示Sad Mac的图像;如果自检通过,则会发出开机声。随后固件会进一步初始化硬件,搜索系统文件夹内系统的位置,然后将硬件的控制权交给系统软件。系统将进一步加载更多系统资源,就如上文的介绍——这一切都是基于Toolbox的。
综上所述,Toolbox是Macintosh ROM芯片的一个重要组成部分,不但是一切Macintosh系统与软件的基础,还扮演BIOS的角色,承担固件功能。它专为68000系列处理器设计,是一座横跨硬件与软件的桥梁。Macintosh ROM芯片在所有Macintosh里都是如此至关重要,这也帮助了苹果防止盗版——没有Macintosh ROM,就不能够运行Mac OS。
1990年代的苹果摒弃了摩托罗拉的68000系列处理器,来到PowerPC时代,它需要保证现有的软硬件平滑过渡。Toolbox是68K的,操作系统也是68K的,大量的应用程序也是68K的。Mac OS nanokernel建立在PowerPC电脑的Macintosh ROM里,为Toolbox提供了一个内核级的摩托罗拉68LC040处理器模拟环境,以便平滑过渡的完美进行。
Mac OS nanokernel在Macintosh启动时即加载,在内存里开辟一个PowerPC内核空间加载模拟器和Toolbox。随后模拟器继续加载Toolbox对整个系统硬件进行自检,余下的步骤与68000的电脑无异,简单到不能再简单——也就是说,一个PowerPC的Macintosh实际上的内核,是一个运行在68000模拟器里的Toolbox,听起来滑稽可笑,但无论如何苹果通过这招成功完成了向PowerPC的转换。Mac OS nanokernel提供的模拟器为68000软件提供了系统级别的保障,但运行在模拟器上的软件无疑不能发挥完整的PowerPC性能。系统软件和开发者们需要通过不断的更新,增加PowerPC代码来更好地发挥性能。
PowerPC的苹果电脑大致可以分为两个时代,NuBus的早期PowerPC电脑与PCI总线的新款PowerPC电脑。PCI时代的两个重要分界线是Power Macintosh 9500与PowerBook 3400,这些新款苹果电脑有了一个新的固件——Open Firmware。早期PCI总线Macintosh的固件被称为Old World ROM,它们依然使用固化在主板上的Macintosh ROM芯片作为真正的固件;它们的Open Firmware功能还非常虚弱,仅用于初始化PCI设备并且加载Macintosh ROM。苹果并没有真正地发掘它。
在Old World ROM的Macintosh启动时,Open Firmware初始化PCI设备并且将硬件的控制大权立即交给Macintosh ROM。此时Macintosh ROM作为一个Open Firmware设备被加载,然后加载Mac OS nanokernel,就像上文所介绍的,最终加载Toolbox继续那个原始无比的启动流程。
直至Old World ROM,Macintosh的固件都与Mac OS的底层紧密配合。1990年代末期,苹果推出iMac G3,它是第一个New World ROM电脑。New World ROM的电脑是一次爆炸性的革新,这些电脑有完全基于Open Firmware的固件。New World时代的两个重要分界线是PowerBook G3 Bronze Keyboard与Power Macintosh G3 Blue and White,以及新推出的iMac与iBook系列电脑都基于New World ROM。
在那时,Mac OS X计划迅速推进。原先的Macintosh ROM内的Toolbox被提取为一个文件,称为Mac OS ROM,且机型之间通用,存放在系统文件夹下。固化在主板上的Macintosh ROM不复存在,硬件的自检与启动由一个新的完全基于Open Firmware的固件负责。启动Mac OS Classic时,Open Firmware则加载系统文件夹下的Mac OS nanokernel与Toolbox;而启动Mac OS X时,Open Firmware直接加载BootX与mach_kernel——PowerPC Mac OS X的引导器。
一些我们非常熟悉的功能,例如网络启动,Option选择启动磁盘,与自定义的Open Firmware参数等,都来自New World ROM。完全基于Open Firmware的固件功能强大,并且能够直接启动Mac OS X而无需为Toolbox打补丁。不得不说,Mac OS Classic在New World时代已经是强弩之末,一个全新的时代即将由Mac OS X开创——Mac OS X的内核基于Mach与BSD,无需Toolbox的参与。全新的内核高瞻远瞩,更先进的架构将彻底取代Classic的落后底层,成为Macintosh上的主流。
原文地址:小议Mac OS Classic的底层架构与Macintosh的固件沿革
欢迎关注:排长的网站、作者与本专栏
欢迎加入:老Mac与Mac OS交流群(769483275)
感谢阅读!创作探索不易,请您留下一个赞,非常感谢!