進程與進程管理 | 線程的基本概念
來自專欄 操作系統筆記
線程的概念
線程定義:
線程是進程內一個相對獨立的可調度的執行單元。
線程屬性:
- 輕型實體:TCB+堆棧+一組寄存器
- 獨立調度和分派的基本單位;
- 可並發執行;
- 共享進程資源;
- 線程有生命周期,在生命期中有狀態變化。
線程狀態
- 就緒態;
- 執行態;
- 等待態;
- 終止態。
Windows 的線程狀態:
(1)初始化狀態; (2)就緒狀態;
(3)備用狀態; (4)運行狀態;
(5)等待狀態; (6)轉換狀態
(7)終止狀態;
線程管理
TCB的管理:
按照線程的狀態,分別將線程的線程式控制制塊(TCB)組織在相應的隊列中進行管理。
主要的線程式控制制原語:
- 線程創建原語
- 線程撤銷原語;
- 線程阻塞原語;
- 線程喚醒原語
線程調度:
與進程調度相似
線程同步:
與進程同步相似
線程通信:
由於同一個進程內部中的多個線程之間是可以共享進程的相關資源的,因此只要在進程內部設置一個共享資源,使得線程之間互相共享即可,不需要操作系統內核的支持。
線程實現機制
用戶級線程(ULT)
完全由用戶應用程序實現的線程機制。該線程的所有功能都是由該應用程序來管理完成的。
示例:POSIX Pthreads; Mach C-threads;Solaris threads
在如上圖所示,在用戶空間中創建一個通信伺服器,其中包含線程管理程序(實現對線程的管理);操作系統只為該通信伺服器創建一個通信伺服器進程,操作系統調度這個進程的運行,也就是為這個進程分配CPU和布置現場。當該通信伺服器獲得CPU的使用權後,會運行線程管理程序,創建多個用戶級線程,讓這些進程共享操作系統分配的CPU,實現多線程功能。
運行時系統(線程庫):
提供多線程應用程序的開發環境和運行環境。
由一組管理和控制線程的函數(過程)集合組成。它們作為進程代碼的一部分,駐留在進程的用戶空間。
運行時系統功能:
(1)線程式控制制;
(2)線程調度;
(3)線程同步;
(4)線程通信;
用戶級線程的優點:
(1)線程的調度及切換開銷小;
(2)線程調度由應用程序完成,可以選擇最適當的演算法;
(3)可運行在任何操作系統上
用戶級線程的缺點:
(1)線程系統調用時,將導致所屬進程阻塞; (如下圖,當T1線程申請系統調用,在T1線程執行系統調用的過程中,操作系統會將整個P1進程阻塞,從而導致此時P1進程的T2和T3線程不能獲取CPU進行運行。)
(2)核心只將處理器分配給進程,同一進程中的兩個線程不能同時運行於兩個處理器上;(OS只會為進程分配CPU,比如只分配一個CPU給P1進程,而不會因為P1進程存在3個線程而分配3個CPU。從而會導致對系統資源的浪費,空閑資源得不到充分的使用。)
內核級線程(KLT)
完全由OS內核實現的線程機制。
示例:Windows 2000/xp, Solaris, Digital UNIX
內核級線程的實現:
(1)OS創建進程時,可為該進程分配一個任務數據區,其中包含一組TCB空間; (OS可看見線程)
(2)當進程創建一個線程時:
- 分配並填寫一個空白TCB;
- 為線程分配棧空間。(存放在OS內核區域)
(3)OS內核實現線程的阻塞/喚醒、線程調度、線程同步、線程通信;
(4)撤銷線程:
- 回收該線程所有資源;
- 回收TCB。
內核級線程優點:
(1)對多處理器,核心可以同時調度同一進程的多個線程;
(2)阻塞是在線程一級完成;
(3)核心常式是多線程的;
內核級線程缺點:
同一進程內的線程切換調用內核,系統開銷大。
推薦閱讀:
※主存管理 | 段式存儲管理方式
※無人駕駛操作系統(OS)
※設備管理 | I/O軟體
※系統突發性地磁碟佔有100%,資源管理器無限重啟
TAG:操作系統 |