1. 程式人生 > >作業系統與系統程式設計(二)程序與執行緒

作業系統與系統程式設計(二)程序與執行緒

(二)程序與執行緒

1.關於程序:

​ ——程序在使用者方面,包含了程式的執行狀態和這個程式所用的抽象記憶體及儲存資料。

​ ——程序在作業系統方面:包括:

​ (1)一個程序的執行狀態(通過在程序中儲存”狀態暫存器、指令計數器、棧指標、通用暫存器“等代表程序目前執行狀態的值實現)

​ (2)從抽象記憶體向實際記憶體和外存(磁碟等儲存裝置)的對映,以便通過抽象記憶體的地址獲得實體地址及其儲存的資料(通過分頁儲存、分段儲存等方法來實現對映)

​ 我們可以將程序籠統看成是一個或多個執行緒與一個地址空間的結合體

2.關於程序的地址空間:

​ 一個程序的全部記憶體地址和儲存的資料,稱為這個程序的地址空間

3.關於執行緒:

​ 由於多核計算機程式可併發,因此一個程序可能同時包含多個不同的執行狀態。為更好區分程序在一個處理器上的執行狀態和程序本身的執行狀態,於是引入“執行緒”這一概念。

4.​程序控制塊和執行緒控制塊:

​ 每個執行緒擁有一個執行緒控制塊,用來儲存“狀態暫存器、指令計數器、棧指標、通用暫存器”等數值(也就是在該執行緒下的程序執行狀態),同一程序的所有執行緒都共享同一個地址空間

​ 程序控制塊中包含實現地址轉換資訊和程序執行狀態的執行緒資訊,以及系統在排程程序時需要的資訊(比如程序號、程序所處狀態、程序優先順序等)

​ 注意!!

​ 程序控制塊只需儲存從抽象記憶體地址獲得實際實體地址的方法,而不會將整個地址空間中地址及其資料都儲存

​ 由於程序控制塊中的資訊是使用者程序無權修改的,因此程序控制塊儲存在核心空間中

5.三態模型和五態模型

​ 程序三態模型包括執行態(正在執行),就緒態(準備就緒,排入就緒佇列等待執行),等待態(等待某一事件發生後才會變為就緒態)

​ 五態模型還包括新建態(被建立尚未加入就緒佇列的狀態。核心建一個程序需要給它分配資源等,在這個過程中程序就處於新建態)和終止態(終止態對應程序結束但尚未被系統收回的狀態,此時系統仍可以獲得該程序結束時的資訊)

​ 新建態可避免一個新程序在未獲得全部資源前就開始執行,終止態可避免一個程序執行完畢後即被系統收回而導致無法獲取其資訊(因為無法獲取該程序資訊而導致某一程序停滯不前,產生“殭屍程序”)

如果有寫的不對或者不全面的地方 可通過主頁的聯絡方式進行指正,謝謝