操作系统历史

1.没有操作系统的计算机

       从第一台计算机(1945)到1950年代中期的计算机,这时的计算机属于第一代计算机即电子管计算机,这是还没有os,对于计算机的操作都是通过手工进行的,一般工作过程是:

       程序员将已穿孔的纸带(早期的还有卡片,插件版等输入输出方式)放入纸带输入机,在启动他们将数据和程序输入计算机,然后启动计算机运行,等到计算机运行完毕并取走结果后才允许下一位用户上机。

       上面的工作流程对于计算机资源的利用效率是非常的低,特别是cpu运行速度比IO设备速度提升要快很多,这点造成了cpu速度和IO设备速度不匹配的矛盾更加突出,于是人们发展出了通道技术,缓冲技术,但这并未能很好的解决这个问题,直到出现了脱机输入/输出(offline IO)方式,这个问题才获得了较为满意的结果。

      20世纪50年代末出现了脱机 I/O方式,其工作方式是用户先把装有程序和数据的纸带装入纸带输入机,在一台外围机的帮助下将

程序和数据输入到磁带上,当cpu需要这些程序和数据时,再从磁带上高速的把程序和数据掉入内存。类似的,当cpu需要输出时,cpu将数据从内存高速输送到磁带,然后在外围机的帮助下,将数据从磁带输出到输出设备。由于程序的输入输出都是在外围机的控制下完成的,或者说,它们是在脱离主机的情况下进行的,故称为脱机输入/输出方式,相反,在主机的直接控制下进行输入输出的方式称为联机输入/输出(online I/O)方式

2.单道批处理系统

      20世纪50年代中期,出现了第二代晶体管计算机,但这时计算机是非常昂贵的,为了提高计算机的利用率,系统应该连续运行,即处理完一个作业,紧接着处理下一个,减少系统停机等待的时间。这是出现了单道批处理系统。从这时起也有了操作系统的概念也有了程序设计语言:FORTRAN语言或汇编语言。

      单道批处理系统的工作过程:

      先将一批作业以脱机方式输入到磁带上,并在系统中配上监督程序(monitor),在它的控制下,每次都从磁带调入一个作业到内存,并把运行权交给作业,当作业运行完之后,把控制权交还给监督程序,监督程序再从磁带调入下一个作业,这样直到磁带所有的作业运行完成。虽然计算机对作业的处理是成批的,但每次内存只有一道作业,所以称为单道批处理系统。

3.多道批处理系统

     20世纪60年代中期,出现了第三代计算机--集成电路计算机。为了进一步提高资源的利用率和系统吞吐量,出现了多道程序设计技术(实现的关键是多路复用,如:空间多路复用和时间多路复用),由此形成了多道批处理系统。其工作过程:用户所提交的作业存放在外存并排成一个队列,称为后备队列,然后有作业调度程序按调度算法,从后备队列中选若干道作业调入内存,使他们共享cpu和系统中的各种资源。下图列出了四道程序时的允许情况。

     在多道批处理系统最著名的IBM 的os/360操作系统。1964年,IBM生产了第一台小规模集成电路计算机IBM 360,为该机开发的OS/360 操作系统是第一个能够运行多道程序的批处理系统。但是批处理系统是不能够进行人机交互的,这催生了分时操作系统。

4.分时操作系统

      前面的批处理系统都是不能进行人机交互的,还有当时计算机价格太贵了,需要共享主机,这两个需求催生了分时操作系统。由此可知,分时系统是指:在一台主机上连接了多个配有显示器和键盘的终端并由此组成的系统,该系统允许多个用户同时通过自己的终端,以交互方式使用计算机,共享主机中的资源。

     实现分时系统要解决的关键问题是:及时接收和及时处理。

     说到分时系统要肯定要介绍下面几个系统:

     CTTS:MIT于1961年在IBM7094型机器上实现了首个分时系统CTSS(Compatible Time-Sharing System,相容分时系统),在计算机界享有盛誉。之后的1963年,MIT启动MAC计划。计划以IBM大型机为主体,连接了160台终端,分别位于 教职员家和校区四处,允许30名用户同时使用。然而到了1965年,MAC就已不堪负荷。

     MULTICS:1964年美国国防部委托麻省理工、贝尔实验室以及通用电气公司(GE在当时有卖大型机的业务的)开发一种“公用计算机服务系统”,简称MULTICS。1965年,MULTICS的研发工作正式开展,当初研发的设想是通过建置在美国通用电力公司的大型机GE-645,来连接1000部终端机,支持300的用户同时上线。 但是在当时的技术条件下,研发这样的通用操作系统存在了太多难以解决的技术难题。以至于研发进度极为缓慢,直至1969年,MULTICS依然难以问世。随后,贝尔实验室退出了研发队伍,而美国国防部也决定裁撤MULTICS项目,通用公司随即退出。但是麻省理工并没有就此罢休,MULTICS最终还是获得了成功。随后,这套系统被麻省理工用作学校的信息管理。在MULTICS中包含了很多现代操作系统的雏形,比如隐藏核心文件,只提供用户界面等等。

    unix:1969年,贝尔实验室的Ken Thompson和Dennis Ritchie准备把原先为MULTICS设计的名叫“Space Travel”的游戏移植到他们使用的系统上。可是那时大型机的CPU时间非常贵,他们只好把游戏程序移植到一台没人用的PDP-7小型机上。后来又给程 序中加入了文件管理、进程管理的功能和一组实用工具,一个只能给2个用户使用的系统诞生了。

    Minix:20世纪80年代,由于AT&T所有的UNIX版权的限制,荷兰的Andrew S. Tanenbaum教授决定写一个不包含任何AT&T源代码的UNIX系统,名为MINIX(即小型的UNIX),MINIX,是一种基于微内核架构的类UNIX计算机操作系统,于1987年发布,并开放全部源代码给大学教学和研究工作,它启发了Linux。

    Linux:上世纪90年代初操作系统价格昂贵,就连minix也要收费才能得到源码,于是1991 年初,林纳斯·托瓦兹开始在一台386sx 兼容微机上学习minix 操作系统。通过学习,他逐渐不能满足于minix 系统的现有性能,并开始酝酿开发一个新的免费操作系统。1991 年的4 月份开始,林纳斯·托瓦兹几乎花了全部时间研究386-minix系统(hack the kernel),并且尝试着移植GNU 的软件到该系统上(GNU gcc、bash、gdb 等)。1991 年4 月13 日在comp.os.minix 上发布说自己已经成功地将bash 移植到了minix 上。1991 年7 月3 日,第一个与Linux 有关的消息是在在comp.os.minix 上发布的(当然此时还不存在Linux 这个名称,当时林纳斯·托瓦兹的脑子里想的可能是FREAX ,FREAX 的英文含义是怪诞的、怪物、异想天开等)。1991 年8 月25 日,在林纳斯·托瓦兹的下一发布的消息中,该操作系统不好移植(没有可移植性),并且只能使用AT 硬盘。对于Linux 的移植性问题,林纳斯·托瓦兹当时并没有考虑。但是Linux 几乎可以运行在任何一种硬件体系结构上。1991 年的10 月5 日,林纳斯·托瓦兹在comp.os.minix 新闻组上发布消息,正式向外宣布Linux 内核系统的诞生(Free minix-like kernel sources for 386-AT)。因此10 月5 日对Linux 社区来说是一个特殊的日子,许多后来Linux 的新版本发布时都选择了这个日子。

5.实时系统

      所谓“实时”是表示及时,而“实时计算”则可以定义为这样一类计算,系统的正确性不仅由计算的逻辑结果来确定,而且还取决于产生结果的时间。事实上,实时系统最主要的特征是将时间作为关键参数,它必须对于接收到的某些信号进行“及时”以及“实时”的反应。由此得知,实时系统是指系统能够及时响应外部事件的请求,在规定时间内完成该事件的处理,并控制所欲实时任务协调一致地运行

6.微机操作系统

     随着集成电路和计算机体系结构的不断发展,出现了微处理器芯片和存储器芯片,也导致了微型计算机的出现和微机操作系统的问世。也即配置在微型计算机上的操作系统称为微机操作系统,按运行方式主要分为如下几类:

(1)单用户单任务操作系统

        只允许一个用户上机,且只允许用户程序作为一个任务运行,

         代表:MS-DOS、PC-DOS、CP/M

  (2)单用户多任务操作系统

          只允许一个用户上机,但允许用户把程序分为多个任务,是他们并发执行

           代表:windows(⚠️这个有挺多争议的,看网上划分很多)

     (3)多用户多任务

          允许多个用户使用各自的终端,使用同一台机器,共享主机系统中的各种资源,而每个用户程序又可以进一步分为几个任务,是他们能并发执行。

          代表:linux,solaris

总结:从多道批处理系统,分时系统,实时系统这三个对现在操作系统具有深远影响的系统中,我们可以看到现在的操作系统具有:并发,共享,虚拟和异步四个基本特征