操作系統發展史
研究並發編程其實就是研究操作系統的底層原理,所以我們需要從操作系統的發展史開始學起
手工操作 —— 穿孔卡片
1946年第一台計算機誕生--20世紀50年代中期,計算機工作還在采用手工操作方式。此時還沒有操作系統的概念。
程序員將對應於程序和數據的已穿孔的紙帶(或卡片)裝入輸入機,然后啟動輸入機把程序和數據輸入計算機內存,接着通過控制台開關啟動程序針對數據運行;計算完畢,打印機輸出計算結果;用戶取走結果並卸下紙帶(或卡片)后,才讓下一個用戶上機。
手工操作方式兩個特點:
(1)用戶獨占全機。不會出現因資源已被其他用戶占用而等待的現象,但資源的利用率低。
(2)CPU 等待手工操作。CPU的利用不充分。
20世紀50年代后期,出現人機矛盾:手工操作的慢速度和計算機的高速度之間形成了尖銳矛盾,手工操作方式已嚴重損害了系統資源的利用率(使資源利用率降為百分之幾,甚至更低),不能容忍。唯一的解決辦法:只有擺脫人的手工操作,實現作業的自動過渡。這樣就出現了成批處理。
批處理 —— 磁帶存儲
批處理系統:加載在計算機上的一個系統軟件,在它的控制下,計算機能夠自動地、成批地處理一個或多個用戶的作業(這作業包括程序、數據和命令)。
聯機批處理系統
首先出現的是聯機批處理系統,即作業的輸入/輸出由CPU來處理。
主機與輸入機之間增加一個存儲設備——磁帶,在運行於主機上的監督程序的自動控制下,計算機可自動完成:成批地把輸入機上的用戶作業讀入磁帶,依次把磁帶上的用戶作業讀入主機內存並執行並把計算結果向輸出機輸出。完成了上一批作業后,監督程序又從輸入機上輸入另一批作業,保存在磁帶上,並按上述步驟重復處理。
監督程序不停地處理各個作業,從而實現了作業到作業的自動轉接,減少了作業建立時間和手工操作時間,有效克服了人機矛盾,提高了計算機的利用率。
但是,在作業輸入和結果輸出時,主機的高速CPU仍處於空閑狀態,等待慢速的輸入/輸出設備完成工作: 主機處於“忙等”狀態。
脫機批處理系統
為克服與緩解:高速主機與慢速外設的矛盾,提高CPU的利用率,又引入了脫機批處理系統,即輸入/輸出脫離主機控制。
衛星機:一台不與主機直接相連而專門用於與輸入/輸出設備打交道的。
其功能是:
(1)從輸入機上讀取用戶作業並放到輸入磁帶上。
(2)從輸出磁帶上讀取執行結果並傳給輸出機。
這樣,主機不是直接與慢速的輸入/輸出設備打交道,而是與速度相對較快的磁帶機發生關系,有效緩解了主機與設備的矛盾。主機與衛星機可並行工作,二者分工明確,可以充分發揮主機的高速計算能力。
脫機批處理系統:20世紀60年代應用十分廣泛,它極大緩解了人機矛盾及主機與外設的矛盾。
不足:每次主機內存中僅存放一道作業,每當它運行期間發出輸入/輸出(I/O)請求后,高速的CPU便處於等待低速的I/O完成狀態,致使CPU空閑。
為改善CPU的利用率,又引入了多道程序系統。