为何要有操作系统?
首先要说明一下操作系统是什么?
操作系统是协调、管理、控制计算机硬件和为应用程序提供接口的控制软件,操作系统向下连接硬件,向上承载应用程序。
由于硬件不论种类还是工作流程都是繁杂的,程序员无法对所有的硬件极其工作流程都详细掌握,所以需要一种系统软件来对硬件进行统筹管理,操作系统可以完成程序员无法搞定的驱使硬件工作的操作、能够统筹管理硬件资源进行共享,使人们方便的使用硬件资源。
操作系统的位置
操作系统在本质上也是软件(系统软件),但是区别于普通应用软件,操作系统能够直接管理计算机硬件资源,操作系统由系统调用和内核两部分构成。
操作系统整体位于计算机硬件和应用程序之间,内核部分向下连接、管理、控制计算机硬件,系统调用向上为应用程序提供相应的系统调用接口。
操作系统的功能
操作系统实现的功能主要可以理解为两类
隐藏底层硬件繁杂的调用接口,提供良好的系统级调用接口:
通过操作系统提供的调用接口,应用开发人员无需再考虑如何调用硬件服务的细节,通过操作系统之上的应用,如UI、Shell等,平常的用户也无需考虑底层硬件是如何工作的,方便使用。
应用程序对硬件资源的调用变无序为有序:
一般来讲,一套计算机硬件之上会运行多个应用程序,多个应用程序并没有对硬件资源使用的优先级,很容易产生资源请求冲突,而操作系统可以有效的解决这个问题,能够将不同的应用程序的资源请求序列化,防止冲突产生。
操作系统的发展
第一代计算机(1940-1955):真空管和穿孔卡片
第一代计算机以“埃尼亚克(ENIAC)”为代表,采用真空管作为基础原件制作,当时的计算机还没有操作系统的概念,输入和输出设备主要使用穿孔卡片,系统软件非常原始,所有的程序设计都是由纯粹的机器语言编写,同一时刻只能有一个程序运行在内存中被cpu调用,当有多个程序时候,采用串行的方式,即执行完一个程序后才能执行下一个程序。
第二代计算机(1955-1965):晶体管和批处理系统
采用半导体晶体管作为基础原件制作,这个时代被称为“大型机时代”,大型机时代有了操作系统的概念和低级的汇编编程语言,但是当时需要人力和计算机相结合。第一代计算机的人机交互是1对1的方式,即同一时刻一个人独占计算机资源,编程时候能够及时的进行程序bug的排除,而大型机时代把一堆人的程序攒到一块顺序计算,将所有输出一块输出,依旧是串行的方式,由于按批次执行,无法及时调试程序,极大影响软件开发效率。
第三代计算机(1965-1980):集成电路芯片和多道程序设计
集成电路计算机,以IBM-360为代表,采用中小规模集成电路来构成计算机的主要功能部件,操作系统日渐完善,无需人力干涉,编程语言进入了高级语言的时代。为了解决第二代计算机串行处理的问题,第三代计算机广泛的应用了多道技术,以及后来的分时操作系统。
多道技术:是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行,主要实现方式为时间上的复用和空间上的复用。
时间上的复用:当一个程序等待I/O时,其他程序可以使用CPU资源
空间上的复用:将内存分为几部分,每个部分放入一个程序,同一时间就有了多道程序
分时操作系统:把计算机与许多终端用户连接起来,分时操作系统将系统处理时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样,有效的增加资源的使用率。
第四代计算机(1980-至今):微型机
采用大规模和超大规模集成电路作为基本电子元件,从1983年开始为32位微型计算机的发展阶段,到1993年,Intel公司推出了64位Pentium或称P5(中文译名为“奔腾”)的微处理器,以及后来的酷睿等。