这是操作系统系列第 1 篇。
尽管操作系统发展史不是研究操作系统的重点,但是在这一发展过程中,衍生出了许许多多与操作系统相关的重要概念,如果知道这些概念出现在怎样的背景下,以及产生的原因,在后期学习中就不会觉得一些概念出现的比较突兀。除此之外,了解操作系统的发展史,理解设计需求,有助于我们站在计算机的角度思考问题。
ENIAC 与串行处理
计算机的发展可以追溯到 1946 年,世界上第一台通用计算机「ENIAC」 诞生在这一年的 2 月14 日(这天正好是情人节)。
图为 ENIAC
ENIAC 长 30.48 米,宽 6 米,高 2.4 米,占地面积约 170 平方米,30 个操作台,重达 30 英吨,耗电量 150 千瓦,造价 48 万美元。
从这一年一直到 20 世纪 50 年代中期,操作系统是不存在的。毕竟那时候还没有操作系统这个概念。程序员要是想要运行什么程序,得把机器代码用打孔机打在纸带上(这不仅是个智力活,还是个要细心的活儿,打错一个孔你就得重来。想象一下,让你写一篇文章,不用退格键,更不能从中间插入。。。当时的程序员太难了),然后通过输入设备,比如纸带阅读机,载入计算机。计算机就按照步骤一步步运行下去。运行完毕,就把结果打印出来。
PS:这十几年间,编程语言也有很大发展,这一阶段后期就已经有高级语言——FORTRAN 了。编译,链接,函数库这些概念也已经实现。所以这一时间段的计算机不是你想象的那么落后!
这个时期,用户如果有上机需求,就要提前预约一个时间段,然后才能去上机(往机器里放纸带和控制机器的活也是他们自己来干。当个程序员你还得和硬件打交道)。这样的模式下,问题出现了:
- 如果用户申请了 1 个小时,但他的任务只用 35 分钟就运行完了,那多出来的 25 分钟就这么被浪费掉了。
- 如果一个小时到了,用户的程序还没运行完,这个程序就会被强制停止——这相当于浪费了整整一个小时的计算资源。但延长时间是不可能的,后边还有人排队呢,而且万一是你的程序死循环了咋办。
简单批处理系统
在计算资源