为何要有操作系统?
操作系统实际上是一款介于软件和硬件之间的复杂程序,主要负责配合应用程序控制硬件。
由于编写控制硬件的程序灰常复杂,程序员每次编写程序如果都重新编写控制硬件的程序则会严重影响效率,因此诞生了操作系统。它为用户程序提供了一个更友好、更简单、更清晰的计算机模型,管理所有硬件设备。这样,程序员就只需考虑自己程序的编写,应用软件可以直接使用操作系统提供的功能来操作硬件。
操作系统的位置
操作系统位于计算机硬件和应用软件之间,分为系统调用和内核两部分:
-
系统调用(用户接口程序):和应用程序共同运行于用户态,为应用程序提供系统调用接口。
-
内核:和计算机硬件运行与内核态,管理硬件资源。
操作系统的功能
-
现代计算机或者网络都是多用户的,多个用户不仅共享硬件,而且共享文件,数据库等信息,共享意味着冲突和无序。
-
操作系统主要使用来处理来自多个程序发起的多个(多个即多路)共享(共享即复用)资源的请求,简称多路复用:
-
记录哪个程序使用什么资源
-
对资源请求进行分配
-
为不同的程序和用户调解互相冲突的资源请求。
-
-
数据从硬盘到用户需经历如下过程:
硬盘→硬盘控制器→硬盘驱动→操作系统→文件→用户
-
操作系统主要有两大功能:
-
操作系统隐藏了复杂的、难以理解的硬件调用接口,为用户提供了更容易理解的、更清晰的模型(文件系统),使得程序员只要专心开发自己的程序就好,不用考虑操作硬件的细节。
-
很多应用程序会共享同一套硬件资源,每个程序互相竞争会产生错乱,操作系统负责将其有序话,使其充分发挥作用。
-
操作系统的发展
-
第一代计算机(1940~1955):真空管和穿孔卡片
-
特点:
-
没有操作系统的概念
-
所有的程序设计都是由纯粹的机器语言编写的
-
-
工作过程:
-
程序员在墙上的机时表预约一段时间,然后拿着插件版到机房里,这几个小时内他独享整个计算机资源,后面的一批人都得等着(两万多个真空管经常会有被烧坏的情况出现)。
-
-
优点:
-
程序员在申请的时间段内独享整个资源,即时的调试自己的程序,如果有bug可以即时处理。
-
-
缺点:
-
这对于计算机提供商来说是一种浪费
-
-
-
第二代计算机(1955~1965):晶体管和批处理系统
-
特点:
-
设计人员、生产人员、操作人员、程序人员和维护人员直接有了明确的分工,计算机被锁在专用空调房间中,由专业操作人员运行,这便是‘大型机’。
-
有了操作系统的概念,是人力与计算机结合的系统,需要人参与。
-
有了程序设计语言:FORTRAN语言或汇编语言,写到纸上,然后穿孔打成卡片,再讲卡片盒带到输入室,交给操作员,然后喝着咖啡等待输出接口
-
-
第一代计算机的问题:
-
人机交互太多了
-
-
第二代如何解决第一代的问题:
-
把一堆人的输入攒成一大波输入
-
然后顺序计算(这是有问题的,但是第二代计算也没有解决)
-
把一堆人的输出攒成一大波输出
-
-
优点:
-
批处理,节省了机时
-
-
缺点:
-
整个流程需要人参与控制,将磁带搬来搬去(中间俩小人)
-
计算的过程仍然是顺序计算——串行
-
程序员原来独享一段时间的计算机,现在必须被统一规划到一批作业中,等待结果和重新调试的过程都需要等同批次的其他程序都运作完才可以(这极大的影响了程序的开发效率,无法及时调试程序)。
-
-
-
第三代计算机(1965~1980):集成电路芯片和多道程序设计
采用了(小规模)芯片(集成电路)的主流机型,与采用晶体管的第二代计算机相比,性价比有了很大的提高。这些计算机的后代仍在大型的计算机中心里使用,此乃现在服务器的前身,这些服务器每秒处理不小于千次的请求。
-
如何解决第二代计算机的问题1:
-
卡片被拿到机房后能够很快的将作业从卡片读入磁盘,于是任何时刻当一个作业结束时,操作系统就能将一个作业从磁带读出,装进空出来的内存区域运行,同时的外部设备联机操作。这种技术叫做SPOOLING,该技术同时用于输出。当采用了这种技术后,就不在需要IBM1401机了,也不必将磁带搬来搬去了。
-
-
如何解决第二代计算机的问题2:
-
第三代计算机的操作系统广泛应用了第二代计算机的操作系统没有的关键技术:多道技术
-
-
如何解决第二代计算机的问题3:
-
分时操作系统:多个联机终端+多道技术
-
-
出现了Unix系统,继而产生了minix系统、Linux系统
-
-
第四代计算机(1980~至今):个人计算机
多道技术
-
多路复用有两种实现方式
-
时间上的复用:当一个资源在时间上复用时,不同的程序或用户轮流使用它,第一个程序获取该资源使用结束后,在轮到第二个。。。第三个。。。
-
空间上的复用:每个客户都获取了一个大的资源中的一小部分资源,从而减少了排队等待资源的时间。
-