背景
《现代操作系统》中讲解操作系统历史的时候,提到了批处理系统,多道程序设计,分时系统,下面根据书中介绍和自己理解,描述什么是批处理系统,多道程序设计,分时系统。
什么是批处理系统
在解答什么是批处理系统之前,先想想为什么会有批处理系统,当一个事物出现时,一定是为了解决某个问题,知道了这个原因,就能更好的理解这个事物。
历史
- 存机械的数字计算机(第0代) – Babbage设计(1792-1871),但是受限于所在时代的技术(不能生产出高精度轮子,齿轮和轮牙),未能成功
- 真空管和穿孔卡片机(第一代,1945-1955)
这些机器有的是二进制,有的使用真空管,有的是可编程的,但是都非常原始,甚至需要花费数秒才能完成最简单的运算。
使用方式:同一个小组的人(通常是工程师)设计、建造、编程、操作并维护一台机器。所有的程序设计是用纯粹的机器语言编写的;没有程序语言,没有操作系统;使用机器的一般方式是,程序员在墙上的机时表上预约一段时间,然后到机房中将他的插线板接到计算机里,在接下来的几小时里,期盼正在运行中的两万多个真空管不会烧坏,那时所有的计算问题实际上都只是简单的数学运算。20世纪50年代,出现了穿孔卡片,这是程序写在卡片上,读入计算机不用插线板,但是其他过程依旧如此。
特点:当时执行的任务都是简单的数学运算,硬件非常的不问题。主要的瓶颈在于硬件的稳定性吧,简单的任务执行起来还比较费劲,更不想如何处理复杂任务以及提高处理任务的效率。能运行起来就不错了的阶段。 - 晶体管和批处理系统(第二代,1955-1965)
20世纪50年代晶体管的发明极大的改变了整个状况,计算机已经很可靠了 – 解决了可靠性,那就要解决性能和易用性了。
使用方式:厂商批量生产并销售计算机给用户,用户可以指望计算机长时间运行,完成一些有用的工作。此时,设计人员、生产人员、操作人员、程序人员、维护人员之间第一次有了明确的分工。
运行一个作业(job):程序员将程序写在纸上 -> 然后穿孔成卡片 -> 将卡片盒带到输入室,交给操作员 -> 操作员从输入室把一个任务卡片读入计算机 -> 计算机完成当前任务,并将结果打印到输出 -> 操作员到打印机上撕下运算结果并送到输出室 -> 然后操作员再从输入室给计算机读入另一个任务(如果需要FORTRAN编译器,操作员还要从文件柜把它读入计算机)-> …
这个时候的特点:一次读入一个任务,并且需要操作员手动操作;操作员在机房里走来走去时,许多机器的时间都被浪费了,而当时计算机又非常昂贵。也就是批处理系统产生的原因
解决办法:批处理系统来了:在输入室收集全部的作业,读入到磁带上 -> 然后磁带被送到机房并装到磁带机上 -> 操作员装入一个特殊的程序(现代操作系统的前身):它从磁带上读入第一个作业运行,其输出写到第二个磁带,而不打印;每个作业结束后,操作系统自动从磁带上读入下个作业并运行。(批处理) -> 当一批作业完成后,操作员取下输入盒输出磁带 -> 将输入磁带换成下一批作业 -> 把输出磁带拿到打印机上打印;
处理的主要任务:科学与工程计算,典型的操作系统时FMS 和 IBSYS
回答
从历史发展进程来看,随着计算机硬件的稳定,可以做更多有用的工作,但此时计算机比较昂贵,此时一条流水线只能处理一个任务。为了解决这个问题,批处理系统应运而生。批处理系统是什么:
输入:将一批任务写到磁盘
处理:一个特定的程序(操作系统,支持批处理),将一批任务进行计算处理(无需人员介入,自动的处理完一个任务后,接着处理另一个任务)。
什么是多道程序设计
同上,我们先看历史
历史
- 集成电路和多道程序设计(第三代,1965-1980)
20世纪60年代,大多数计算机厂商都有两条不同并且完全不兼容的产线,一条是面向字的大型科学计算机,主要用于工业强度的科学和工程计算。另一条是面向字符的商用计算机,银行和保险公司主要用它从事磁带归档和打印服务。
特点:开始从纯科学计算(cpu操作密集型),慢慢延伸到对数据的处理(IO操作密集型)
考虑这个场景:当当前作业因等待磁带或者其他I/O操作而暂停,CPU就只能简单地踏步直至该I/O完成。
对于CPU操作密集型的科学计算问题,I/O操作较少,因此浪费的时间很少。对于商业数据处理,I/O操作等待时间通常占到80%-90%,所以必须采取某种措施减少(昂贵的,21世纪了,依然比较贵)CPU空闲时间的浪费。
这个时候为了更好利用CPU资源,多道程序设计应运而生。
回答
将内存分几个部分,每一部分存放不同的作业,当一个作业等待I/O操作完成时,另一个作业可以使用CPU。 – 加载多个作业,同时可以处理多个任务,多道程序设计。
分时系统
虽然第三代操作系统适用于大型科学计算和繁忙的商务数据处理,但是许多程序员很怀念第一代计算机的使用方式,那时他们可以几个小时地独占一台机器,可以即时地调试他们的程序。对于第三代计算机而言,从一个作业提交到运算结果取回往往长达数小时。 – 功能性和稳定性解决后,那么就要解决易用性了
程序员们希望很快得到响应,这种需求导致了分时系统(timesharing)的出现。
原理:
它实际上是多道程序的一个变体,每个用户都有一个联机终端。假设有20个用户登录,其中17个在思考,谈论或者喝咖啡,则CPU可分配给其他三个需要的作业轮流执行。
其他
多道程序系统和分时系统的区别是什么?
分时系统是一种多道程序系统(都是支持“同时”执行多个任务),多道程序系统不一定是分时系统;分时系统是多个用户可以使用自己的终端同时访问和执行计算系统上的计算。
思考
基础学科技术的突破 ->带来更多的需求 -> 促进更多泛技术的发展;
为什么现在人工智能发展的这么迅速,得益于GPU计算能力的提升。