採用多道程式設計可以提高cpu的利用率。嚴格地說,如果程序用於計算的平均時間是程序在記憶體中停留時間的20%,且記憶體中同時有5個程序,則cpu將一直滿負載執行。然而,這個模型在現實中過於樂觀,因為它假設這5個程序不會同時等待i/o。
更好的模型是從概率的角度來看cpu的利用率。假設乙個程序等待i/o操作的時間與其停留在記憶體中時間的比為p。當記憶體中同時有n個程序時,則所有n個程序都在等待i/o(此時cpu空轉)的概率是pn。cpu的利用率由下面的公式給出:
cpu利用率 = 1-pn
圖2-6以n為變數的函式表示了cpu的利用率,n稱為多道程式設計的道數(degree of multiprogramming)。
從圖2-6中可以清楚地看到,如果程序花費80%的時間等待i/o,為使cpu的浪費低於10%,至少要有10個程序同時在記憶體中。當讀者認識到乙個等待使用者從終端輸入的互動式程序是處於i/o等待狀態時,那麼很明顯,80%甚至更多的i/o等待時間是普遍的。即使是在伺服器中,做大量磁碟i/o操作的程序也會花費同樣或更多的等待時間。
從完全精確的角度考慮,應該指出此概率模型只是描述了乙個大致的狀況。它假設所有n個程序是獨立的,即記憶體中的5個程序中,3個執行,2個等待,是完全可接受的。但在單cpu中,不能同時執行3個程序,所以當cpu忙時,已就緒的程序也必須等待cpu。因而,程序不是獨立的。更精確的模型應該用排隊論構造,但我們的模型(當程序就緒時,給程序分配cpu,否則讓cpu空轉)仍然是有效的,即使圖2-6的真實曲線會與圖中所畫的略有不同。
雖然圖2-6的模型很簡單,很粗略,它依然對**cpu的效能很有效。例如,假設計算機有512mb記憶體,作業系統占用128mb,每個使用者程式也占用128mb。這些記憶體空間允許3個使用者程式同時駐留在記憶體中。若80%的時間用於i/o等待,則cpu的利用率(忽略作業系統開銷)大約是1-0.512(0.83,原文這裡有筆誤),即大約49%。在增加512mb位元組的記憶體後,可從3道程式設計提高到7道程式設計,因而cpu利用率提高到79%。換言之,第二個512mb記憶體提高了30%的吞吐量。
增加第三個512mb記憶體只能將cpu利用率從79%提高到91%,吞吐量的提高僅為12%。通過這一模型,計算機使用者可以確定第一次增加記憶體是乙個合算的投資,而第二個則不是。
多道程式設計技術
讓多個計算機問題同時裝入乙個計算機系統的主儲存器的併發執行,這種設計技術稱為 多道程式設計 這種計算機系統稱為 多道程式設計系統 或簡稱 多道系統 多道程式設計概念 所謂多道程式設計是指允許乙個計算機系統的主儲存器同時容納多個使用者程式,這些程式在計算機系統中可以併發執行。設有兩道程式a與b要在同乙...
作業系統之多道程式設計
早期的批處理系統中,i o裝置和cpu仍然是序列工作的,cpu時間浪費巨大,浪費了cpu的處理能力。作業系統中只有乙個可執行程式,乙個任務執行時,必須cpu執行完,i o才能執行,兩者不可並行。隨著cpu速度迅速提高而i o裝置速度卻提高不多,導致cpu和i o裝置之間的速度不匹配,矛盾越來越突出。...
多道程式設計模擬 C語言實現
作業系統實驗 模擬多道程式設計的執行,並且比較順序執行和多道程式執行的所需要的時間。程式的生命週期為 計算 io操作 計算 結束 下面為c語言實現版本,模擬的三個程式單通道模式 多道程式設計模擬 本次為作業系統的實驗,模擬了a,b,c三個程式的多道程式的執行,比較順序執行和多道程式設計 程式執行的順...