从任务处理角度看待操作系统发展史
操作系统的作用是管理硬件,目的是为了让用户更加方便的来操控计算机底层的硬件。
可以看到操作系统对于人们操控计算机进行作业有着不可小觑的功劳,那么在早期没有操作系统的时候你能想象是什么样子吗?现在我们来看一看。
手动化时代
早期的计算机并没有操作系统,而是通过纸带来进行程序的编辑。
它有3台设备,分别是:
- 输入机
- 计算机
- 输出机
那个时候的程序员需要一起约定好时间,来轮流的对自己的程序进行编辑,因为那个时候的计算机在同一时刻下只能由一个人去运行和掌控,我们来看一下它的计算流程:
这个时代的计算机一次只能跑一个人的程序,即同一时刻至多只能运行一个任务,不会受到其他因素的干扰。
它的缺点非常明显,一次只能一个人使用而后面想要使用的人必须得等待前一个人用完之后才行,其执行效率非常低下。
除此之外最关键的就是人在进行与计算机交互的时候计算机的运算器是没有任何工作的,这就造成了资源上极大的浪费,那么这种浪费可以理解为I/O阻塞。
批处理系统时代
相比于前一代计算机处理任务的方式,批处系统的诞生让这一代计算机有了极大的进步,并且输入也不再使用纸带,而是采用磁带,批处理操作系统可以将多个用户的任务同时提交(但是不能同时运行)。
注意:批处理系统并不是一个真正意义上的我们现在所理解的操作系统,而仅是一种支持多任务同时提交、区分不同任务的一段代码
假设有三个程序员需要使用这台计算机,他们需要将自己的程序全部交由一个程序员让其进行人机之间的交互,那么这样就节省了三倍的时间。
但是这样的缺点也很明显,大家只能等待三个人的程序全部处理完后大家才能拿到各自的结果,这个等待过程是十分漫长的。
批处理最大的问题还是在于拥有人手动与计算机交互的过程,此时会发生I/O阻塞,那么能不能把中间的两个小人全部干掉让计算机来做他们做的事儿呢?当然可以,但是当时的人还没想到这一点,如图,缺点如下:
- 任务提交虽然是同时提交,但是任务执行依旧是串行执行
- 仍然具有人为操作,I/O时间太长
我们再来想一个问题,如果程序员A的程序出错了,它第一时间拿不到结果,输出的时候会一直卡在那,程序员B和程序员C的程序结果也不用拿了,反正都出不来。是不是很蛋疼?
后来慢慢的经过时间的积累与技术的发展,针对这一代的批处理系统的缺点,又出现了一种新的技术。
该技术名叫SPOOLING技术,这个技术的出现让上图的两个小人下岗了。SPOOLING技术的出现极大的减少了I/O阻塞的时间。
除此之外,该代操作系统还提出了一个非常重要的思想,即多道程序设计的思想,这个技术思想目前在我们的进程中依然存在,它的主要功能就是解决了程序串行执行的问题。
也就是说:
- SPOOLING技术解决了人为的I/O阻塞问题
- 多道程序设计解决了程序串行执行的问题
如图所示:
尽管这样做的确让程序效率提高了不少,但是我们还有一个问题。
计算机中依然是批处理系统,还是要等A、B、C的程序同时出结果才能拿到最终结果,这个时间太长了,就像上面说的如果程序员A的程序出错了卡住了程序员B和C的正常程序也取不出来。
分时系统时代
为了解决上述统一化打印结果的问题,出现了分时操作系统。
该系统很形象的一个比喻就是一台计算机给A、B、C每个程序员一个键盘鼠标和显示器,大家共有一个主机各玩各的互不影响,它们都认为自己的程序是独享的并且马上就能看到自己程序的运行结果,但是实际上大家还是共用的同一个CPU,分时操作系统一言以蔽之即多用户多任务的系统。
分时操作系统到现在依然存在,并且还十分常见,比如许多人去操作同一台服务器。
这时候大家就在考虑,你丫键盘鼠标显示器啥都给我了,为啥直接给我一个主机呢?这主要还是受限于当时的计算机高额的成本造价问题,但是到了如今计算机的成本以及体积都下来后,这些都不是问题了。
个人操作系统的诞生
科技在发展,时代在进步,当科学技术达到一定的水平后,计算机造价变的越来越低廉,此时便出现了个人操作系统。
个人操作系统的出现让任务处理变的越来越迅速,每个人都能做到真正意义上的互不影响。