购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 操作系统的发展历程

操作系统的历史在某种意义上讲也是计算机的历史。操作系统提供对硬件控制的调用和应用程序所必需的功能。

早期的计算机没有操作系统。用户有单独的机器,人们会带着记录着程序和数据的卡片或较后期的打孔纸去操作机器。程序读入机器后,机器就开始工作直到程序停止。由于程序难免有误,所以机器通常会中途崩溃。程序一般通过控制板的开关和状态灯来调试。据说图灵能非常熟练地用这种方法操作Manchester Mark Ⅰ机器。

后来,机器引入了帮助程序输入、输出等工作的代码库。这是现代操作系统的起源,然而,机器每次只能执行一件任务。在英国剑桥大学,这些任务的磁带从前被排成一排挂在衣钩上,衣钩的颜色代表任务的优先级。

实际上,概念意义上的操作系统和通俗意义上的操作系统差距越来越大。通俗意义上的操作系统为了方便而把最普通的包和应用程序的集合包括在操作系统内。随着操作系统的发展,一些功能更强的“第二类”操作系统软件也被包括进去。在今天,如果没有图形界面和各种文件浏览器就不能被称为一个真正的操作系统了。

早期的操作系统非常多样化,生产商会生产出针对各自硬件的系统。每个操作系统都有不同的命令模式、操作过程和调试工具,即使它们来自同一个生产商。最能反映这一状况的是,厂家每生产一台新的机器都会配备一套新的操作系统。这种情况一直持续到20世纪60年代,IBM公司开发了System/360系列机器。尽管这些机器在性能上有明显的差异,但是这些机器有统一的操作系统——S/360。后来,S/360的成功陆续地催化出MFT、MVT、SVS、MVS、MVS/XA、MVS/ESA、S/390和z/S。

UNIX操作系统是由AT&T公司开发出来的。由于它的早期版本是完全免费的,并且可以轻易获得并随意修改,所以得到了广泛应用。后来,它成为开发小型机操作系统的起点。由于早期的广泛应用,UNIX已经成为操作系统的典范。不过,它始终属于AT&T公司,只有那些能负担得起许可费的企业才用得起,这限制了它的应用范围。

早期的操作系统是可以被用户软件所利用的功能的集合。一些有能力的公司开发出更好的系统,但这些系统通常不支持其他公司硬件的特性。

20世纪60年代末70年代初,几种硬件支持相似的或提供端口的软件可在多种系统上运行。早期的系统已经利用微程序实现某些功能。

20世纪80年代前,第一部计算机并没有操作系统。这是由于早期计算机的建立方式(如同建造机械算盘)与效能不足以执行如此程序。1947年发明了晶体管,以及莫里斯·威尔克斯(Maurice Vincent Wilkes)发明的微程序方法,使计算机不再是机械设备,而是电子产品。系统管理工具及简化硬件操作流程的程序很快就出现了,并且成为操作系统的滥觞。到了60年代早期,商用计算机制造商制造了批次处理系统,此系统可将工作的建置、调度及执行序列化。此时,厂商为每台不同型号的计算机开发不同的操作系统,因此为某计算机而写的程序无法移植到其他的计算机上执行,即使是同型号的计算机也不行。

到了1964年,IBM公司推出了一系列用途与价位都不同的大型计算机,IBM System/360是大型主机的经典之作,而它们都共享代号为OS/360的操作系统(非每种产品都用量身定做的操作系统)。让单一操作系统适用于整个系列的产品是System/360成功的关键,并且实际上IBM公司目前的大型系统便是此系统的后裔,为System/360所写的应用程序依然可以在现代的IBM机器上执行!

OS/360推动了永久存储设备硬盘驱动器(Direct Access Storage Device,DASD)的面世。并且建立了分时概念:将大型计算机珍贵的时间资源适当地分配到所有使用者身上。分时也让使用者有独占整部机器的感觉,而Multics的分时系统是当时众多新操作系统中实践此观念最成功的。

1963年,奇异公司与贝尔实验室合作以PL/I语言建立的Multics是激发70年代众多操作系统建立的灵感来源,尤其是由AT&T及贝尔实验室的丹尼斯·里奇与肯·汤普森所研发的UNIX系统,为了实践平台移植能力,此操作系统在1969年由C语言重写;另一个广为市场采用的小型计算机操作系统是VMS。

微型处理器的发展使计算机被广泛地应用于中小企业,甚至个人爱好者也可以拥有自己的计算机,而计算机的普及又推动了硬件组件公共接口的发展(如S-100、SS-50、AppleⅡ、ISA和PCI总线),并逐渐地要求有一种“标准”的操作系统去控制它们。在这些早期的计算机中,主要的操作系统是8080/8085/Z-80CPU用的Digital Research's CP/M-80,它建立在数码设备公司(Digital Research)的几个操作系统的基础上,主要针对PDP-11架构。在此基础上又产生了MS-DOS(或IBM公司的PC-DOS)。这些计算机在只读存储器(Read-Only Memory,ROM)上都有一个小小的启动程序,可以把操作系统从磁盘装载到内存。IBM-PC系列的BIOS是这一思想的延伸。自1981年第一台IBM-PC诞生以来,BIOS的功能得到不断的增强。

随着显示设备和处理器成本的降低,很多操作系统开始提供图形用户界面。如UNIX提供的X-Window一类的系统、微软的Windows系统、苹果公司的Mac系统和IBM公司的S/2系统等。最初的图形用户界面是由Xerox Palo Alto研究中心在20世纪70年代初期研发出来的,之后被许多公司模仿、继承及发展。

20世纪80年代第1代微型计算机并不像大型计算机或小型计算机,没有安装操作系统的需求或能力;它们只需最基本的操作系统,通常这种操作系统从ROM读取数据,此种程序被称为监视程序(Monitor)。

1980年,家用计算机开始普及。通常此时的计算机拥有8比特处理器加上64KB内存、屏幕、键盘及低音质扬声器,而20世纪80年代早期最著名的套装计算机为使用微处理器6510(6502芯片特别版)的Commodore 64。此计算机没有操作系统,而是以一个8KB只读内存BIOS初始化彩色屏幕、键盘及软驱和打印机。它可用8KB只读内存通过BASIC语言来直接操作BIOS,并依此撰写程序,大部分程序是游戏。BASIC语言的解释器勉强可算是此计算机的操作系统,当然没有内核或软硬件保护机制。此计算机上的游戏大多跳过BIOS层,直接控制硬件,家用计算机Commodore 64的抽象架构包括简单应用程序机器语言(游戏直接操作)、8KB BASIC ROM、8KB ROM-BIOS、硬件(中央处理器、存储设备等)。

早期最著名的磁盘启动型操作系统是CP/M,它支持许多早期的微计算机,并且被MS-DOS大量抄袭其功能。

最早期的IBM PC架构类似Commodore 64。当然它们也使用了BIOS以初始化与抽象化硬件的操作,甚至也附了一个BASIC解释器。但是它的BASIC优于其他公司产品的原因在于可携性,并且兼容任何符合IBM PC架构的机器。这样的PC可利用Intel-8088处理器(16比特寄存器)寻址,并最多可有1MB的内存,然而最初只有640KB。软式磁盘机取代了过去的磁带机,成为新一代的存储设备,并可在512KB的空间上读写。为了支持更进一步的文件读写,磁盘操作系统(Disk Operating System,DOS)诞生。DOS可以合并任意数量的磁区,因此可以在一张磁盘上放置任意数量与大小的文件。文件之间以文档名区别。IBM公司并没有很在意其上的DOS,因此以向外部公司购买的方式取得了DOS。

1980年微软公司取得了与IBM公司的合约,并且收购了一家公司研发的操作系统,在将之修改后以MS-DOS的名义出品,此操作系统可以直接让程序操作BIOS与文件系统。到了Intel-80286处理器时代,才开始采用基本的存储设备保护措施。MS-DOS的架构并不足以满足所有需求,因为它只能同时执行一个程序(如果想要同时执行多个程序,则只能使用TSR的方式跳过操作系统,而由程序自行处理多任务的部分),并且没有任何内存保护措施。对驱动程序的支持也不够完整,因此导致诸如音效设备必须由程序自行设置的状况,从而造成很多不兼容的情况。某些操作的效能也很糟糕。许多应用程序因此跳过MS-DOS的服务程序,直接存取硬件设备以取得较好的效能。虽然如此,MS-DOS还是变成了IBM PC上最常用的操作系统(IBM公司自己也推出了DOS,称为IBM-DOS或PC-DOS)。MS-DOS的成功使微软成为最赚钱的公司之一。MS-DOS在个人计算机上的抽象架构包括普通应用程序(Shell Script、文本编辑器)、MS-DOS(文件系统)、BIOS(驱动程序)、硬件(中央处理器、存储设备等)。

20世纪90年代,苹果公司的第1代产品Apple Ⅰ计算机面世。延续20世纪80年代的竞争,90年代出现了许多影响未来个人计算机市场的操作系统。由于图形用户界面日趋繁复,操作系统的功能也越来越复杂,因此强韧且具有弹性的操作系统就成了当时迫切的需求。此年代是许多套装类的个人计算机操作系统互相竞争的时代。

20世纪70年代崛起的苹果计算机,由于旧系统的设计不良,使其后继发展不力,苹果公司决定重新设计操作系统。经过许多失败的项目后,苹果公司于1997年释出新操作系统——macOS的测试版,而后推出的正式版取得了巨大成功。让原先失意离开苹果的史蒂夫·乔布斯风光再现。

除了商业主流的操作系统外,从1980年起在开放源码的世界中,BSD系统也发展了非常久,但在1990年由于与AT&T的法律争端,使远在芬兰赫尔辛基大学的另一个开源操作系统Linux兴起。Linux内核是一个标准POSIX内核,其血缘可算是UNIX家族的一支。Linux与BSD家族都搭配GNU计划所发展的应用程序,但是由于使用的许可证及历史因素,Linux取得了相当可观的开源操作系统市场占有率,而BSD则小得多。

相较于MS-DOS的架构,Linux除了拥有傲人的可移植性(MS-DOS主要运行在Intel CPU上),它也是一个分时多进程内核,拥有良好的内存空间管理(普通的进程不能存取内核区域的内存),想要存取任何非自己的内存空间的进程只能通过系统调用达成。一般进程处于使用者模式(User Mode),而执行系统调用时会被切换成内核模式(Kernel Mode),所有的特殊指令只能在内核模式执行,此措施让内核可以完美地管理系统内部与外围设备,并且拒绝无权限的进程提出的请求,因此理论上任何应用程序执行时的错误都不可能让系统崩溃(Crash)。几乎完整的Linux架构包括使用者、模式应用程序(sh、vi、OpenOffice.org等)、复杂函数库(KDE、glib等)、简单函数库(opendbm、sin等)、C函数库(open、fopen、socket、exec、calloc等)、内核、以及模式系统中断、调用、错误等软硬件消息,此外还包括内核(驱动程序、进程、网络、内存管理等)、硬件(处理器、内存等)等。

而微软公司对于更强力的操作系统的呼声的回应便是Windows NT于1999年面世。

1983年开始微软公司就想要为MS-DOS建构一个图形化的操作系统应用程序,称为Windows。一开始Windows并不是一个操作系统,只是一个应用程序,其背景还是纯MS-DOS系统,这是因为当时的BIOS设计及MS-DOS的架构不甚良好。在1990年初,微软公司与IBM公司的合作破裂,微软公司从OS/2(早期为命令行模式,后来成为一个很成功但是曲高和寡的图形化操作系统)项目中抽身,并且在1993年7月27日推出Windows 3.1,一个以OS/2为基础的图形化操作系统,并在1995年8月15日推出Windows 95。直到这时,Windows系统依然是建立在MS-DOS的基础上,因此消费者莫不期待微软公司在2000年所推出的Windows 2000,因为它才算是第1个脱离MS-DOS基础的图形化操作系统。

在硬件阶层之上,有一个由微内核直接接触的硬件抽象层(HAL),而不同的驱动程序以模块的形式挂载在内核上执行,因此微内核可以使用诸如输入输出、文件系统、网络、信息安全机制与虚拟内存等功能,而系统服务层提供所有统一规格的函数调用库,可以统一所有副系统的实际调用接口方法。例如,尽管POSIX与OS/2对于同一件服务的名称与调用方法差异甚大,但是它们一样可以无碍地运行于系统服务层上。在系统服务层之上的副系统,全都是使用者模式,因此可以避免使用者执行非法行动。

简化版本的Windows NT抽象架构包括使用者、模式OS/2、应用程序Win32、应用程序DOS、程序Win16、应用程序POSIX、其他应用程序、其他DLL函数库、DOS系统、Windows模拟系统、OS/2副系统、Win32副系统、POSIX.1副系统、内核、模式系统服务层、输入输出管理、文件系统、网络系统、对象管理系统、安全管理系统、进程管理、对象间通信管理、进程间通信管理、虚拟内存管理、微内核窗口管理程序、驱动程序硬件抽象层图形驱动、硬件(处理器、内存、外围设备等)、副系统架构。

第1个实际运行系统服务的副系统群当然是以前的微软系统。DOS副系统将每个DOS程序当成一个进程执行,并以个别独立的MS-DOS虚拟机器承载其运行环境;另一个是Windows 3.1模拟系统,实际上是在Win32副系统下执行Win16程序,因此达到了安全掌控为MS-DOS与早期Windows系统所撰写的旧版程序的能力,然而此架构只在Intel 80386处理器及后继机型上运行,且某些会直接读取硬件的程序,例如大部分的Win16游戏就无法套用这套系统,因此很多早期游戏便无法在Windows NT上执行。Windows NT有3.1、3.5、3.51与4.0版。

Windows 2000是Windows NT的改进系列(事实上是Windows NT 5.0),Windows XP(Windows NT5.1)及Windows Server 2003(Windows NT 5.2)与Windows Vista(Windows NT 6.0)也都是基于Windows NT的架构。

而渐渐增长并越趋复杂的嵌入式设备市场也促进了嵌入式操作系统的成长。现代操作系统通常有一个使用绘图设备的图形化使用者界面,并附加如鼠标或触控面板等有别于键盘的输入设备。旧的操作系统或效能导向的服务器通常不会有如此亲切的接口,而是以命令行接口(CLI)加上键盘为输入设备。以上两种接口其实都是所谓的壳,其功能为接受并处理使用者的指令。

选择要安装的操作系统通常与其硬件架构有很大关系,只有Linux与BSD几乎可在所有硬件架构上执行,而Windows NT仅移植到了DEC Alpha与MIPS Magnum。

在1990年早期,个人计算机的选择就已被局限在Windows家族、类UNIX家族及Linux上,而选择Linux及macOS的为少数。

大型主机与嵌入式系统使用多样化的操作系统。很多大型主机开始支持Java及Linux,以便共享其他平台的资源。嵌入式系统百家争鸣,从给Sensor Networks用的Berkeley TinyOS到可以操作Microsoft Office的Windows CE都有。

计算机网络的出现催生了网络操作系统,随着移动终端及无线网络技术、局域网技术的不断发展,人们必将需要一种可以方便控制计算机及移动终端的系统。人们一定希望能像操作计算机一样在手机等移动终端上处理各种工作。这一点可以从苹果公司iPhone的热销看出来。

虽然在手机领域,嵌入式操作系统已有些通用操作系统的影子,然而在其他领域,如家电及机器人领域,就是完全独立的了,然而已有不少将家庭中的所有电器集中用一台计算机管理的设想。“数字家庭”就以计算机技术和网络技术为基础,各种家电通过不同的互连方式进行通信及数据交换,以期实现家用电器之间的“互联互通”。

这就对操作系统提出新的要求:能够管理完全不同的几类设备。也许在不久以后,人们可以像访问路由器一样访问家用电器。

随着操作系统的发展,以及计算机应用领域的扩展,安全问题显得越来越重要。和层出不穷的病毒和木马的斗争一直没有停止过,而闻名的超级工厂病毒,则使安全问题不再仅仅局限于普通的通用计算机操作系统。安全问题将推动操作系统个性化发展。 nXiLoQVnb1Wq5bzRpypGYXn+Kb6BrIjE+4xk74qDyzc1Q6qUU2K6m2gsX1CVN5Om

点击中间区域
呼出菜单
上一章
目录
下一章
×