预计阅读本页时间:-
1.2.4 第四代(1980年至今):个人计算机
随着LSI(大规模集成电路)的发展,在每平方厘米的硅片芯片上可以集成数千个晶体管,个人计算机时代到来了。从体系结构上看,个人计算机(最早称为微型计算机)与PDP-11并无二致,但就价格而言却相去甚远。以往,公司的一个部门或大学里的一个院系才配备一台小型机,而微处理器却使每个人都能拥有自己的计算机。
1974年,当Intel 8080,第一代通用8位CPU出现时,Intel希望有一个用于8080的操作系统,部分是为了测试目的。Intel请求其顾问Gary Kildall编写。Kildall和一位朋友首先为新推出的Shugart Associates 8英寸软盘构造了一个控制器,并把这个软磁盘同8080相连,从而制造了第一个配有磁盘的微型计算机。然后Kildall为它写了一个基于磁盘的操作系统,称为CP/M(Control Program for Microcomputer)。由于Intel不认为基于磁盘的微型计算机有什么未来前景,所以当Kildall要求CP/M的版权时,Intel同意了他的要求。Kildall于是组建了一家公司Digital Research,进一步开发和销售CP/M。
1977年,Digital Research重写了CP/M,使其可以在使用8080、Zilog Z80以及其他CPU芯片的多种微型计算机上运行,从而使得CP/M完全控制了微型计算机世界达5年之久。
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
在20世纪80年代的早期,IBM设计了IBM PC并寻找可在上面运行的软件。来自IBM的人员同Bill Gates联系有关他的BASIC解释器的许可证事宜,他们也询问是否他知道可在PC机上运行的操作系统。Gates建议IBM同Digital Research联系,即当时世界上主宰操作系统的公司。在做出毫无疑问是近代历史上最糟的商业决策后,Kildall拒绝与IBM会见,代替他的是一位次要人员。为了使事情更糟糕,他的律师甚至拒绝签署IBM的有关尚未公开的PC的保密协议。结果,IBM回头询问Gates可否提供他们一个操作系统。
在IBM返回时,Gates了解到一家本地计算机制造商,Seattle Computer Products,有合适的操作系统DOS(Disk Operating System)。他联系对方并提出购买(宣称75 000美元),对方接受了。然后Gates提供给IBM成套的DOS/BASIC,IBM也接受了。IBM希望做某些修改,于是Gates雇佣了那个写DOS的作者,Tim Paterson,作为Gates的微软公司早期的一个雇员,并开展工作。修改版称为MS-DOS(MicroSoft Disk Operating System),并且很快主导了IBM PC市场。同Kildall试图将CP/M每次卖给用户一个产品相比(至少开始是这样),这里一个关键因素是Gates(回顾起来,极其聪明)的决策,将MS-DOS与计算机公司的硬件捆绑在一起出售。在所有这一切烟消云散之后,Kildall突然不幸去世,其原因从来没有公布过。
1983年,IBM PC后续机型IBM PC/AT推出,配有Intel 80286 CPU。此时,MS-DOS已经确立了地位,而CP/M只剩下最后的支撑。MS-DOS后来在80386和80486中得到广泛的应用。尽管MS-DOS的早期版本是相当原始的,但是后期的版本提供了更多的先进功能,包括许多源自UNIX的功能。(微软对UNIX是如此娴熟,甚至在公司的早期销售过一个微型计算机版本,称为XENIX)。
用于早期微型计算机的CP/M、MS-DOS和其他操作系统,都是通过键盘输入命令的。由于Doug Engelbart于20世纪60年代在斯坦福研究院(Stanford Research Institute)工作,这种情况最终有了改变。Doug Engelbart发明了图形用户界面,包括窗口、图标、菜单以及鼠标。这些思想被Xerox PARC的研究人员采用,并用在了他们所研制的机器中。
一天,Steve Jobs(和其他人一起在汽车库里发明了苹果计算机)访问PARC,Jobs一看到GUI,立即意识到它的潜在价值,而Xerox管理层恰好没有认识到。这种战略失误的庞大比例,导致名为《摸索未来》一书的出版(Smith与Alexander,1988年)。Jobs随后着手设计了带有GUI的苹果计算机。这个项目导致了Lisa的推出,但是Lisa过于昂贵,所以它在商业上失败了。Jobs的第二次尝试,即苹果Macintosh,取得了巨大的成功,这不仅是因为它比Lisa便宜得多,而且它还是对用户友好的(user friendly),也就是说,它是为那些不仅没有计算机知识,而且也根本不打算学习计算机的用户们准备的。在图像设计、专业数码摄影,以及专业数字视频生产的创意世界里,Macintosh得到广泛的应用,这些用户对苹果公司及Macintosh有着极大的热情。
在微软决定构建MS-DOS的后继产品时,受到了Macintosh成功的巨大影响。微软开发了名为Windows的基于GUI的系统,早期它运行在MS-DOS上层(它更像shell而不像真正的操作系统)。在从1985年至1995年的10年之间,Windows只是在MS-DOS上层的一个图形环境。然而,到了1995年,一个独立的Windows版本,具有许多操作系统功能的Windows 95发布了。Windows 95仅仅把底层的MS-DOS作为启动和运行老的MS-DOS程序之用。1998年,一个稍做修改的系统,Windows 98发布。不过Windows 95和Windows 98仍然使用了大量16位Intel汇编语言。
另一个微软操作系统是Windows NT(NT表示新技术),它在一定的范围内同Windows 95兼容,但是内部是完全新编写的。它是一个32位系统。Windows NT的首席设计师是David Cutler,他也是VAX VMS操作系统的设计师之一,所以有些VMS的概念用在了NT上。事实上,NT中有太多的来自VMS的思想,所以VMS的所有者DEC公司控告了微软公司。法院对该案件判决的结果引出了一大笔需要用多位数字表达的金钱。微软公司期待NT的第一个版本可以消灭MS-DOS和其他的Windows版本,因为NT是一个巨大的超级系统,但是这个想法失败了。只有Windows NT 4.0踏上了成功之路,特别在企业网络方面取得了成功。1999年初,Windows NT 5.0改名为Windows 2000。微软期望它成为Windows 98和Windows NT 4.0的接替者。
不过这两个方面都不太成功,于是微软公司发布了Windows 98的另一个版本,名为Windows Me(千年版)。2001年,发布了Windows 2000的一个稍加升级的版本,称为Windows XP。这个版本的寿命比较长(6年),基本上替代了Windows所有原先版本。在2007年1月,微软公司发布了Windows XP的后继版,名为Vista。它有一个新的图形接口Aero,以及许多其他新的或升级的用户程序。微软公司希望Vista能够完全替代XP,但是这个过程可能需要将近十年的时间。
在个人计算机世界中,另一个主要竞争者是UNIX(和它的各种变体)。UNIX在网络和企业服务器等领域强大,在台式计算机上,特别是在诸如印度和中国这些发展中国家里,UNIX的使用也在增加。在基于Pentium的计算机上,Linux成为学生和不断增加的企业用户们代替Windows的通行选择。顺便提及,在本书中,我们使用“Pentium”这个名词代表Pentium I,II,III和4,以及它们的后继者,诸如Core 2 Duo等。术语x86有时仍旧用来表示Intel公司的包括8086的CPU,而“Pentium”则用于表示从Pentium I开始的所有CPU。很显然,这个术语并不完美,但是没有更好的方案。人们很奇怪,是Intel公司的哪个天才把半个世界都知晓和尊重的品牌名(Pentium)扔掉,并替代以“Core 2 Duo”这样一个几乎没有人立即理解的术语——“2”是什么意思,而“Duo”又是什么意思?也许“Pentium 5”(或者“Pentium 5 dual core”)太难于记忆吧。至于FreeBSD,一个源自于Berkeley的BSD项目,也是一个流行的UNIX变体。所有现代Macintosh计算机都运行着FreeBSD的一个修改版。在使用高性能RISC芯片的工作站上,诸如Hewlett-Packard公司和Sun Microsystems公司销售的那些机器上,UNIX系统也是一种标准配置。
尽管许多UNIX用户,特别是富有经验的程序员们更偏好基于命令的界面而不是GUI,但是几乎所有的UNIX系统都支持由MIT开发的称为X Windows的视窗系统(如众所周知的X11)。这个系统处理基本的视窗管理功能,允许用户通过鼠标创建、删除、移动和变比视窗。对于那些希望有图形系统的UNIX用户,通常在X 11之上还提供一个完整的GUI,诸如Gnome或KDE,从而使得UNIX在外观和感觉上类似于Macintosh或Microsoft Windows。
另一个开始于20世纪80年代中期的有趣发展是,那些运行网络操作系统和分布式操作系统(Tanenbaum和Van Steen,2007)的个人计算机网络的增长。在网络操作系统中,用户知道多台计算机的存在,用户能够登录到一台远地机器上并将文件从一台机器复制到另一台机器,每台计算机都运行自己本地的操作系统,并有自己的本地用户(或多个用户)。
网络操作系统与单处理器的操作系统没有本质区别。很明显,它们需要一个网络接口控制器以及一些低层软件来驱动它,同时还需要一些程序来进行远程登录和远程文件访问,但这些附加成分并未改变操作系统的本质结构。
相反,分布式操作系统是以一种传统单处理器操作系统的形式出现在用户面前的,尽管它实际上是由多处理器组成的。用户应该不知晓他们的程序在何处运行或者他们的文件存放于何处,这些应该由操作系统自动和有效地处理。
真正的分布式操作系统不仅仅是在单机操作系统上增添一小段代码,因为分布式系统与集中式系统有本质的区别。例如,分布式系统通常允许一个应用在多台处理器上同时运行,因此,需要更复杂的处理器调度算法来获得最大的并行度优化。
网络中的通信延迟往往导致分布式算法必须能适应信息不完备、信息过时甚至信息不正确的环境。这与单机系统完全不同,对于后者,操作系统掌握着整个系统的完备信息。