操作系统的历史...
第一台计算机没有操作系统。这是因为早期的计算机是以一种方式建造的(就像建造一个机械算盘),其性能不足以执行这样的程序。
但在1947年,晶体管发明了,莫里斯·威尔克斯发明的微程序设计方法使计算机不再是机械装置,而是电子产品。简化硬件操作流程的系统管理工具和程序很快出现,并成为操作系统的起源。
到20世纪60年代初,商用计算机制造商已经制造出批处理系统,它可以将作业的构造、调度和执行序列化。此时,制造商为每台不同型号的计算机创建不同的操作系统,因此为一台计算机编写的程序无法移植到其他计算机,即使是同一型号的计算机。
1964年,IBM推出了一系列大型计算机IBM System/360,大型机的经典之作,用途和价格各不相同。而且都共享代号为OS/360的操作系统(而不是每一款产品都用一个量身定制的操作系统)。让单一的操作系统适用于整个系列的产品是System/360成功的关键,而实际上IBM目前的大型系统就是这个系统的后代;为System/360编写的应用程序仍然可以在现代IBM机器上执行!
OS/360还包括另一个优势:永久存储设备——硬盘驱动器(IBM称为DASD(直接存取存储设备))的出现。另一个关键是分时理念的建立:将大型计算机的宝贵时间资源合理分配给所有用户。分时也给了用户独占整机的感觉;Multics的分时系统是此时众多新操作系统中最成功的一个。
1963年,奇点公司与贝尔实验室合作建立了PL/I语言的Multics,这是1970年代许多操作系统建立的灵感,尤其是AT & amp;T贝尔实验室的dennis ritchie和ken thompson建立的Unix系统,为了练习平台的可移植性,在1969用C语言重写。市场上广泛使用的另一种小型计算机操作系统是VMS。
二十世纪八十年代
第一代微型计算机不像大型计算机或小型计算机,没有安装操作系统的需要或能力;他们只需要最基本的操作系统,通常是从rom中读取。这个程序叫做监视器。
在1980年代,家用电脑开始普及。通常这个时候的电脑都是8位处理器加64KB内存,屏幕,键盘,低质扬声器。在80年代初,最著名的计算机套件是Commodore C64,配有微处理器6510(6502芯片的特别版)。这台电脑没有操作系统。相反,它用8KB只读存储器BIOS初始化彩色屏幕、键盘、软盘驱动器和打印机。可以直接操作8KB只读存储器BASIC语言的BIOS,并在此基础上编写程序,大部分是游戏。这个基础语言的解释器勉强可以算是这台pc的操作系统,当然也没有内核或者软硬件保护机制。这款pc上的大部分游戏都跳过了BIOS这一关,直接控制硬件。
家用计算机C64的抽象体系结构
简单的应用机器语言(游戏直接操作)
8k基本只读存储器
8k ROM-BIOS
硬件(CPU、存储设备等。)
早期最著名的磁盘引导操作系统是CP/M,支持很多早期的微机,是MS-DOS复制的。
最早的IBM PC的架构类似于C64。当然,他们也用BIOS来初始化和抽象硬件的操作,甚至附上一个基本的解释器!但是它的BASIC优于其他公司产品的原因是它具有可移植性,可以兼容任何符合IBM PC架构的机器。这样的PC可以通过Intel-8088处理器(16位寄存器)寻址,它可以拥有高达1MB的内存,但最初只有640KB。软驱取代了过去的磁带机,成为新一代的存储设备,可以在其512KB的空间内读写。为了支持文件读写的进一步概念,磁盘操作系统(DOS)诞生了。这个操作系统可以合并任意数量的扇区,因此它可以在磁盘上放置任意数量和大小的文件。文档通过文件名来区分。IBM不太关心它的DOS,所以它通过从外部公司购买来获得操作系统。
1980年,微软通过欺骗手段获得了与IBM的合同,获得了某公司生产的操作系统。修改后以MS-DOS的名义生产,允许程序直接操作BIOS和文件系统。直到Intel-80286处理器时代,才开始实施基本的存储设备保护措施。MS-DOS的架构不足以满足所有要求,因为它最多只能同时执行一个程序(如果要同时执行进程,只能用TSR跳过OS,让程序自己处理多任务部分),而且没有内存保护措施。对驱动的支持不够完整,导致音响设备必须由程序自己设置的情况,不兼容的情况很多。有些操作的表现也很糟糕。因此,许多应用程序跳过MS-DOS的服务程序,直接访问硬件设备,以获得更好的性能。即便如此,MS-DOS还是成为了IBM PC上最常用的操作系统(IBM自己也推出了DOS,称为IBM-DOS或PC-DOS)。MS-DOS的成功使微软成为世界上最赚钱的公司之一。
个人计算机上MS-DOS的抽象体系结构
普通应用程序(外壳脚本、文本编辑器)
MS-DOS(文件系统)
BIOS(驱动程序)
硬件(CPU、存储设备等。)
在1980年代,另一个上升的操作系统异常是Mac OS,它与Macintosh紧密相连。全纪录实验室的员工张秀坤·哈根拜访了苹果电脑公司的史蒂夫·乔布斯,并向他展示了全纪录的图形用户界面。苹果电脑公司对大自然感到惊讶,并打算从路泉购买这项技术,但路泉拒绝了这笔交易,因为波拉特的实验室不是商业单位,而是研究单位。之后,苹果认同个人电脑的未来一定属于图形用户界面,于是开始开发自己的图形操作系统。现在很多我们认为是基本元素的图形界面技术和规则都是苹果电脑打下的(比如下拉菜单、桌面图标、拖动操作和双击等。).但正确地说,图形用户界面确实是路泉的创始人。
1990年代
苹果电脑第一代产品苹果I电脑。延续80年代的竞争,1990年代出现了很多操作系统,对未来的PC市场产生了深远的影响。随着图形用户界面变得越来越复杂,操作系统的功能变得越来越复杂和庞大,一个健壮和灵活的操作系统已成为迫切需要。这个时代是一个很多个人电脑操作系统打包互相竞争的时代。
最近十年市场崛起的苹果电脑,因为旧系统设计不佳,导致后续发展乏力,决定重新设计操作系统。经过多次失败的项目,苹果在1997年发布了新的操作系统——MacOS的测试版,随后正式版大获成功。让失意离开苹果的乔布斯重新出现。
除了商业主流操作系统之外,BSD系统从1980年代开始也在开源代码世界发展了很长时间,但是在1990年代,由于与AT & T的合作法律纠纷导致了另一个开源操作系统的兴起——Linux,它远在芬兰赫尔辛基大学。Linux内核是标准的POSIX内核,它的血统可以看作是Unix家族的一个分支。Linux和BSD家族都匹配GNU plan开发的应用,但是由于使用许可证和历史因素,Linux在开源操作系统中取得了相当大的市场份额,而BSD则小很多。
与MS-DOS的架构相比,Linux不仅具有令人印象深刻的可移植性(与Linux相比,MS-DOS只能在Intel CPU上运行),而且具有分时多进程内核和良好的内存空间管理(普通进程无法访问内核区的内存)。一个进程想要访问任何不属于自己的内存空间,只能通过系统调用来实现。一般进程都是用户态,但是执行系统调用的时候会切换到内核态,所有特殊指令都只能在内核态执行。这种措施允许内核完美地管理系统的内部和外部设备,并拒绝未经授权的进程发出的请求。因此,理论上,应用程序执行中的任何错误都不会使系统崩溃。
几乎完整的Linux架构图
用户
模式应用(上海、vi、OpenOffice.org等。)
复杂函数库(KDE、glib等。)
简单函数库(opendbm,sin等。)
c函数库(open,fopen,socket,exec,calloc等。)
核心
软件和硬件消息,如模式系统中断、调用和错误。
内核(驱动、进程、网络、内存管理等。)
硬件(处理器、内存、各种设备)
另一方面,微软响应更强大操作系统的号召,在1999中出现了Windows NT。
从65438年到0983年,微软想为MS-DOS打造一个图形化的操作系统应用,叫Windows(有人说比尔盖茨是受了苹果Lisa电脑上市的刺激)。
最开始Windows不是操作系统,而是应用,后台还是纯MS-DOS系统。这是因为当时的BIOS设计和MS-DOS架构都不是很好。
1990年初,微软与IBM的合作破裂,微软退出了OS/2(早期的命令行模式,后来成为非常成功的图形操作系统)的项目,并于7月27日推出了基于OS/2的图形操作系统Windows 3.1,1993。
Windows 95于8月1995推出。
到目前为止,Windows系统仍然是基于MS-DOS的,所以消费者期待微软在2000年推出Windows 2000,因为这是第一个脱离MS-DOS的图形操作系统。
下表显示了Windows NT系统的架构:在硬件层次之上,有一个微内核直接接触的硬件抽象层(HAL),不同的驱动以模块的形式挂载在内核上执行。所以微内核可以使用输入输出、文件系统、网络、信息安全机制、虚拟内存等功能。系统服务层为所有的函数调用库提供统一的规范,可以统一所有子系统的实现方法。比如,虽然POSIX和OS/2在同一个服务的名称和调用方法上有很大的不同,但是在系统服务层上可以毫无障碍的实现。系统服务层以上的子系统都是用户态,所以可以防止用户程序执行非法动作。
Windows NT抽象体系结构的简化版本
用户
模式OS/2
应用程序Win32
应用程序DOS
程序Win16
应用程序POSIX
应用程序
其他DLL函数库DOS系统Windows模拟系统
OS/2子系统Win32子系统POSIX.1子系统
核心
模式系统服务层
投入产出管理
文件系统、网络系统、对象管理系统/安全管理系统/进程管理/对象间的通信管理/进程间的通信管理/虚拟内存管理
微内核窗口管理器
硬件抽象层(HAL)图形驱动程序
硬件(处理器、内存、外部设备等。)
子系统架构
第一个要实现的子系统组当然是前微软系统。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 NT 5.1)、Windows Server 2003(Windows NT 5.2)、Windows Vista(Windows NT 6.0)的改进系列,都是基于Windows NT的架构。
这个时代不断增长且更加复杂的嵌入式设备市场也促进了嵌入式操作系统的增长。
现代操作系统通常具有所使用的绘图设备的图形用户界面,并添加不同于键盘的输入设备,例如鼠标或触摸面板。旧的OS或者以性能为导向的服务器通常没有这么友好的界面,而是使用命令行界面(CLI)和键盘作为输入设备。以上两个接口实际上都是所谓的shells,它们的功能都是接受和处理用户的指令(比如按下一个按钮或者在命令提示符上键入指令)。
选择要安装的操作系统通常与其硬件架构密切相关。只有Linux和BSD可以在几乎所有的硬件架构上执行,而Windows NT只移植到DEC Alpha和MIPS Magnum上。
在1990年代早期,个人电脑的选择仅限于Windows系列、类Unix系列和Linux,直到今天,Linux和Mac OS X仍是最重要的替代选择。
大型机和嵌入式系统使用多种操作系统。最近很多主机开始支持Java和Linux来共享其他平台的资源。最近,从用于传感器网络的Berkeley Tiny OS到可以运行Microsoft Office的Windows CE,各种思想流派对嵌入式系统展开了激烈的争论。