《操作系统之哲学原理(第2版)》——— 操作系统的发展历史

操作系统之哲学原理及课后习题答案 包括操作系统之哲学原理原本扫描文件pdf,还包括课后习题的答案。 立即下载

《操作系统之哲学原理(第2版)》本书对操作系统的核心内容进行了全面分析,包括操作系统的发展历史和基本概念、进程与线程、内存管理、文件系统、输入与输出、多核环境下的进程调度和操作系统设计。本书用大量生活实例,生动地解释了操作系统中的主要难点和模糊点:锁的实现、同步机制的发展轴线、纯粹分段到段页式的演变、多核环境下的进程同步与调度和操作系统设计等内容。下面介绍操作系统的发展历史。

第一阶段:状态机操作系统(1940年以前)

这是计算机处在萌芽时期出现的操作系统。这种操作系统运行在英国人巴贝斯(Babbes)想象中的自动机中。所谓状态机操作系统实际上算不上是我们现在通常所定义的操作系统,而是一种简单的状态转换程序:根据特定输入和现在的特定状态进行状态转换而已。这个时候的计算机也不是现代意义上的计算机,而是所谓的自动机,其功能非常简单,可以用原始来形容。能做的计算也只限于加减法。这个时代的操作系统没有什么功能,不支持交互命令输入,也不支持自动程序设计,甚至这个时候还没有存储程序的概念。

驱动这一阶段操作系统的动力是个人英雄主义。因为此时尚无任何计算机工业、计算机研究及计算机用户。计算机及其操作系统的发展完全是某些人的个人努力。

这个阶段因为计算机刚刚出现,没有多少人能够接触到计算机,自然不存在什么安全问题。

这个阶段没有操作系统。如果非要说有的话,人就是这个时代的操作系统:因为自动机的一切动作均是人在操控的。

第二阶段:单一操作员单一控制端操作系统(20世纪40年代)

这种单一操作员单一控制终端(Single Operator,Single Console,SOSC)的操作系统是在刚出现计算机时人们能想到的最直观的控制计算机的方式。这个时候的代表机型为美国宾夕法尼亚大学与其他机构合作制作的ENIAC计算机。这是第一台电子计算机,但不是第一台计算机。在这之前有个英国人造了一部机械计算机,通过手柄摇动进行计算。在ENIAC刚造出来的时候,谁都不知道计算机是怎么回事,所以没有操作系统的整体概念,唯一能想到的就是提供一些标准命令供用户使用,这些标准命令集合就构成了我们的原始操作系统SOSC。

SOSC操作系统的设计目的是满足基本功能,并提供人机交互。在这种操作系统下,任何时候只能做一件事,即不支持并发和多道程序运行。操作系统本身只是一组标准库函数而已。操作系统本身并不自我运行,而是等待操作员输入命令再运行。用户想使用什么服务,就直接在命令行键入代表该服务的对应操作系统的库函数名(文件名)即可。这种操作系统的资源利用率很低:你输入一个命令就执行一个库函数,拨一下动一下。当操作员在思考时或进行输入输出时,计算机则安静地等待。当然了,从人的角度来看,效率并不低,你键入什么,计算机就立即执行什么。但从机器的角度考虑,因为时刻都等着人相对较慢的动作,效率就太低了。

由于这个时代的计算机很稀少,整个世界也只有几台,而人却不是,提高计算机的利用率就变得十分重要。

第三阶段:批处理操作系统(20世纪50年代)

为了提高单一操作员单一控制终端的操作系统SOSC的效率,人们提出了批处理操作系统。在仔细考察了SOSC后,人们发现,SOSC效率之所以低下,是因为计算机总是在等待人的下一步动作,而人的动作总是很慢。因此,人们觉得,如果去掉等待人的时间,即让所有的人先想好自己要运行的命令,列成一个清单,打印在纸带上,然后交给一个工作人员来一批一批地处理,效率不就提高了吗?这样就形成了批处理操作系统。

批处理操作系统的代表、第二代通用计算机IBM的 1401和7094等,就是这样通过减少人机交互的时间而达到CPU和输入输出利用率的改善。批处理的过程是:用户将自己的程序编在卡片或纸带上,交给计算机管理员处理。管理员在收到一定数量的用户程序后,将卡片和纸带上的程序和数据通过IBM 1401机器读入,并写到磁带上。这样每盘磁带通常会含有多个用户的程序。然后,计算机操作员将这盘磁带加载到IBM 7094上,一个一个地运行用户的程序,运行的结果写在另一个磁盘上。所有用户程序运行结束后,将存有结果的磁盘取下来,连到IBM 1401机器上打印结果,然后就可以将打印结果交给各个用户了。

很显然,在批处理下,操作系统的功能和复杂性均得到提升。在SOSC环境下,每个用户自己控制程序的开始和结束。而在批处理下,很多用户的程序一个接一个地存放在磁带上,用户本人并不在场,无法自己控制程序的开始和结束。而这个任务就交给了批处理操作系统。负责这个任务的操作系统功能就称为批处理监视器(batch monitor)。而整个批处理操作系统就是由批处理监视器和原来的操作系统库函数组成的,如图2-1所示。

这里写图片描述

批处理监视器的功能就是按部就班地执行用户的程序。这个时代的操作系统仍然只能在同一时间执行一个程序,但此时文件的概念已经出现。之前在SOSC诞生时期没有文件的概念。为什么到批处理时期出现了文件的概念呢?因为磁带上的多个用户程序必须以某种方式进行隔离,这需要一个抽象的东西来区分。这个抽象的东西不是别的,就是文件。除了文件管理外,此时的操作系统还能够管理读卡机、磁带、打印机等。此种操作系统的任务就是加载一个程序、运行、打印结果,然后执行下一个程序。批处理操作系统的两个部分的关系也很清楚:一部分是控制程序执行,一部分是支持程序执行。

批处理操作系统的重要代表有IBM开发的FORTRAN 监视系统FMS,用于IBM 709;IBM开发的基于磁带的工作监控系统IBSYS,用于IBM 7090 和7094;以及密歇根大学开发的UMES(密歇根大学执行系统),用于IBM 7094。

密歇根大学执行系统(UMES):操作系统的黎明

在当时,世界上最先进的计算机是IBM 7094。作为礼物,IBM分别给密歇根大学(UM)和麻省理工学院(MIT)各捐赠了一台。密歇根大学坐落在密歇根湖和伊犁湖旁,麻省理工学院紧邻大西洋。IBM的高管喜欢搞帆船比赛。每次搞帆船比赛都需要使用计算机来安排赛程、计算成绩、打印名次等。因此,IBM在捐赠机器给UM和MIT时有一个要求:平时归学校使用(MIT的机器还需要与新英格兰周围的学校如达特茅斯学院等共享),一旦进行帆船比赛就得停下一切计算任务为IBM服务。这当然使得学校很恼火。因为那个时候很难在程序执行中间停下来,将中间结果保留等以后再执行。只要停下来,就要从头再来。

于是,密歇根大学的R.M.Graham、Bruce Arden和Bernard Galler在1959年开发出了当时著名的MAD/UMES系统,即密歇根算法译码器和密歇根大学执行系统。密歇根算法译码器是一种可扩展的程序设计语言,而密歇根大学执行系统是一个能够保存中间结果的操作系统。有了这个系统,密歇根大学的计算机运行基本上不受IBM帆船比赛所造成的中断的影响。MIT在知道这个系统后,将其安装到自己的7094机器上。MAD编程语言随后又进一步移植到Philco、Univac和CDC等机器上,其很多功能后来被加入到FORTRAN语言里。

驱动这个阶段操作系统发展的动力是改善效率。因为机器的昂贵,我们不能容忍机器在操作员思考或I/O设备工作期间闲置起来。

第四代:多道批处理操作系统(20世纪60年代)

虽然批处理操作系统无需人机交互过程就能在一定程度上提高计算机的效率,但还是不那么令人满意。因为CPU和I/O设备的运行是串行的,即在程序进行输入输出时,CPU只能等待。CPU需要不断地探询I/O是否完成,因而不能执行别的程序。

由于I/O设备的运行速度相对于CPU来说实在太慢,这种让高速设备等待低速设备的状况令人颇感痛心。人们又想,能否将CPU和I/O进行并发呢?即在一个程序输入输出时,让另一个程序继续执行。换句话说,能否将CPU运行和I/O设备的运行重叠起来而改善整个系统的效率呢?答案是肯定的,不过需要付出代价。因为CPU和I/O重叠需要我们将多个程序同时加载到计算机内存里,从而出现了多道批处理操作系统。

在多道批处理操作系统时代,同一时间可以运行多个程序(宏观上),但控制计算机的人还是一个,即用户将自己的程序交给计算机管理员,由管理员负责将用户的程序加载到计算机里并执行。由于多个程序同时执行,因此操作系统需要能够在多个程序(工作)之间进行切换,并且能够管理多个I/O设备,同时还需要能够保护一个进程不被另一个进程干扰。

显而易见,操作系统的功能和复杂性都比简单批处理时复杂得多:既要管理工作,又要管理内存,还要管理CPU调度。

OS/360(M):划时代的多道批处理操作系统

典型的多道批处理操作系统是IBM的OS/360(M),它由密歇根大学为IBM公司开发(这是该操作系统名称后面的M所代表的意义)。它运行在IBM的第三代计算机System/360、System370、System 4300等上。OS/360在技术上和理念上都是划时代的操作系统,引进了内存的分段管理,但在商业上没有获

得广泛使用。因为它有很多错误。这些错误很难避免,划时代、崭新的东西很难一次做到完美。尽管如此,OS/360还是被公认为一个划时代的操作系统,它同时支持商业和科学应用,而之前的操作系统只能支持科学计算。IBM随后对OS/360(M)进行了改进,使其逐渐演变为一个功能强大、性能可靠的操作系统。这个改进的版本被命名为OS/390。该操作系统提供了资源管理和共享,允许多个I/O同时运行,以及CPU和磁盘操作可以并发。390获得了广泛的商业应用,一直到今天。

驱动这个阶段操作系统发展的动力仍然是改善效率。因为机器的昂贵,我们不能容忍机器(CPU)在I/O设备工作期间闲置起来。同时,我们对计算机的要求也开始多起来。因此,这个阶段还伴随着对用户不断增长的要求进行满足。

第五代之一:分时操作系统(20世纪70年代)

多道批处理操作系统的出现使计算机的效率(主要是吞吐率)大大提高。不过这时人们又提出了另外一个问题:将程序制作在卡片上交给计算机管理员来统一运行,将使得用户无法即时获知程序运行的结果。而这是一个大问题。想想如果你编写了一个程序,却需要让别人去运行,并等上若干天才能知道结果,这个滋味显然不好受。万一计算机管理员疏忽了,忘记运行你的程序,或者操作错误,导致程序丢失,情况就更加糟糕。

基于上述原因,人们考虑能否让人回到计算机前面来,每个人自己管自己的程序,但是,大家的程序可以同时运转。人的因素又引了回来。这看上去与原始的SOSC似乎一样,但有个关键的不同:多个人同时连在计算机上,每个人看做另外的一个I/O终端而已。每个用户拥有一个终端显示器,这些终端显示器经过RS232穿行线缆与计算机连接。终端显示器只能接收和发送文本命令和信息。计算机在所有连接的终端用户之间进行分时,即分给每个人有限的时间,只要时间到了,就换一个进程。这种时分切换下的操作系统就是分时操作系统。

在分时操作系统下,任意时间可以运行多个程序,且用户直接与计算机交互,当场调试程序。这就和单一操作员单一终端不一样了,从人本转成了物本。在单一操作员单一终端的情况下,一切等着人。以前执行一条命令就等人,分时系统就是人等机器。这个模型带来一个直接的结果,就是机器不再等你,等你想问题时机器就切换到别的程序,等你想好了机器我再切换回来,接受你的输入。就这样,计算机就在很多人之间来回转,你敲个命令就响应,然后切换走。如果时间掌握得好,用户输入完一个命令计算机正好回来,用户就无需等待。当然,如果一个用户打字速度足够快,可能会觉得计算机慢;如果打字速度非常慢,就有可能觉得计算机很快。不同的人感觉有可能完全不同。

显然,和前面几代的操作系统比,分时操作系统要复杂得多。相比于多道批处理系统,最主要的变化是资源的公平管理。在多道批处理下,公平不公平没有人知道。大家交了工作后只管回家等结果。至于自己的程序排在谁前谁后,抑或占用了多少CPU时间是无关紧要的。现在,大家都坐在计算机显示终端前面,任何的不公平将立即感觉到。因此,公平的管理用户的CPU时间就变得非常重要。除此之外,池化(pooling)、互斥、进程通信等机制相继出现,使得分时操作系统的复杂性大为增加。

傲慢的代价:MULTICS操作系统

分时操作系统里面最著名的应该是MULTICS和UNIX。前面讲过,IBM在其捐赠7094给UM和MIT时附加了一些条件,而这些附加条件使得学校非常恼火,但又不能拒绝(想想别的学校吧,他们连这种恼火的机会都没有)。为此,UM开发了UMES系统以应对这个问题。MIT则将UMES移植到了自己的7094中。后来大家觉得只保存中间结果还不是最好的办法,毕竟频繁地保存中间结果等帆船比赛结束后再进行重载仍存在麻烦,于是就想开发一个可支持多用户的分时操作系统,以便一劳永逸地解决这个问题。这个时候MIT想到了密歇根的R.M.Graham,将其请来。在R.M.Graham的主持下,来自贝尔实验室、DEC(Digital Equipment Corporation,美国数字仪器公司)和MIT的设计人员同

仇敌忾(针对IBM的傲慢),一起努力,开始了MULTICS分时操作系统的研制。

不过,在MULTICS还没有开发出来时,开发团队内部出现了分歧,贝尔实验室的几个人越来越看不惯DEC和MIT的人,觉得这伙人的思维方式跟自己不一样,做的东西不专业,觉得和他们一起做研究把自己的水平降低了,就自立门户,搞出了UNIX,并因此获得图灵奖。而UNIX的出现,使得MULTICS从一面世,就不能挺立,真是中国历史上“既生瑜,何生亮”在计算机操作系统历史上的完美演绎。不过,MIT最后还是做出了一个应用于部分商用领域的分时操作系统CTSS(Compatible Time Sharing System)。而DEC公司则做出了非常成功的VMS操作系统。

分时操作系统通常运行在第三代计算机PDP、VAX和CRAY上,其中PDP、VAX是DEC公司生产的,不过DEC已经不复存在。CRAY是CRAY公司生产的。

驱动这个阶段操作系统发展的动力是响应时间和对越来越多资源的管理。因为机器的昂贵,我们不能容忍机器(CPU)在I/O设备工作期间闲置。同时,因为人的时间宝贵,我们不能容忍人们坐在机器前漫长等待。因此发明了分时操作系统来解决这两个问题。因为分时引入的多道程序设计,又造成操作系统的空前复杂,我们需要应对竞争、通信、死锁、保护等一系列的新功能。因此,操作系统在本阶段变得相当复杂。

第五代之二:实时操作系统

随着人类技术的进步,计算机得到了广泛应用。其中的一种应用称为进程控制系统,即使用计算机监控某些工业进程,并在需要的时候采取行动。所有这些系统都具备一个特点:计算机对这些应用必须在规定时间内做出响应,否则有可能发生事故或灾难。例如,在工业装配线上,当一个部件从流水线上一个工作站流到下一个工作站时,这个工作站上的操作必须在规定时间内完成,否则就有可能造成流水线瘫痪,而影响企业的生产和利润。又例如,在导弹防卫系统中,对来袭导弹的轨迹计算必须在规定时间内完成,否则就可能被来袭导弹击中而无法做出反应。其他对计算机响应时间有要求的系统包括核反应堆状态监视系统、化学反应堆监视系统、航空飞行控制系统等。

这种对计算机响应时间有要求的系统通常称为临界系统或应用。而为了满足这些应用对响应时间的要求,人们开发出了实时操作系统。实时操作系统是指所有任务都在规定时间内完成的操作系统,即必须满足时序可预测性(timing predictability)。需要注意的是,实时系统并不是指反应很迅速的系统,而是指反应具有时序可预测性的系统。当然了,在实际中,实时系统通常是反应很迅速的系统。但这是实时系统的一个结果,而不是其定义。

显然,实时操作系统的最重要部分就是进程或工作调度。只有精确、合理和及时的进程调度才能保证响应时间。当然,对资源的管理也非常重要。没有精密复杂的资源管理,确保进程按时完成就成了一句空话。另外,基于其使用环境,实时操作系统对可靠性和可用性要求也非常高。如果在这些方面出了问题,时序可预测性将无法达到。

实时系统通常又分为软实时系统和硬实时系统。软实时系统在规定时间得不到响应所产生的后果是可以承受的,如流水装配线。即使装配线瘫痪,也只是损失了资金;而硬实时系统在得不到实时响应后则可能产生不能承受的灾难,如导弹防卫系统。如果反应迟钝,结果就可能是严重损失。

商用实时操作系统的代表有VxWorks和EMC的DART系统。

第六代:现代操作系统(1980年以后)

在20世纪80年代后期,计算机工业获得了井喷式的发展。各种新计算机和新操作系统不断出现和发展,计算机和操作系统领域均进入了一个百花齐放、百家争鸣的时代。尤其重要的是工作站和个人机的出现,使计算机大为普及。独享计算机也可以负担得起。这个时候的操作系统代表有:DOS、Windows、UNIX、Linux和各种主机操作系统,如VM、MVS、VMS等。DOS、Windows、UNIX、Linux通常称为开放式系统操作系统,分别运行在PC机、VAX和Workstation上。操作系统也重新回到子函数库的状态。

随着硬件越来越便宜,个人机出现在人们的视野中。人们可以拥有自己的计算机,而无需与他人分享。在刚刚出现个人机的时候,拥有个人机的人感觉很好,而那些需要与别人共享小型机的人则感觉不好。由于个人机由用户一个人独享,分时操作系统的许多功能就无须存在。因此,个人机操作系统又变回到了标准函数库系统。这时最著名的当属DOS、Windows 3X、苹果机操作系统(Mac OS)等。

但在独享了一阵个人机后,人们发现,没有分时功能的操作系统使一些事情无法完成。这是因为,虽然只有一个人在使用机器,但这个人可能想同时做好几件事,例如,同时运行好几个程序,没有分时功能这是不可能的。于是,人们觉得需要对个人机操作系统进行改善,将各种分时功能又加入了操作系统。

这时候就需要对程序进行保护,因为现在运行多个程序。虽然都是你的东西,但是也不能混淆。于是,Windows NT出现了,Xenix出现了,Ultrix出现了。

这个时候的另外一个特征是网络的出现。网络促进了网络操作系统和分布式操作系统的出现。对于网络操作系统来说,其任务是将多个计算机虚拟成一个计算机。传统的网络操作系统是在现有操作系统的基础上增加网络功能,而分布式操作系统则是从一开始就把对多计算机的支持考虑进来,是重新设计的操作系统,所以比网络操作系统效率高。分布式操作系统除了提供传统操作系统的功能外,还提供多计算机协作的功能。

操作系统的演变过程

计算机操作系统的演变可以分为三条发展线索,分别是主机操作系统、服务器操作系统和个人机操作系统。图2-2简略地表示了这三条线索上操作系统的演变历史。

这里写图片描述

图2-2最左面的3列代表主机操作系统的演变,最右面的两列代表个人机操作系统的演变,中间列出了服务器操作系统的演变。当然,到最后,这三大块的界限也不是很清晰。

主机操作系统的演变从输入输出控制系统IOCS和IBSYS开始,经历OS/360的里程碑式的突破,逐步演变为VS、MVS和VM三个系列(其中VM系列还吸取了UMES和CTSS的某些特征)。目前IBM是这三个系列的开发商和运营商,其VM操作系统经历多代后已经变得十分可靠。美国大型金融证券公司都在使用它们。

服务器操作系统的演变从UMES开始,经CTSS演变为IBM的MVS和VM操作系统,经MULTICS演变为UNIX系统。在20世纪80年代初,UNIX一分为二:由AT&T(美国电话电报公司)提供的System系列和由UCB提供的BSD系列。XENIX为微软公司为PC机而移植的AT&T版的UNIX操作系统。AT&T是UNIX的鼻祖,UCB则在美国国防部的支持下开发了BSD(伯克利软件分配)系列。

IBM和斯坦福大学看到AT&T和UCB的UNIX软件后,也不甘示弱,分别研发了AIX和SUN OS(SUN是Stanford University Networks(斯坦福大学网络)的缩写)。这样UNIX就形成了4个系列:AT&T的System系列、IBM的AIX系列、SUN的SUN OS系列以及UCB的BSD系列。

20世纪90年代中期,在美国国防部停止对BSD的支持后,UCB亦停止了BSD系列的研发,而AT&T也在与BSD焦头烂额的较量中放弃了System系列。Linux则趁AT&T和UCB忙于与对方较量的时候发展起来。卡内基梅隆大学(Carnegie Mellon University)在看到UCB和斯坦福大学都研发了UNIX后,慌忙开发了个MACH操作系统。MACH为微内核操作系统,在学术界得到了一定的使用,但由于其运行效率低下而没有获得商业上的广泛应用。这样UNIX的商业使用版本就剩下AIX、SOLARIS系列(SUN OS的后续版本)和Linux系列。后来由于惠普公司(HP)加入到服务器行列使得UNIX家族又增加了一个版本:HPUX。在UNIX家族中,SUN公司濒临灭亡的命运令SOLARIS的前途堪忧。

个人机操作系统的演变可以说是从DOS开始的。微软公司在1980年以100美元的成本买断了DOS的版权。而DOS的功能很简单:文件没有文件夹,所有文件都保存在同一个地方,谁都可以删除操作系统。当然那时也没有那么多人从事破坏活动。在看到苹果公司的Mac OS的图形界面后,微软公司给DOS增加了一个图形界面,称为Windows。Windows在发展了几个版本后,到Windows 98时,微软公司改变了战略。因为到当时为止,所有的Windows并不是真正的操作系统,而是覆盖在DOS上的一个用户图形界面,并不支持多道编程。微软高管比尔·盖茨亲自打电话给DEC的David Cutler,请其过来主持新一代Windows操作系统的研发工作。

David Cutler是DEC公司VMS操作系统的主要设计人员。他从DEC带过来一批人到微软公司工作,设计出了Windows NT操作系统。这是一个真正的支持多道编程的操作系统。Windows NT继承了VMS的优良结构和Windows 3X的图形界面,在一推出就获得了市场的认可。Windows NT经过几代演变,成为现在的Windows Vista。Windows操作系统系列也从单一的支持个人机演变为支持个人机和服务器的“双料”操作系统。

操作系统的分类

操作系统基本上可以分为:主机操作系统,如OS/260、OS/390、CTSS;服务器操作系统,如UNIX、Windows 2000、Linux;多CPU计算机操作系统,如Novell Netware;个人计算机操作系统Windows 2000、Windows XP、Mac OS;实时操作系统,如VxWorks、DART;嵌入式操作系统,如Palm OS、Windows CE、Android、Symbian等。

同一台计算机可以运行不同的操作系统,而同一个操作系统也可以运行在不同的计算机上。例如,个人机上可以运行的操作系统包括DOS、Linux、NeXTSTEP、Windows NT、SCO UNIX等DEC VAX计算机上可以运行的操作系统有VMS、Ultrix32、BSD UNIX等。UNIX操作系统可以运行在XENIX 286、APPLE A/UX、CRAYY/MP、IBM 360/370等计算机上;Windows NT/XP可以运行在Intel 386和Itaninum、DEC的Alpha、摩托罗拉的PowerPC和MIPS计算机的MIPS上。

当然,运行在不同机器上的UNIX版本并不一样,例如运行在IBM 360/370上的UNIX是Amdahl UNIX UTS/580和AIX/ESA,而运行在CRAYY/MP计算机上的UNIX是AT&T System V。

操作系统的未来发展趋势

随着计算机不断普及,操作系统的功能会变得越来越复杂。在这种趋势下,操作系统的发展将面临两个方向的选择:一是向微内核方向发展,二是向大而全的全方位方向发展。微内核操作系统虽然有不少人在研究,但在工业界获得的承认并不多。这方面的代表是MACH系统。在工业界来说,操作系统是向着多功能、全方位方向发展。Windows XP操作系统现在有4000万行代码,Windows 7的代码规模更大,某些Linux版本有2亿行代码,SOLARIS的代码行数也在不断增多。鉴于大而全的操作系统管理起来比较复杂,现代操作系统采取的都是模块化的方式,即一个小的内核加上模块化的外围管理功能。

例如最新的SOLARIS将操作系统划分为核心内核和可装入模块两个部分。其中核心内核分为:系统调用、调度、内存管理、进程管理、VFS框架、内核锁定、时钟和计时器、中断管理、引导和启动、陷阱管理、CPU管理;可装入模块分为:调度类、文件系统、可加载系统调用、可执行文件格式、流模块、设备和总线驱动程序等。

最新的Windows将操作系统划分成内核(kernel)、执行体(executive)、视窗和图形驱动和可装入模块。Windows执行体又划分为:I/O管理、文件系统缓存、对象管理、热插拔管理器、能源管理器、安全监视器、虚拟内存、进程与线程、配置管理器、本地过程调用等。而且,Windows还在用户层设置了数十个功能模块,可谓功能繁多,结构复杂(见图2-3)。

这里写图片描述

进入21世纪以来,操作系统发展的一个新动态是虚拟化技术和云操作系统的出现。虚拟化技术和云操作系统虽然听上去有点不易理解,它们不过是传统操作系统和分布式操作系统的延伸和深化。虚拟机扩展的是传统操作系统,将传统操作系统提供的一个虚拟机变成多个虚拟机,从而同时运行多个传统操作系统;云操作系统扩展的是分布式操作系统,而这种扩展有两层意思:分布式范围的扩展和分布式从同源到异源的扩展。虚拟机技术带来的最大好处是闲置计算资源的利用,云操作系统带来的最大好处是分散的计算资源整合和同化。

讨论:操作系统虚拟化和虚拟化的操作系统

随着虚拟化及云计算等技术的出现和不断演变,人们心目中的各种传统计算技术、模型和理论都在发生改变。操作系统作为计算机的核心系统软件,其面临的调整或挑战可能更为深刻,也更为细腻。有人断言,虚拟化将迫使操作系统退出历史舞台,因为操作系统的功能将由虚拟机来替换。但情况的发展似乎并没有为这种观点提供佐证。

不论从管理者的角度看,还是从魔术师的角度看,虚拟机本身就是一个操作系统,只要虚拟机在运行,操作系统就在运行,只不过更换了一个名字而已。因此,所谓的操作系统将退出历史舞台一说实属偷换概念。当然,虚拟机与传统的操作系统有所不同,虚拟机设计的侧重点、功能范畴、某些功能的实现哲学并不完全等同于传统的操作系统。也许,那些声称操作系统将退出历史舞台的人指的是传统的非虚拟机操作系统。

事实上,传统的操作系统也不会退出历史舞台。不过,其在虚拟化时代发挥作用的方式有可能发生变化。有迹象表明,传统操作系统扮演的角色在全虚拟化环境下有所收敛并出现专攻趋势。例如,一种已经露出端倪的倾向是将应用软件和操作系统打包发布,即应用程序与其赖以运行的操作系统的部分功能作为一个软件包发布出来。用户运行软件时不再需要先安装操作系统,只需要安装一个虚拟机即可。这样不同的软件包可以打包不同的操作系统,用户无需因为购买了不同的软件而需要安装不同的操作系统。根据应用软件的具体情况,被打包的操作系统功能部分可能很小,也可能较大,但由于一个应用软件常常不会用到一个传统操作系统各方面的功能,因此这种打包里面的操作系统功能将不包括整个传统操作系统的功能。

在这种打包发布模式下,用户的运行环境只有虚拟机,而与传统操作系统剥离。应用软件开发商无需针对不同的操作系统为自己的软件开发多个版本,而只需要支持一种操作系统即可。由于一个应用只为一个操作系统而写,因此应用软件开发商可以选择一个最能增加应用软件稳定性的操作系统作为平台来打包发布。这样一个重要的问题就是应用软件开发商如何选择最合适的操作系统。考虑的因素当然包括安全性、稳定性、易用性、功能性和效率。至于每一个因素所应该占的比重到底是多少,当然是仁者见仁、智者见智,也因软件开发商的不同而不同。

无论虚拟化或者去虚拟化,无论操作系统与应用软件打包还是不打包,一个不变的因素是扮演魔术师与管理者角色的这种软件是不可或缺的,不管这个角色是叫做操作系统,还是叫做虚拟机,或者是其他更加令人匪夷所思的名称。其实,名称叫什么不要紧,关键的问题是学习掌握如何扮演魔术师和管理者。而达到这个目的途径就是——学习操作系统。

操作系统奇异点

随着人们不断提高对信息安全重视程度,如何构建可靠、可用和安全的操作系统就成为一个十分重要的课题。而对可靠、可用和安全的追求无疑将令操作系统更复杂,操作系统的规模也将不断增大。从UNIX的1400行代码到Windows XP的4000万行代码,这完全是一种爆炸式增长。而爆炸式增长的后果就是,操作系统设计已经变得极为复杂和困难。以致商用操作系统在关键机制的实现上都或多或少地进行了偷工减料,从而严重影响了操作系统的稳定性。另外,规模的庞大使得没有什么人能够完全理解一个完整的操作系统,而这种状况同样将限制操作系统的可靠性、可用性和安全性。这迫使我们不得不思考:操作系统能在复杂性和规模不断增加的情况下保持正确性和可靠性吗?它能在今天的云计算时代取得突破,而达到我们所祈望的“操作系统奇异点”(OS singularity)吗?

经上写着,不要预测将来。那就让我们拭目以待吧……

操作系统之哲学原理.epub 立即下载

相关推荐

ESP32S3开发板玩转多语言AI对话:小智语音机器人粤语/日语/韩语实测

本文基于正点原子ESP32S3开发板,实测了“小智AI”语音机器人的多语言对话能力。项目巧妙整合云端AI与嵌入式硬件,实现了对粤语、日语、韩语等语言的实时识别与合成,为开发者和爱好者提供了一个低成本、可玩性高的跨语言人机交互开发平台。

h9j8k7l6m5n的博客 537

linux操作系统未来的发展方向,2.9 操作系统的未来发展趋势

2.9 操作系统的未来发展趋势随着计算机不断普及,操作系统的功能会变得越来越复杂。在这种趋势下,操作系统的发展将面临两个方向的选择:一是向微内核方向发展,二是向大而全的全方位方向发展。微内核操作系统虽然有不少人在研究,但在工业界获得的承认并不多。这方面的代表是MACH系统。在工业界来说,操作系统是向着多功能、全方位方向发展。Windows XP操作系统现在有4000万行代码,Windows 7的代...

weixin_39842029的博客 1603

Procedural modeling

What is procedural modeling? One content generation option is modeling buildings, plants, clouds, cities, and worlds using an underlying system of rules. 1 Procedural Modeling: Grammars A rule-based generative system loosely organized as: ...

qq_24505417的博客 711

计算机的心智:操作系统之哲学原理 pdf电子书

重要提示尊敬的用户您好,由于该计算机的心智:操作系统之哲学原理pdf电子书受百度网盘影响无法做公共分享,只能私密分享,有不到之处请多多谅解! 百度网盘链接: http://pan.baidu.com/s/1F0rAa 密码: tkq9 编辑推荐: 所见的是暂时的,所不见的是永远的。 这是一个瞬息万变的时代。 分布式计算的脚步渐行渐远,网格计算的热潮逐步退却,云计算和云存储

花虫专栏 4036

wifi/BT芯片RTL8723DS驱动移植和测试之一wifi篇

本文主要介绍如何在stm32mp157中移植并测试芯片RTL8723DS的wifi功能。

汉尼拔勇闯天涯 8738

常见的数值积分方法 (欧拉、中值、龙格-库塔,【常用于IMU中】)

1. 积分基本概念 设F(x)为函数f(x)的一个原函数,我们把函数f(x)的所有原函数F(x)+C(C为任意常数)叫做函数f(x)的不定积分(indefiniteintegral)。 非线性微分方程: 在有限的时间间隔Δt积分: 连续时间内积分: 工程上最常见的有三种:欧拉积分(Euler method)、中值积分(Midpoint method)和龙格-库塔法积分(Runge–Kutta methods)。他们的区别就是如何用数值方法模拟一个斜率。这里简单总结如下: ...

努力努力努力 2万+

顶级的程序员是怎么样的?

贝尔实验室中的顶级程序员 计算机先驱布莱恩·W. 克尼汉(Brian,W.,Kernighan) Brian,W.,Kernighan 我出生于多伦多,曾就读于多伦多大学,专业是工程物理(后来改名为工程科学),这是为那些自己也不知道想学什么的人准备的“大杂烩”专业。我毕业于1964年,那时电子计算正处于早期阶段:我大三时才第一次见到计算机。整个学校只有一台IBM 7094大型计算机,算是当时最高端的设备。它拥有32K(32 768)个36位字长的磁芯存储器(如今我们会说是128 KB),还有大机械

人邮异步社区 1458

OTP/EEPROM 读取与处理

Camera OTP/EEPROM 读取与处理 文章目录Camera OTP/EEPROM 读取与处理1. OTP概念1.1 基本概念1.2 OTP存储类型1.3 OTP烧录信息类型1.4 OTP 作用2. 配置准备2.1 基本认识2.2 OTP/EEPROM配置3. OTP/EEPROM datasheet理解 以及 读取方式3.1 data sheet 内容3.2 一般OTP/EEPROM(e...

Understand-image 1万+

操作系统之哲学原理第2版 阅读笔记(三)

当然!编译器是一种软件工具,用于将高级编程语言(如C、C++、Java等)编写的源代码转换为低级机器语言或字节码,以便计算机能够理解和执行。它是构建软件应用程序的关键组件之一。以下是编译器的一些主要功能和组成部分:词法分析(Lexical Analysis):编译器首先将源代码分解成一系列词法单元(tokens),例如关键字、标识符、运算符等。这个过程通常涉及扫描源代码并将其分割成词法单元流。请问“如何实现单道编程的内存管理” 请问“操作系统应该被存储到哪个位置更加合理呢?” 介绍一下编译器好吗? 交

m0_62574889的博客 391

PX4从放弃到精通(二十二):日志

文章目录前言一、下载日志二、ulog转CSV三、利用flightplot软件分析PX4的ulog日志1 windos安装2 ubuntu18.04安装四、使用PlotJuggler分析PX4日志五、设置日志记录条件六、添加自定义日志消息 前言 PX4 1.10以上固件 QGC 一、下载日志 将飞控链接地面站,在下图页面点击“刷新”,即可看到保存的日志(前提是要有TF卡) 选择需要下载的日志,点击右侧的“下载”,然后选择目录即可进行下载,如果想擦除所有的日志,可以点击右侧的“擦除全部” 二、ulog转CS

超维空间科技的博客 6792

MATLAB极坐标伪彩色圆图绘制之polarPcolor函数

polarPcolor函数介绍 我们经常在论文或期刊上看到如下图这种以色调冷暖代表数值大小的极坐标圆图, 而function [varargout] = polarPcolor(R,theta,Z,varargin)可以很好的帮助我们快速绘制这类极坐标圆图。它非常适合雷达或激光雷达的平面位置指示器。使用polarPcolor函数时,我们只需根据手中数据构造相应的二维矩阵Z即可,十分便捷。varargin值为绘制模式选择。R值为半径坐标一维矩阵,theta值为角坐标一维矩阵。 代码示例 这里使用了海洋表面耀光

qq_19512613的博客 1万+

《操作系统之哲学原理》读书总结

《操作系统之哲学原理》读书总结 全书的内容结构如下,分为基础原理,进程原理,线程原理,内存原理,文件原理,I/O原理,多核原理与操作系统设计篇。 1 操作系统的角色:魔术师跟管理者,本质是“人造机器” 程序到结果的过程如下: 操作系统的具体任务:CPU管理,内存管理,外存管理,I/O管理,批处理 CPU即进程管理,主要目的有3个,第一个是公平,第二个是非阻塞,第三个是优先级 内...

wulitaotao96的博客 936

物理信息神经网络(PINN)文献综述 —— 原理、严格推导与优化训练策略

本章系统阐述物理信息神经网络的理论基础、主要算法改进与训练策略。内容涵盖:PINN 的数学表述与残差构造;损失与梯度的逐步推导;训练困难(梯度消失/爆炸、损失幅度不平衡、频谱偏差、采样效率低等)的定量分析;四类核心解决方案(动态损失加权、梯度归一化与预条件化、自适应采样、分阶段/分域训练)的详细推导与实现要点;以及若干关键算法的伪代码与收敛性形式结论。所有涉及推导的步骤均按顺序展开,给出必要的数学依据与结论性陈述,可直接作为教学或参考章节使用。

u012133341的博客 422

操作系统之哲学原理连载之二

各位会员朋友,在华章官方博客上连了邹恒明老师的《操作系统之哲学原理之一》之后,大家反应很热烈,如于我们继续推出后续的连载内容。由于优快云博客格式以及图片显示问题,有些地方可能会出现乱码,敬请大家谅解。  操作系统之哲学原理连载之二  第1篇 基础原理篇序对于任何一门课来说,首要探讨的问题就是这门课的主题到底是什么?对于刚接触到操作系统的入门者来说,一个自然的问

华章IT官方博客 5307

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

操作系统之哲学原理连载之三

 2009年最值得关注的操作系统图书操作系统之哲学原理连载之三操作系统之哲学原理连载之一操作系统之哲学原理连载之二  第2章 操作系统历史之哲学原理引子上世纪末本世纪初,美国兴起了励志演讲(Motivational Speech)潮,各种人等乐此不疲。在这拨励志大潮中,出现了多名影响力广泛的励志演说家。这些演说家所到之处,真是万人空巷,人潮涌动,场面之壮观令

华章IT官方博客 6205

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

操作系统哲学原理(02)基础原理- 操作系统历史

说明:该系类文章主要是从哲学视角看操作系统 这门学科。同时也是博主阅读《操作系统之哲学原理》的笔记总结。因为博主 这些年主要是以研究安卓系统和 嵌入式Linux为主,因此这个系类文章也是这两个领域不可或缺的基石之一。 2操作系统历史 操作系统不断发展与改善的几个因素: 硬件成本不断下降 计算机的功能和复杂性不断变化 操作系统与攻击者之间的博弈 2.1第一阶段:状态机操作系统(1940年以前) 简单的状态转换程序,计算也仅限于加减法,这个时代的操作系统是人,因为自动机完全由人来操作。 2...

wangdsh的博客 1027

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

操作系统之哲学原理

​ 这本书以人类自我管理的角度,来看待操作系统的几个核心功能。操作系统是人造的,所以很多设计都借鉴了人类在长期的生活实践中摸索出来的管理社会和保障自身安全的各种办法。 ​ 另一个不得不接受的事实是,因为操作系统是人造的,它远不完美。数学力求精确,而软件却没有任何精确可言,是十足的“差不多”学科。因为软件是一门人造学科,它没有对与错(这里指的是同一功能的不同实现,而不是说程序不可能出现...

不能如期而至的专栏 1747

2009年最值得关注的操作系统图书《操作系统之哲学原理》

2009年最值得关注的操作系统图书《操作系统之哲学原理》 分布式计算的脚步渐行渐远,网格计算的热潮逐步退却,云计算和云存储正慢慢揭开面纱……在所有变化中,不变的是这些计算的支柱:操作系统!能否深刻理解它也许会决定云时代的“浮沉”。本书就从哲学原理(也就是人类生活哲学)的视角来阐述操作系统,从而揭开操作系统的神秘面纱,令其不再晦涩难懂。 本书从哲学的视角对操作系统的原理进行阐

华章IT官方博客 1740

计算机的心智:操作系统之哲学原理

计算机的心智:操作系统之哲学原理【作  者】邹恒明 【出 版 社】 机械工业出版社 【书 号】 9787111266426 【上架时间】 2009-4-15 【出版日期】 2009 年4月 【开 本】 16开 【页 ...

csdn1232的博客 343

专题分纲目录 操作系统之哲学原理

专题分纲目录 均为索引,本纲为:操作系统之哲学原理 操作系统哲学原理 前言&总纲解读 操作系统哲学原理(01)基础原理-操作系统导论 操作系统哲学原理(02)基础原理-操作系统历史 操作系统哲学原理(03)基础原理-操作系统的基本概念 操作系统哲学原理(04)进程原理-进程 操作系统哲学原理(05)进程原理-进程调度 操作系统哲学原理(06)进程原理-进程通信 操作系统哲学原理(07)线程原理-线程 操作系统哲学原理(08)线程原理-线程同步 操作系统哲学原理(09)线程原...

wangdsh的博客 641

操作系统之哲学原理2----操作系统历史

操作系统不断发展和改善的三个驱动因素: 硬件成本不断下降 计算机不断变复杂 操作系统与攻击者之间的博弈(近些年新引入) 第一阶段:状态机操作系统(~1940) 一种状态转换程序。 第二阶段:单一操作员单一控制端(20世纪40年代) 操作系统提供一些命令,操作员使用命令。 第三阶段:批处理操作系统(20世界50年代) 解决操作系统等待人输入命令的时间消耗。 所有人先想好要运行的命令,列出一个清单,交给一个工作人员。 工作人员将一批任务交给操作系统,操..

一个热爱逆向,喜爱学习、分享的猿。 320

操作系统哲学原理 前言&总纲解读

说明:该系类文章主要是从哲学视角看操作系统 这门学科。同时也是博主阅读《操作系统之哲学原理》的笔记总结。因为博主 这些年主要是以研究安卓系统和 嵌入式Linux为主,因此这个系类文章也是这两个领域不可或缺的基石之一。 第0篇 前言 计算机的心智:人的心智是灵气,计算机的心智是操作系统。 没有人敢肯定计算机在任意时刻所处的状态。 操作系统就是人类世界的一个映射,所有的策略,手段看上去枯燥,但都有其原因和背景,都有人性的特点。 操作系统的奥秘:设计操作系统的人会不自觉地将自己的思维以及人生追求构造..

wangdsh的博客 561

第二章-----操作系统历史

第二章—–操作系统历史标签(空格分隔): 操作系统之哲学原理

XQF 663
上一篇: UIScrollView的自动布局
下一篇: 单核处理器、多核处理器、多处理器与多线程编程
活在生活里
博客等级 码龄11年 94粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值