第一章 操作系统概述(五)



1.2.2 微机操作系统

微机是微型计算机的简称,或称为个人计算机(PC:Personal Computer),自1970年代诞生,并从1980年代加速发展,迅速成为计算机行业最具活力、发展最快的领域,极大地扩展了计算机的应用领域,改变了计算机软硬件的架构和应用模式。应该说近30年来,微机操作系统的发展是操作系统演变的主流,目前主流的微机操作系统可以看作是现代操作系统的典范。虽然业界普遍认为目前已经是后PC时代,以智能手持设备为代表的新一代计算终端将会逐渐替代传统PC的地位,但是这些新型终端上的操作系统与微机操作系统之间有非常明确的传承关系。

1、Windows

讲到微机操作系统,不能回避的是在桌面PC中占据统治地位的Windows系列操作系统。Windows是微软公司(Microsoft)的产品,微软公司的操作系统最早从1981年的MS-DOS(下面简称DOS)开始,针对16位的Intel 8086/8088平台开发,功能方面借鉴了很多之前出现的一个微机操作系统CP/M。名字DOS(Disk Operating System)源于其存在形式:DOS系统程序存在于软盘或硬盘等磁盘(disk)设备上,当计算机加电启动后由固件中的BIOS装入内存并运行,从而取得系统控制权。DOS提供基本的命令解释器以及一组命令工具,用户通过命令行界面交互式操作计算机。虽然目前的大多数计算机用户可能没有使用实际MS-DOS的经验,但是可以通过Windows下打开命令窗口的方式体验命令行的操作。DOS不是现代意义的操作系统,以单任务方式运行,所针对的16位CPU没有内存保护模式,因此没有真正的操作系统内核概念,实际上DOS系统的上运行的应用程序可以用自己的代码任意替换DOS系统代码,实现对系统功能的增强,这也是早期汉化DOS系统以及Windows图形环境的工作基础。

图形用户界面(GUI:Graphical User Interface)作为传统命令行的字符操作界面的一种替代方式,由于其操作直观、用户学习成本低,自1980年代出现后迅速改变了普通用户使用计算机的方式;非专业的计算机用户群主要使用的都是微机,微机操作系统中GUI的迅猛发展就毫不让人感到意外了。微软公式最早的GUI产品可以追溯到1985年的Windows 1.0,但是直到1990年的Windows 3.0之前,都没有得到广泛的应用。Windows 3系列得益于硬件水平的提升以及自身功能的增强,获得了巨大的商业成功。这一时期的Windows是作为DOS的应用程序存在,在启动到DOS字符界面后通过命令行输入win命令进入。但是Windows不同于一般的DOS应用程序,具备很多操作系统的特征,比如:Windows有自己的图形界面程序的执行文件格式;用自己的设备驱动程序管理鼠标、显卡、声卡等设备,而不是使用DOS下的设备驱动程序;引入了非抢占式多任务调度来支持多个图形界面程序的并发执行;实现了基于段的虚拟存储管理,使得应用程序的内存需求可以大于物理内存容量。Windows 3系列在执行后会进入80386的虚地址保护模式,所以实际上Windows是把DOS作为一个启动跳板,由于DOS对自身没有保护,Windows启动后会全面接管系统。

在Windows 3.x之后,微软开始了两条不同的产品线,一条是继续沿用这种DOS+Windows、16位+32位的模式,其直接后继产品是1995年发布的 Windows 95,虽然不再单独提供DOS产品,但Windows 95仍然通过DOS启动,然后自动执行Windows执行文件接管系统。除了用户界面有重大变化,Windows 95还有一些重要的改进,包括开始支持原生32位应用程序、使用抢占式多任务调度等。Windows 95的市场成功甚至超过了之前的产品,真正奠定了微软公司在桌面PC中的统治地位。在Windows 95之后,这一产品线的产品还包括1998年发布的Windows 98、2000年发布的Windows ME(千禧版),之后微软公司完全放弃了这一产品线,主要原因是其发展历史决定了这些产品是以一种“打补丁”的方式开发,其核心代码由不同时期代码拼凑起来,难以从根本上保证内核的效率和稳定性。

早在Windows 3.0发布之前,1988年微软已经开始了另一条产品线的研发,其主要目标是全新设计的纯32位操作系统内核,完全抛弃对16位的DOS的依赖。最初的设想是一个POSIX(一个Unix的标准API规范)兼容的操作系统,但是在Windows 3.x取得商业成功后,微软决定把新内核的对外接口统一到Windows API以便其他版本Windows上的应用可以方便地移植到新系统上。这一全新设计的操作系统内核借鉴了当时最前沿的微内核设计理念,采用模块化、可移植的内核架构,支持多处理机体系,采用抢占式多任务调度。这一产品线的第一个产品是1993年发布的Windows NT 3.1,其中的NT来由虽然有不同的说法,但是微软官方的说法是“新技术”(New Technology),这也从侧面表明了微软对这一产品线的定位和期望。NT 3.1之后的一些主要后继包括1994年的NT 3.5、1995年的NT 3.51、1996年的NT 4.0,2000年的NT 5.0被重新命名为Windows 2000,因为从2000年之后微软实际放弃了前一条产品线,完全统一到NT内核上,为了把用户的注意力集中到“Windows”这一商标,在产品名中不再包含NT标识。从2000年之后微软的操作系统产品实际都是NT的后继,包括其64位产品。具体后继产品包括:面向桌面PC的Windows XP、Windows Vista、Windows 7、Windows 8、Windows 10;面向服务器的Windows Server 2003、Windows Server 2008、Windows Server 2012。

【参考:http://en.wikipedia.org/wiki/Microsoft_Windows

【参考:http://en.wikipedia.org/wiki/Windows_NT

【参考:http://tieba.baidu.com/p/2100654518

2、Unix类操作系统

Unix类操作系统在微机上的占有率其实并不高,但是Unix的影响深远,后面要介绍的微机操作系统与Unix也有比较密切的关系。Unix操作系统诞生于贝尔实验室(Bell Labs),在1960年代中后期,MIT、贝尔实验室、GE公司联合开发一个分时系统Multics,该系统目标宏大,在操作系统领域有很多创新,但是由于规模庞大且过于复杂,开发过程遇到许多挫折,贝尔实验室逐步退出了该项目,而最后一批撤出的研究人员(主要是Ken Thompson,和Dennis Ritchie)决定在一个较小的规模上重新实现该系统。由于这种传承关系,有人略带调侃意味地建议把新系统命名为UNICS以表示这是一个削减版的Multics,这个名字最终根据同音拼写演变成了Unix。Unix诞生后最初只是在贝尔实验室内部应用,1972年Ken Thompson,和Dennis Ritchie使用C语言重写了Unix系统,由于主要代码使用高级语言编写,便于移植到其他平台,1975年之后Unix逐渐扩散到一些美国高校,1970年代末Unix有了大量的商业应用,并被很多计算机厂商移植到自己的系统上。完整描述Unix后来的发展史基本上是一个不可能的任务,因为分支太多,在此主要关注在微机上的分支。

Unix会产生许多分支的原因与其诞生地有关,贝尔实验室是当时美国电信业巨无霸贝尔系统的分支机构之一,由于涉嫌垄断经营,贝尔系统一直被美国政府监管并且对其经营范围有诸多限制,其中就包括不允许涉足计算机领域。贝尔实验室自己不能出售Unix,面对1970年代后期出现的大量商业应用需求,贝尔实验室对其他计算机厂商有偿提供程序源代码和使用许可,因此当时各大厂商通过获取软件和许可把Unix移植到自己的硬件平台上。现代的读者可能会比较熟悉的包括:HP公司的HP-UX,IBM公司的AIX,SUN公司(现在已被Oracle收购)的Solaris等。除了这些当时的主机(Mainframe)厂商,在刚兴起的微机领域,也有一家公司取得了贝尔实验室的Unix使用许可,可能出乎很多人的预料,这家公司是微软公司。作为一家软件公司,微软并不生产硬件,它购买Unix许可其实是基于一个这样的判断:正如在当时的大、中、小型机市场上的空前成功,当微机功能足够强大以后,微机操作系统也一定会是Unix的天下。因为没有自己的硬件平台,微软取得Unix许可后采用了与贝尔实验室类似的方法:再给其他微机厂商提供程序和使用许可;在这种近似“转包”的商业模式中,当然不能在使用Unix的商标,因此微软给自己的“系统”起了一个新名字——Xenix。通过其他微机厂商,Xenix在早期移植到了很多其他微机平台,但是在向8086体系的微机移植中遇到很多困难,最关键的原因是8086没有保护模式,这对于从主机平台而来、通过CPU保护模式来保证自身完整性的Unix是一个根本性的困难。最终SCO公司在1983年完成了一个面向8086体系的Xenix移植,而微软公司后来放弃了Xenix,原因是贝尔系统在1984年拆分,相应的经营禁令失效,贝尔实验室从1984年开始可以销售Unix,微软公司认为自己不可能赢得与Unix的原始开发者的竞争,所以在1987年将Xenix所有权转让给SCO公司,从此微软公司与Unix阵营不再有关联,而SCO公司则成为微机领域Unix类操作系统的最主要厂商,在1987年完成向80386平台的移植后,SCO公司在x86体系微机上提供SCO Xenix作为低端产品、SCO Unix作为高端产品,1990年代之后其产品线又包括SCO Open Server、UnixWare等。SCO公司本身其后经过一系列的购并、法律诉讼、破产、转让等活动,最终于2011年破产。

微机上能见到的Unix系统除了上述SCO的商业产品,还有一些开源系统,这些系统的来源要追溯到Unix的分化,而这一切的起源仍然是贝尔实验室的特殊地位。如前所述,早期贝尔实验室不能自行销售Unix,采用了相对宽泛的发放许可政策,尤其是在教育领域,这导致Unix在美国高校中有非常大的影响。但是当贝尔系统准备拆分时,贝尔实验室意识到Unix的巨大市场前景,因而采用了一些现在看不是很明智的策略。1984年拆分之后,贝尔实验室推出了新的Unix System V并急迫地使之商业化,使用比之前严苛许多的授权条款,导致很多研究、教育机构难以承受,因此加州大学伯克利分校在之前获取的研究性Unix版本基础上,独立于贝尔实验室开发了自己的衍生版本BSD,这样Unix世界实际就有了两大阵营:研究机构和技术人员偏向BSD,而商业公司偏向SysV,两大阵营的对立和独立演变造成了用户的迷惑,后来为了弥合两大阵营的差距开始了标准化API的努力,最终的结果就是在操作系统领域最著名的POSIX标准,这个标准可以简单理解为BSD和SysV两大阵营都会实现的API和命令工具交集。这之后两大阵营仍然各自向前发展,而Unix世界也仍然争吵不休,公司和机构分分合合,法律诉讼不断,狗血剧不断上演,这些演变已经完全超出了一本技术书应该关心的范围。就微机的世界而言,除了上述源于SysV的SCO系列产品,还有源自BSD的一些开源系统,如FreeBSD、OpenBSD、NetBSD和OpenSolaris等。如果读者曾经在x86体系的微机上用过Unix系统,最大可能是上述系统之一。

【参考:http://en.wikipedia.org/wiki/Unix

【参考:http://en.wikipedia.org/wiki/SCO_OpenServer

【参考:http://en.wikipedia.org/wiki/Xenix

【参考:http://en.wikipedia.org/wiki/Berkeley_Software_Distribution

【参考:http://en.wikipedia.org/wiki/UNIX_System_V

3、GNU/Linux

以GNU为代表的自由软件的兴起也与Unix的商业化历程有直接的关系,GNU运动的发起人Richard Stallman是一个理想主义的计算机科学家,他相信人类的智慧成果应该共享而不是封闭起来赚钱,所以Stallman对于商业软件有着发自内心的反感,作为一个主要关注操作系统领域的开发者,当1983年末Unix将要商业化的前景已经明确后,Richard Stallman发起了GNU(GNU‘s Not Unix)项目,其目标是从头做一个像Unix一样的系统,而这个系统不用Unix的代码、永远不像Unix那样商业化。为了保证项目的永久开放,Stallman起草了GPL(GNU General Public License),其核心思想是:按照GPL发布的软件一定提供源代码,任何人可以在此基础上进行修改和扩展,只要其修改过的软件仍按照GPL发布。GNU项目开始后吸引了大量抱有同样信念的软件开发人员,GNU旗下的工具软件快速增长,到1989年时,GNU项目中内核以外的部分(包括函数库、shell、编译系统、调试工具、各种命令工具等)基本完成,这些高质量的工具软件甚至在很多Unix系统上取代了对应的商业软件。但是GNU的内核开发受阻,1990年启动了GNU Hurd内核的开发,基于CMU的Mach微内核架构开发,但是进展一直不顺利。

当GNU作为一个完整的操作系统产品受困于缺少最基础的内核时,在大西洋的另一边,一个芬兰在校大学生的习作开启了另一扇成功之门。1991年初,21岁的Linus Torvalds,赫尔辛基大学的一名大三学生,购买了一台80386的IBM PC。他当时正在学习Minix系统,Minix是由Andrew S. Tanenbaum开发的一个教学用的Unix类系统,内核源代码开放,Minix是针对16位CPU架构的,不能充分发挥80386的强大功能,出于对80386虚地址保护模式的兴趣,Linus Torvalds编写了一些在保护模式下进行内存管理和程序切换的代码,当完成这些开发时,他发现自己完成了一个操作系统内核的最核心部分,于是他补充了其他必要功能,并在1991年8月通过Usenet在“comp.os.minix”新闻组中发了一个文章,宣告了这个类似于Minix的操作系统的诞生。这个系统最终被命名为Linux,虽然初始功能很简陋,但是吸引了大量感兴趣的人参与测试和完善这个内核,1992年时,已经有很多人尝试运行Linux内核并把GNU软件包移植到该内核上,从而形成一个相对完成的操作系统产品。因为Linux内核需要GNU工具,1992年底时Linux确定按照GPL发布Linux 0.99,自由软件的支持者们在其后更加积极地参与Linux内核的开发。1994年稳定的Linux 1.0版发布,同年Redhat和SUSE等公司正式发布了基于GNU和Linux的操作系统产品。

一个GNU/Linux操作系统产品主要包含三类部件来源:(1)除内核之外的GNU软件包,这些软件包构成了操作系统的外部开发和操作环境,函数库、shell以及核心命令工具实现了POSIX要求的API;(2)Linux内核,虽然不是GNU项目的组成部分,但是按照GPL发布;(3)其他非GNU的自由或者开源软件,例如提供GUI的X窗口系统、实现桌面环境的Gnome或KDE、提供HTTP服务的Apache等。

虽然GNU/Linux不使用Unix代码,但是因为使用GNU软件包,其外部接口符合POSIX标准,对用户来说,使用GNU/Linux与使用一个Unix派生系统没有什么差别,这也是促成Linux能够在诞生之后短短几年间迅速成长的原因之一。前面强调过,内核虽然重要,但是在操作系统产品中只占很小一部分,所以应该使用GNU/Linux来命名基于Linux内核的产品。对于本书内容而言,只关心内核部分,因而在后面章节中一般不会再涉及GNU软件包,在本书后面一般会仅使用Linux特指内核。

【参考:http://en.wikipedia.org/wiki/GNU_Project

【参考:http://en.wikipedia.org/wiki/History_of_Linux

4、OS X

苹果(Apple)公司的OS X作为一种商用操作系统,其实并不值得单独介绍,只是因为近几年苹果公司产品市场占有率大幅上升,在桌面、便携和家用市场上,仅次于Windows占据第二位,所以简单介绍一下其基本情况。苹果公司是最早的微机厂商之一,采用了一种封闭的市场经营策略,即硬件、系统软件、应用软件都由苹果公司控制,这种特殊的经营模式曾经带来市场上的困境,也在最近几年成就了苹果的再次辉煌。苹果公司在技术方面从来不乏创新,在微机领域,苹果公司的Macintosh系列是GUI的先驱,当微软公司主要在销售DOS时,1984年发布的Macintosh工作站上安装的是Mac OS。这一时期的Mac OS受制于硬件限制,像DOS一样是单任务的,只是提供图形界面的操作环境;随着后来硬件能力提升后,Mac OS也在逐渐增加功能,但是体系结构方面的限制影响了系统功能的扩展和运行的稳定性。一个源自早期平台的系统限制了以后的发展,这种情况在前面介绍微软的Windows时也提到后,苹果作为先驱,只是碰到的更早。解决问题的方法也是类似的,就是重起炉灶,编写一个新的操作系统,这就是后来的Mac OS X。虽然从名字来看,Mac OS X(这个X代表罗马数字的十)相对于之前的Mac OS 9,似乎是一个连续的版本变化,实际上这是一个全新的操作系统,而这个系统来源于苹果公司的传奇人物Steve Jobs。

相信对大多数读者而言,Steve Jobs都不会是陌生的名字。虽然本书无意去描述什么人物生平事迹,但是讲到Mac OS X的来龙去脉,还是需要说明Jobs的这一段经历。作为苹果公司的共同创始人之一,Jobs在负责Macintosh部门时专注于新产品的构想而忽视了在苹果的本职工作,导致公司经营上的损失从而在1985年被迫离开;之后他创建了NeXT公司,致力于面向高等教育界的新一代工作站的研发。1987至1993年,公司致力于开发软硬件一体的NeXT工作站,从1990年投入市场后,两代产品的销售业绩平平,但是其操作系统NeXTSTEP获得了业界关注;1993年至1996年,NeXT放弃了硬件业务,专注于软件的开发和移植;1996年底,苹果公司收购了NeXT公司,Jobs也因此重回苹果公司,这次收购的最主要目标就是要使用NeXTSTEP替代遇到问题的Mac OS。

1999年开始,苹果公司发布了从NeXTSTEP发展而来的Mac OS X系列操作系统,到2012年改名为OS X,这期间操作系统的基本架构没有大的变化。OS X由以下几个部分组成:(1)XNU内核,这是一个混合结构内核,基本结构使用了Mach微内核架构,内核组件大量使用了BSD内核元素;(2)符合POSIX标准的Darwin开发和操作环境,主要来自BSD的函数库和工具集,如果类比的话,这一部分基本相当于前述GNU软件包;(3)苹果公司专有的高层软件,例如大多数苹果应用软件运行需要的Carbon和Cocoa框架、决定了苹果系统特有外观的Aqua用户界面等。

【参考:http://en.wikipedia.org/wiki/OS_X

【参考:http://en.wikipedia.org/wiki/NeXT

【参考:http://en.wikipedia.org/wiki/Darwin_(operating_system)】

上面介绍了目前最为常见的几个微机操作系统类型,如果从微机发展历史看当然不止这些产品,有些产品曾经很有影响,但是由于各种原因逐渐淡出市场,例如Novell的NetWare、IBM的OS 2等。介绍微机操作系统的分类和发展,不是单纯为了了解历史,也是希望从中看到一些规律。上面介绍的几种操作系统各自有着不同的发展线路,微软和苹果公司的产品都是从最初的16位微机发展起来,但是当到了32位时代,都经历了一个脱胎换骨的过程,最终都放弃了原来累积改进的产品线,在32位以及64位平台采用了全新设计的内核结构,但是内核功能特性基本上还在Unix在1970年代就确立的范畴;而Unix在微机上的移植和Linux的横空出世,实际都是在80386出现之后,在内核功能特性方面并无真正突破性的扩展。殊途同归,在CPU的特性稳定之后,不同类型的操作系统内核都不再有大的结构性变化,现代操作系统的功能特性在近三十多年的发展历程中是基本稳定的。

讲到微机操作系统,还有一个问题需要澄清。有一种操作系统分类方法在各种书籍中经常能够见到:把系统划分为“单用户单任务”、“单用户多任务”、“多用户多任务”(“多用户单任务”当然是不可能的组合),各种类型的典型系统是:单用户单任务——MS-DOS;单用户多任务——Windows;多用户多任务——Linux/Unix类系统。这种分类对于帮助初学者理解一些自己尙不熟悉的系统会有一定正面作用,但是这种分类是不严谨的,而且这种分类有一种隐含的等级评价意味:多任务的强于单任务的,这当然没有问题;但同是多任务,似乎支持多用户的比支持单用户的更高级一些,所以很多人会因此认为Unix类系统比Windows的“技术水平”更高。对于两个不同系统的技术水平进行评判这超出了本书的范围,但是如果是基于这种简单归类而导致读者有这种印象,这绝对是一种误导。“多用户”与否是来自早期字符终端时代的应用需求,对于Windows这种从单人操作的微机上成长起来系统而言,从来没有这种需求;而对于Unix系统,这在主机时代是一种必须实现的需求,当移植到微机上自然会保留下来。“多用户”支持只是一种外在的特性,只要内核实现了抢占式调度,支持多用户同时操作根本没有什么困难,而且实际上Windows的一些版本是支持多用户通过网络同时联机操作的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值