發展歷程
早期的批處理系統中,I/O設備和CPU仍然是串行工作的,CPU時間浪費巨大,浪費了CPU的處理能力。操作系統中只有一個可執行程序,一個任務執行時,必須CPU執行完,I/O才能執行,兩者不可並行。
隨着CPU速度迅速提高而I/O設備速度卻提高不多,導致CPU和I/O設備之間的速度不匹配,矛盾越來越突出。
爲了解決這個問題,多道程序的概念被提出。
多道程序設計的概念與相應的問題
多道程序設計:允許多個程序(作業)同時進入一個計算機系統的內存並啓動進行交替計算的方法,也就是,計算機中可以同時存放多道程序,從宏觀上來看它們是並行的,多道程序都同時處於運行過程中,但都未運行結束,但是微觀上是串行的,輪流佔用CPU交替執行,引入多道程序設計技術的根本目的是提高CPU的利用率,充分發揮計算機系統部件的並行性。
多道程序設計需要考慮的一些問題
交替執行的多道程序設計理念,能夠提高系統的效率,增加單位時間的處理能力,但是對於單道程序來說,卻延長了計算時間。所以,要明白,多道程序設計提高資源利用率和系統吞吐率是以犧牲用戶的作業週轉時間爲代價的,而一些無法延遲的計算,也是多道程序設計需要考慮的問題。
在多道程序設計中,道的數量是需要衡量的,因爲道數的多少和系統效率不是完全正相關的(比如CPU的切換也是需要時間的),它通常由系統的資源和用戶的要求而定。而且,內存的容量以及用戶的響應時間也是影響多道程序道數的重要因素。
總結利弊
-
提高了CPU的利用率
-
提高了內存和I/O設備的利用率
-
改進了系統的吞吐率
-
充分發揮了系統的並行性
-
主要缺點是延長了作業週轉時間
多道程序設計與多重處理系統
多道程序設計系統與多重處理系統有差別,後者是指配置了多個物理CPU,從而,能真正同時執行多道程序的計算機系統。要有效地使用多重處理系統,必須採用多道程序設計技術,反過來,多道程序設計不是必須要有多重處理系統支持。
實現多道程序設計必須妥善地解決三個問題:存儲保護與程序浮動;處理器的管理和分配;系統資源的管理和調度;
在多道程序設計中,內存是由幾道程序所共享,因此,硬件需要提供一定的功能,使得內存中的各道程序只能訪問它自己的區域,以避免相互干擾。特別是當一道程序發生錯誤的時候,不致影響到其它的程序,更不能影響系統程序,這就是存儲保護。
在多道程序設計系統裏,如果系統僅配置一個物理處理器,那麼,多個程序必須輪流佔有處理器,這就涉及到處理器的調度,程序在執行中處於三種狀態:
-
運行態,當一個程序佔有處理器時;
-
等待態,當一個程序等待某個事件發生時,就處於等待態,比如等待I/O;
-
就緒態,當一個等待的條件已滿足可以運行而未佔用處理器時;
所以,一道程序在執行中總是處於運行、就緒、等待三種狀態之一,一道程序在執行過程中,它的程序狀態是變化的,從運行態到等待態的轉換是在發生了某種事件時產生的,從等待態轉換成就緒態是在等待的某個事件完成時產生的