发展历程
早期的批处理系统中,I/O设备和CPU仍然是串行工作的,CPU时间浪费巨大,浪费了CPU的处理能力。操作系统中只有一个可执行程序,一个任务执行时,必须CPU执行完,I/O才能执行,两者不可并行。
随着CPU速度迅速提高而I/O设备速度却提高不多,导致CPU和I/O设备之间的速度不匹配,矛盾越来越突出。
为了解决这个问题,多道程序的概念被提出。
多道程序设计的概念与相应的问题
多道程序设计:允许多个程序(作业)同时进入一个计算机系统的内存并启动进行交替计算的方法,也就是,计算机中可以同时存放多道程序,从宏观上来看它们是并行的,多道程序都同时处于运行过程中,但都未运行结束,但是微观上是串行的,轮流占用CPU交替执行,引入多道程序设计技术的根本目的是提高CPU的利用率,充分发挥计算机系统部件的并行性。
多道程序设计需要考虑的一些问题
交替执行的多道程序设计理念,能够提高系统的效率,增加单位时间的处理能力,但是对于单道程序来说,却延长了计算时间。所以,要明白,多道程序设计提高资源利用率和系统吞吐率是以牺牲用户的作业周转时间为代价的,而一些无法延迟的计算,也是多道程序设计需要考虑的问题。
在多道程序设计中,道的数量是需要衡量的,因为道数的多少和系统效率不是完全正相关的(比如CPU的切换也是需要时间的),它通常由系统的资源和用户的要求而定。而且,内存的容量以及用户的响应时间也是影响多道程序道数的重要因素。
总结利弊
-
提高了CPU的利用率
-
提高了内存和I/O设备的利用率
-
改进了系统的吞吐率
-
充分发挥了系统的并行性
-
主要缺点是延长了作业周转时间
多道程序设计与多重处理系统
多道程序设计系统与多重处理系统有差别,后者是指配置了多个物理CPU,从而,能真正同时执行多道程序的计算机系统。要有效地使用多重处理系统,必须采用多道程序设计技术,反过来,多道程序设计不是必须要有多重处理系统支持。
实现多道程序设计必须妥善地解决三个问题:存储保护与程序浮动;处理器的管理和分配;系统资源的管理和调度;
在多道程序设计中,内存是由几道程序所共享,因此,硬件需要提供一定的功能,使得内存中的各道程序只能访问它自己的区域,以避免相互干扰。特别是当一道程序发生错误的时候,不致影响到其它的程序,更不能影响系统程序,这就是存储保护。
在多道程序设计系统里,如果系统仅配置一个物理处理器,那么,多个程序必须轮流占有处理器,这就涉及到处理器的调度,程序在执行中处于三种状态:
-
运行态,当一个程序占有处理器时;
-
等待态,当一个程序等待某个事件发生时,就处于等待态,比如等待I/O;
-
就绪态,当一个等待的条件已满足可以运行而未占用处理器时;
所以,一道程序在执行中总是处于运行、就绪、等待三种状态之一,一道程序在执行过程中,它的程序状态是变化的,从运行态到等待态的转换是在发生了某种事件时产生的,从等待态转换成就绪态是在等待的某个事件完成时产生的