操作系统的发展历史和分类
那我们会按照各种类型的操作系统出现的时间顺序来一次进行讲解
那在这个小节当中 重点会考察的是绿框部分的这些内容 所以我们会重点讲解绿框部分
在学习的过程当中 大家需要重点关注和理解的是各类型的操作系统 他们主要想解决的是什么问题
然后要稍微关注一下他们各自的优缺点 这个有可能在选择题当中进行考察
那首先来看第一个阶段
手工操作阶段
在这个阶段其实操作系统还并没有诞生
程序员写程序是要写在这样的纸袋上的 可以看到这个纸袋上有一些小孔
那么 有孔的地方代表的是二进制的一每孔的地方代表的是二进制的零所以程序员通过在纸袋上打孔这样的方式写好了自己的程序 然后把自己的这个程序放到纸袋机上
然后计算机从纸袋机当中读取我们要运行的程序 等程序运行结束了之后 又把程序运行的结果再给输出到纸袋机上 之后再由程序员从纸袋机取走自己程序运行的结果
但是用手工操作的这种方式存在一个很明显的问题就是程序员
用手工的方式把纸袋装到纸袋机或者从纸袋机取走自己的 这个程序运行结果的过程其实是超级慢的
所以假设一个程序员此时要提交一个自己的作业 提交一个自己的程序让他运行的话
那么 首先 程序员需要花很长的时间把自己的程序放到纸袋机上 之后 计算机需要把纸袋机上的这个程序数据给读到计算机里
而这个读取的过程也是一个很慢速的过程 也需要消耗不短的时间
但是计算机的计算速度 处理程序的速度是非常快的 所以其实计算机在计算的时候 只需要花很短的时间就可以把这个程序运行结束了
那当程序运行完了之后 他又同样需要花比较长的时间把程序运行的结果输出到纸袋机上
之后程序员再把纸袋机上的结果再给用手工的方式取走 等第一个程序员把自己的运行结果取走之后 才能由第二个程序员来接着使用计算机 那同样的 他首先需要把自己的程序放到纸袋机上 需要花很长的过程
接下来 又从纸袋机读到计算机内 这也需要花不少的时间 但是同样的计算机处理这个程序其实只需要花很短的时间
所以可以看到 在手工操作阶段存在的主要的缺点就是用户独占
在第一个程序员在自己的程序没有完全运行结束之前 是不允许第二个程序员和他同时使用计算机的
所以当他使用计算机的时候 就是独占着使用 第二个很明显的缺点是由于手工操作是一个很慢的过程 但是计算机计算又是很快的一个过程
因此 这样的人机速度矛盾 会导致资源的利用率极低 特别是计算机cpu的利用率极低 我们可以看到 在这么长的一段时间内 其实cpu或者说计算机真正在忙碌在工作的时间只有这样一小段和这样一小段
有很大的比例这个计算机是处于空闲的状态的 但是在这个阶段其实计算机的造价十分昂贵 所以让计算机这种昂贵的资源有大量时间处于空闲状态 那显然是一种很不经济 很低效的一种方式
因此 为了解决这个问题 人们发明了
单道批处理系统
在这个阶段 人们引入了脱机输入输出技术
各个程序员可以把自己的程序都依次放到纸袋机上 然后会有一个叫做外围机或者叫外围控制机的一个专门的机器
控制着把这些纸袋机里的程序数据 先把它放到磁带上 之后计算机可以直接从这个磁带里读取这些程序的数据 而磁带的读写速度要比纸袋机快很多
此时的计算机当中会运行着一个叫做监督程序的程序 由这个监督程序控制着
自动的从这些磁带当中输入输出作业的数据 而从磁带中输入输出作业其实是
速度是要更快的 所以引入了这种拖机输入输出技术之后 我们读取一个作业
所需要花的时间比例就小了很多了 这个监督程序会控制着计算机自动的从磁带当中读入第一个作业
这个读入的过程要比从纸袋机读入要快很多 接下来会进行程序的运算 再接下来进行输出 输出到这个磁带上
等第一个作业完成之后 就可以开始 紧接着读入第二个作业 然后计算再输出 那 以此类推
可以看到 在引入了脱机输入输出技术之后 这个作业的输入输出过程所需要占的时间比例其实是降低了很多的
这样的话 就可以让cpu有更高比例的时间处于计算处于忙碌的状态
这就是cpu的资源利用率啊 有一定的提升 缓解了一定程度上的人机速度矛盾
但是这种方式很显然 它的资源利用率依然是不够高的 内存中同一时刻只能有一道程序运行 只有这个程序运行结束 并且输出完成之后 才可以继续读入第二个程序
也就说各个程序之间他们是串行的执行的 所以虽然比起上一个阶段cpu利用率有所提升 但是这种方式依然会使cpu有大量的时间是在空闲等待的状态
资源利用率依然是很低的 因此为了解决这个问题 人们就发明了
多道批处理系统
在这个阶段 操作系统就正式诞生了 有了操作系统之后就可以支持多到程序并发运行了 所以 在多到批处理系统当中 每次就可以往内存当中读入多到程序 然后让这些程序并发的运行
那我们同样用干特图的方式来看一下和上一个阶段的区别 首先 第一个作业的数据会从磁带输入到计算机当中
等输入结束了之后 就可以开始对这个程序的计算工作 但是当cpu在计算第一个作业的时候 其实输入设备是处于空闲的状态的
因此 cpu计算第一个作业的时候 其实可以让输入设备同时把第二个作业也读入内存
紧接着 第一个作业计算完成 它就可以使用输出设备把这个结果输出到磁带上
而第一个作业在输出的时候 其实只是输出设备在忙碌 在这个时间段内cpu已经空闲了 所以在这个时间段其实可以让cpu为第二个作业服务
开始计算第二个作业 那同样的 这个时候 其实输入设备又空闲了 因此在这个时候又可以开始
同时读入第三个作业 那后面的过程就不再展开分析 总之 在引入了多道程序技术之后 多道程序可以并发的执行
共享计算机当中的资源 当然 计算机资源包括输入设备 输出设备 还有cpu等等
所以 资源利用率就得到了大幅的提升 那从这个干特图也可以很直观的看到
赢了多道程序技术之后 cpu是会有大量的时间处于忙碌的状态的 也就是说cpu的利用率得到了更大的提升
不过呢多道批处理系统 其实它并不提供人机交互的功能 当一个用户把自己的作业提交了之后
接下来 用户就只能干等着计算机把自己的作业处理完成 也就是说 在多到批处理系统当中 用户是无法调试自己的程序的
也不可能在程序运行的过程当中输入一些参数 这些事情都是无法实现的
所以 为了实现人机交互的功能 人们又发明了
分时操作系统
在分时操作系统当中
计算机会以时间片为单位轮流的为各个用户 或者说各个作业服务
而用户可以通过像键盘啊 鼠标啊等等这一类的终端和计算机进行交互
比如说这个计算机先给这个用户服务50毫秒 再给这个用户50毫秒 这个用户50毫秒
总之 在分时操作系统当中 各个用户可以轮流的得到服务 所以分时操作系统的主要优点就是
用户的请求可以被及时的响应 有没有发现 我们之前举的老渣约会的例子 其实他就是一个分时操作系统
老渣以时间片为单位轮流的为各个用户来服务 这样的话 各个用户的请求就可以被及时的响应
因为对于他们俩来说 至少每隔一个小时肯定能够被老渣服务一次 所以他们的请求最多在一个小时之内肯定可以被老渣响应
所以 这种分时操作系统使人机交互的问题得到了解决 并且允许多个用户同时使用一台计算机
他们对这个计算机的操作都是相互独立的 他们还感受不到别人的存在
在用户看来似乎就像是自己独占一样 那分时操作系统也存在一个明显的缺点 那就是他不能优先处理一些紧急的任务
这种操作系统对各个用户都是完全公平的 所以为了能够让计算机优先的处理一些紧急任务 人们又提出了
实时操作系统
实施操作系统能够根据任务的优先级来优先的响应一些紧急任务 这种操作系统要求计算机在接收到一些紧急的信号之后需要进行及时的处理
并且要在严格的时间实现内来处理完成 并且需要保证这个处理的结果是正确的
因此 这种操作系统的主要特点是及时性和可靠性 而实时操作系统又分为应实时和软实时操作系统
比如说像导弹控制系统 自动驾驶系统这一类的系统 必须绝对严格的在规定时间内完成相应的处理 否则会导致严重的问题 比如说导弹射偏了 或者自动驾驶的汽车直接开到了马路下面
等等 那另一种软实时操作系统 就比如说我们熟悉的12306火车订票系统
这个系统要求网站上可以需要实时的显示我们剩余的票到底还有多少
但是即使偶尔这个更新不是很及时 那其实也并不会产生特别严重的后果
所以这种是软实时系统 那除了刚才我们介绍的那些操作系统之外 还有网络操作系统 分布式操作系统和个人计算机操作系统
这些操作系统大家只需要有一个简单的了解 自己阅读一下就可以 在我们的考试当中 一般会考察的是之前提到的那几种操作系统
所以这些就不再展开好的 那么这个小节当中 我们根据操作系统出现的时间顺序来依次讲解了各种类型操作系统的一个
特点 优点和缺点 大家需要重点理解的是各类型的操作系统 他们主要想解决的是什么问题
是用什么样的方式来解决的
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习