第一台真正的数字计算机是英国数学家Charles Babbage建造的分析机。这台机器本有希望成为真正的电脑,可以运行包含“条件”、“循环”语句的程序,有寄存器用来存储数据,但是由于当时(大约在1832年--1840年,对应中国的历史是林则徐虎门销烟前后)技术和工艺条件的限制,大量精密零件难以制造,这台机器没有完成。Babbage当时雇佣了名为Ada Lovelace的年轻女性来编写软件,她是著名诗人拜伦的女儿,她被公认为世界上第一个程序员。程序语言Ada则是以她命名的。看完Ada生平事迹,感叹她在那个时代就是一个传奇,这是维基百科关于Ada的介绍
第一代:真空管和穿孔卡片
第二次世界大战刺激了计算机研究的爆炸性开展,这可能是战争带给人们的为数不多的“财富”。研究的开展主要是在大学内,包括俄亥俄州立大学(John教授和他的学生Cliiford Berry建造了据认为是第一台可工作的数字计算机,使用了300个真空管)、哈佛大学、宾夕法尼亚大学等。不过这些机器没有操作系统,程序员都是直接与硬件打交道的,所有的程序设计都是用纯粹的机器语言编写的。
使用机器的一般方式是:在墙上的机时表上预约一段时间,然后到机房中将插件版插到计算机里,在接下来的几个小时里,期盼正在运行中的两万个真空管不会被烧坏。
后来,有了改进,出现了穿孔卡片,这时将程序写在卡片上,然后由输入设备(如卡片阅读器)载入计算机,如果一个错误使得程序停止,错误原因由显示灯提示。如果程序正常完成,输出结果出现在打印机中。
第一代系统的模式称为串行处理。这类系统有两个主要的问题:
- 调度:如果用户在预定的的时间为1小时,实际上只用了45分钟就完成了工作,剩下的15分钟内计算机只能闲置,这时就会导致资源浪费。如果用户遇到了问题,在一个小时内没有解决,那么时间到了也会被终止。
- 准备时间:一个程序称作作业,它可能包括往内存中加载编译器和高级语言程序,保存好编译好的程序,然后加载目标程序和公用函数并连接在一起。每一步都可能包括安装或拆卸磁带,或准备卡片组。如果在此期间发生了错误,用户只能全部重新开始。
第二代:晶体管和批处理系统
早期的计算机是非常昂贵的,同时由于调度和准备时间是难以接受的,为了提高资源的利用率,开发出了批处理系统:用户不在直接访问机器,而是将卡片或磁带中的作业交给计算机操作员,由他把这些作业按顺序组织成一批,然后将整个批作业交给监控程序使用。它从磁带上读入第一个作业并开始运行,其输出写到第二盘磁带上,而不打印。每个作业结束后,操作系统自动地从磁带上读入下一个作业并运行。当一批作业结束后,操作员取下输入和输出磁带,将输入磁带换成下一批作业,并把输出磁带进行打印。
批处理系统的使用提高了计算机的利用率,但是还存在缺点:
- 用户程序和监控程序的交替执行,使得一部分内存要交付给监控程序使用,监控程序消耗了一部分时间。
- 每次只能执行一道程序,I/O速度较处理器速度太慢,导致处理器经常空闲。
第三代:集成电路芯片和多道程序设计
这类系统的特点是可“同时”运行多个程序,在某个程序等待I/O时,可以选择其他程序来运行。它是现代操作系统的主要方案。
第四代:分时系统
通过使用多道程序设计,可以使批处理变得更加有效。但是,对许多作业来说,需要提供一种模式,以使用户可以与直接计算机交互。
因为许多程序员很怀念第一代计算机的使用方式。那时,他们可以几个小时地独占一台机器,可以即时调试他们的程序。
当今,通常使用专用的个人计算机或工作站来完成交互任务,但在20世纪60年代,却是行不通的,当时计算机都非常庞大而且昂达,动不动就上百万美元,因此分时系统应运而生。在分时系统中,多个用户可以通过终端同时访问系统,由操作系统控制每个用户程序以很短的时间为单位交替执行。
1980年至今:个人计算机
随着大规模集成电路的发展,每平方厘米的芯片上可以集成数千个晶体管,于是,迎来了个人计算机时代,如windows操作系统、Linux操作系统,这些我们已经很熟悉了。