併發編程 操作系統發展史 穿孔卡片 讀取數據速度特別慢,CPU利用率極低 單用戶使用 批處理 讀取數據速度特別慢,CPU利用率極低 聯機使用 離線批處理(現代操作系統的設計原理) 讀取數據速度提高 CPU的利用率提高 多道技術(基於單核背景下產生的) 單道(串列):一個任務完完整整地運行完畢後,才能 ...
併發編程
操作系統發展史
- 穿孔卡片
- 讀取數據速度特別慢,CPU利用率極低
- 單用戶使用
- 批處理
- 讀取數據速度特別慢,CPU利用率極低
- 聯機使用
- 離線批處理(現代操作系統的設計原理)
- 讀取數據速度提高
- CPU的利用率提高
多道技術(基於單核背景下產生的)
- 單道(串列):一個任務完完整整地運行完畢後,才能運行下一個任務
- 多道技術:允許多個程式同時進入記憶體並運行。同時把多個程式放入記憶體,並允許它們交替在CPU中運行,它們共用系統中的各種硬、軟體資源。當一道程式因I/O請求而暫停運行時,CPU便立即轉去運行另一道程式。
多道技術的實現是為瞭解決多個程式競爭或者說共用同一個資源的有序調度問題,解決方式即多路復用,多路復用分為時間上的復用和空間上的復用。
空間上的復用:多個程式使用一個CPU(多個進程復用記憶體空間)
時間上的復用:多個進程復用CPU的時間
當執行程式遇到IO時,操作系統會將CPU的執行許可權剝奪
優點:CPU的執行效率提高
當執行程式執行時間過長時,操作系統會將CPU的執行許可權剝奪
缺點:程式的執行效率低
併發與並行
- 併發:是偽並行,即看起來是同時運行。單個CPU+多道技術就可以實現併發
- 並行:同時運行,只有具備多個CPU才能實現並行
無論是並行還是併發,在用戶看來都是“同時”運行的。不管是進程還是線程,都只是一個任務而已,真正工作的只有CPU。一個CPU同一時刻只能執行一個任務。
程式、進程和線程
程式:一系列代碼文件組成
進程:一個正在運行的程式的一個實例。包括程式代碼和當前的活動
線程:CPU可使用的最基本單元。 也成為輕量級進程。線程是進程中的一個實體。 線程是進程中的指令序列,其行為類似於進程。不同於進程是因為它沒有自己的程式控制塊。
ps:通常,在進程中創建多線程。線程在進程內執行,進程在操作系統內核中執行。
進程的三種狀態
就緒態:具備運行的所有條件,邏輯上可以運行,等待CPU處理
等待(阻塞)態:等待某一事件
運行態:正在占用處理器運行
進程調度
- 先來先服務調度演算法。缺點:執行效率低
- 短作業優先調度演算法,執行時間越短,則優先調度。缺點:導致執行時間長的程式,需要等待所有時間短的程式執行完畢後,才能執行
- 時間片輪轉法
- 多級反饋隊列
同步與非同步?
同步:?
非同步:?
阻塞與非阻塞?
阻塞:凡是遇到IO都會阻塞
非阻塞:除了IO都是非阻塞