程序與執行緒的理解

2021-09-29 14:29:54 字數 2574 閱讀 3292

程序是乙個實體。每乙個程序都有它自己的位址空間,一般情況下,包括文字區域(text region)、資料區域(data region)和堆疊(stack region)。文字區域儲存處理器執行的**;資料區域儲存變數和程序執行期間使用的動態分配的記憶體;堆疊區域儲存著活動過程呼叫的指令和本地變數。

程序是乙個「執行中的程式」。程式是乙個沒有生命的實體,只有處理器賦予程式生命時(作業系統執行之),它才能成為乙個活動的實體,我們稱其為程序。

這個時候會產生乙個疑問?

當系統建立了程序之後,我們怎麼來記錄程序的一些狀態,程序id等跟該程序相關的所有資訊呢?

當作業系統建立了程序之後,怎麼能讓作業系統去跟蹤到該程序, 所以必須要有一些與程序相關的資訊,包括程序在記憶體中的當前狀態和位置。即程序控制塊。

這個時候會涉及到程序控制塊(pcb)

那麼什麼是程序控制塊?

程序狀態:可以是new、ready、running、waiting或 blocked等。

cpu暫存器:如累加器、索引暫存器(index register)、堆疊指標以及一般用途暫存器、狀況**等,主要用途在於中斷時暫時儲存資料,以便稍後繼續利用;其數量及類因電腦架構有所差異。

cpu排班法:優先順序、排班佇列等指標以及其他引數。

儲存器管理:如標籤頁表等。

會計資訊:如cpu與實際時間之使用數量、時限、賬號、工作或程序號碼。

輸入輸出狀態:配置程序使用i/o裝置,如磁帶機。 [1]

pcb與程序有什麼關係?

乙個 程序要麼正在執行(稱為執行態)

乙個 程序要麼未執行(稱為未執行態)

了解完程序的基礎模型之後,那麼程序的生命週期都會圍繞著程序的建立和終止。

存在一些處於非執行狀態但已就緒等待執行的程序。

同時還存在著另外一些處於阻塞態等待i/o操作結束的程序。

就緒態:程序已在記憶體中並可以執行。

阻塞態:程序已在記憶體中並等待乙個事件。

阻塞/掛起態:程序已在外存中並等候乙個事件。

就緒/掛起態:程序已在外存中,但只要載入記憶體就可執行。

引起程序狀態轉換的具體原因如下:

1.等待態—→掛起等待態:如果當前不存在就緒程序,那麼至少有乙個等待態程序將被對換出去成為掛起等待態;

作業系統根據當前資源狀況和效能要求,可以決定把等待態程序對換出去成為掛起等待態。

2.掛起等待態—→掛起就緒態:引起程序等待的事件發生之後,相應的掛起等待態程序將轉換為掛起就緒態。

3.掛起就緒態—→就緒態:當記憶體中沒有就緒態程序,或者掛起就緒態程序具有比就緒態程序更高的優先順序,

系統將把掛起就緒態程序轉換成就緒態。

4.就緒態—→掛起就緒態:作業系統根據當前資源狀況和效能要求,也可以決定把就緒態程序對換出去成為掛起就緒態。

5.掛起等待態—→等待態:當乙個程序等待乙個事件時,原則上不需要把它調入記憶體。但是在下面一種情況下,

這一狀態變化是可能的。當乙個程序退出後,主存已經有了一大塊自由空間,

而某個掛起等待態程序具有較高的優先順序並且作業系統已經得知導致它阻塞的事件即將結束,此時便發生了這一狀態變化。

6.執行態—→掛起就緒態:當乙個具有較高優先順序的掛起等待態程序的等待事件結束後,它需要搶占 cpu,

而此時主存空間不夠,從而可能導致正在執行的程序轉化為掛起就緒態。另外處於執行態的程序也可以自己掛起自己。

7.新建態—→掛起就緒態:考慮到系統當前資源狀況和效能要求,

可以決定新建的程序將被對換出去成為掛起就緒態。

程式、資料、棧、程序控制塊(pcb)的集合稱之為程序映像。程序和執行緒算是作業系統內兩個很基本、很重要的概念了,程序是作業系統中進行保護和資源分配的基本單位,作業系統分配資源以程序為基本單位。而執行緒是程序的組成部分,它代表了一條順序的執行流。

程序從作業系統獲得基本的記憶體空間,所有的執行緒共享著程序的記憶體位址空間。當然,每個執行緒也會擁有自己私有的記憶體位址範圍,其他執行緒不能訪問。

由於所有的執行緒共享程序的記憶體位址空間,所以執行緒間的通訊就容易的多,通過共享程序級全域性變數即可實現。

同時,在沒有引入多執行緒概念之前,所謂的『併發』是發生在程序之間的,每一次的程序上下文切換都將導致系統排程演算法的執行,以及各種 cpu 上下文的資訊儲存,非常耗時。而執行緒級併發沒有系統排程這一步驟,程序分配到 cpu 使用時間,並給其內部的各個執行緒使用。

在分時系統中,程序中的每個執行緒都擁有乙個時間片,時間片結束時儲存 cpu 及暫存器中的執行緒上下文並交出 cpu,完成一次執行緒間切換。當然,當程序的 cpu 時間使用結束時,所有的執行緒必然被阻塞。

程序與執行緒理解

程序和執行緒簡單而基本靠譜的定義如下 程序 程式 在資料集上的一次執行,資源分配的基本單位 執行緒 程式的一部分 塊,某個模組 在資料集上的一次執行,cpu的基本排程單位 一些例子概念理解 cpu ram 各種資源 比如顯示卡,光碟機,鍵盤,gps,等等外設 構成我們的電腦,但是電腦的執行,實際就是...

程序與執行緒的通俗理解

程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就是說,乙個車間開工的時候,其他車間都必須停工。背後的含義就是,單個cp...

程序與執行緒的通俗理解

qq程式如果沒有執行,那它只是程式,而不是程序,一旦執行了qq程式,那它就成了程序。qq程式一旦執行成了程序,作業系統如windows就要 分配給qq執行的記憶體空間,cpu執行的時間以及其它資源,這樣qq程式就可正常執行了。如果要執行其它程式,如防毒軟體,作業系統也要做同樣的事情。有了程序 之後,...