Modern Operating System 4th 中译

第二代(1955-65):晶体管及批处理系统

20世纪50年代中期诞生的晶体管使得这种窘境做出了极大的改变。计算机的可靠性增加到足以保证它们被生产出来,交付到客户手中后满足客户的需求。这也是第一次将设计师,建造者,操作员,程序员以及维护人员分离。这些现在被称为大型机的计算机,被锁在空调机房,由专业人员操作它们。只有大型企业或者政府机构承担的起它们几百万美元的售价。要运行一个作业(一个程序或一个程序组),程序员先把程序写在纸上(使用FORTRAN或者汇编语言),之后将它们输出到卡片上。然后将卡片带到输入室,把它交给操作员,之后去喝咖啡,直到得到程序的输出。

当计算机完成了它当前的工作,操作员把打印机上的输出撕下,放到输出室以便程序员收集。操作员再从输入室取出一叠卡片,输入计算机,如此循环。如果程序需要FORTRAN编译器,操作员必须从文件柜中取出它,输入计算机。计算机的大部分时间浪费在四处走动的操作员身上。

由于计算机高昂的价格,人们自然而然地寻找减少浪费时间的办法。广泛采取的解决方案是批处理系统,其背后的思想是尽可能充满输入室,使用一台小的,不那么贵的计算机,如IBM1401,一台非常擅长读取卡片的计算机,从磁带将输出打印出来。其他的一些昂贵的计算机,例如IBM7094,被用于真实环境,如图Fig, 1-3。

收集大概一小时的工作后,卡片的内容被读入磁带,再送入机房。操作员将磁带挂载到驱动器上,运行一个特殊的程序(当今操作系统的祖先),读取磁带,运行第一个工作。输出内容被写入磁带,而不是直接打印。完成一项作业后,操作系统自动载入下一项作业。整个批处理执行完毕后,操作员取走输入输出磁带,放入新的批处理磁带,再将输出磁带放到1401计算机处离线打印(不连接至主计算机)。

一个典型的输入作业结构如图Fig. 1-4所示。作业由$JOB卡片开始,指定了以分钟计的最大运行时间,用户账户和程序员的名字。之后的卡片是$FORTRAN,告诉操作系统从系统磁带中加载FORTRAN编译器。卡片之后直接跟着需要编译的程序。之后的$LOAD卡片指导操作系统加载之前编译好的程序。(编译后的程序往往写在划伤的磁带所以必须被显式载入)之后是$RUN卡片,告诉操作系统使用卡片之后的数据运行程序。最终$END卡片结束作业。这些原始的控制卡片是现代shell和命令行解释器的先驱。

巨大的第二代计算机常常被用来做科学及工程计算,如求解物理及工程中经常出现的偏微分方程。它们经常使用FORTRAN或者汇编语言编程。典型的操作系统是FMS(the Fortran Monitor System)以及IBSYS,IBM为7094计算机配备的操作系统。