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