2.1.2 線程
一. 線程
- 線程與進程
引入進程是爲了更好的使多道程序併發執行,提高資源利用率和系統吞吐量。
引入線程是爲了減小程序在併發執行時的時空開銷,提高併發性能。
2. 屬性
(1)進程是資源分配的基本單位,線程是調度的基本單位。
(2)同一進程的各線程共享進程擁有資源。
(3)同一進程內的線程切換不會導致進程切換。
3. 實現方式
(1)用戶級線程
(2)內核級線程(核心態)
(3)組合級線程
操作系統只能看見內核級線程,所以內核級線程纔是CPU分配的單元
二. 多線程模型(三種)
什麼是多線程?
一個程序可以對應多個線程,每個線程對應執行不同的任務。
(1)多對一模型(多個用戶級對應一個內核級線程)
- 優點:線程管理在用戶空間進行,效率高
- 缺點:併發性不高。(若一個線程阻塞,則整個進程阻塞)
(2)一對一模型
- 優點:併發性強
- 缺點:創建線程開銷大
(3)多對多模型(比較合理)
三. 注意
- 進程獲得資源,裏面的線程共享進程空間。
- 多線程和多任務區別?
(1)多線程是對於程序而言,表示可執行的線程數
(2)多任務是對於操作系統而言,表示可同時執行的程序數。- 併發和並行區別?
(1)併發是在一段時間內,進程宏觀上同時執行,微觀上串行執行。
(2)並行是在某一時刻,同時執行。- 父進程創建子進程,和主程序調用子程序有什麼不同?
(1)父進程創建子進程,兩個進程可併發執行。
(2)主程序調用子程序時,會停在調用點,直到子程序返回。