程序與執行緒

2022-08-27 14:39:16 字數 1963 閱讀 8267

1.程序概述

程序是執行狀態的程式,每個程序有乙個程序控制塊(pcb)作為程序的標識。pcb中包括程序標識資訊,處理機現場儲存資訊和程序控制資訊。程序控制塊按程序的狀態在鍊錶中或索引表中儲存。

2.三狀態模型:

1)引起程序建立的情況:

i)系統初始化時;

ii)使用者請求建立乙個新程序;

iii)正在執行的程序執行了建立程序的系統呼叫    

2)程序進入等待(阻塞)的情況:

(只有程序自身才能知道何時需要等待某種事件的發生)

i)請求並等待系統服務,無法馬上完成

ii)啟動某種操作,無法馬上完成,如磁碟的讀寫

iii)需要的資料沒有到達

3)程序被搶占的情況(進入就緒狀態):

i)高優先順序程序就緒

ii)程序執行當前時間用完(每個程序有特定的時間占用資源)

4)喚醒程序的情況(進入就緒狀態):

(不同於等待,程序只能被別的程序或作業系統喚醒)

i)被阻塞程序需要的資源可被滿足

ii)被阻塞程序等待的事件到達

5)程序結束的情況:

i)正常退出(自願的)

ii)錯誤退出(自願的)

iii)致命錯誤(強制性的)

iiii)被其他程序所殺(強制性的)

3.程序掛起模型

程序的掛起狀態與儲存相關。掛起即把乙個程序從記憶體轉到外存。

等待掛起狀態:程序在外存並等待某事件的出現。

就緒掛起狀態:程序在外存,但只要進入記憶體,即可執行。

(進不去記憶體的原因是記憶體不夠或者程序優先順序不高)

從就緒到就緒掛起:當有高優先順序等待程序(系統認為很快就會就緒)和低優先順序就緒程序時,低優先順序就緒程序就會從就緒狀態轉為就緒掛起狀態。

從執行到就緒掛起:對搶先式分時系統,當有高優先順序等待掛起程序因事件出現而進入就緒掛起狀態,當前執行的狀態就為了騰出空間進入就緒掛起狀態。

啟用:把乙個程序從外存轉到記憶體。

就緒掛起到就緒:沒有就緒程序或掛起就緒程序優先順序高於就緒程序。

等待掛起到等待:當乙個程序釋放足夠記憶體,並有高優先順序等待掛起程序。

4.狀態佇列

作業系統中有一組佇列,不同佇列表示不同的狀態。程序狀態的切換即是在不同佇列中的刪除與插入。

5.執行緒

如果要併發執行,多程序可以實現。但如果要訪問相同資源且併發執行,那多程序來回切換要消耗很多效能。所以在程序裡加入多執行緒的概念,同一程序的多執行緒併發執行,程序中儲存共享資源,每個執行緒儲存描述指令流執行狀態的暫存器和堆疊。

6.使用者執行緒

即通過高階程式語言的庫函式來完成對執行緒的處理。

7.核心執行緒和輕權程序  

程序與執行緒

程序 process 管理單元,管理分配應用程式的資料,的記憶體空間.執行緒 thread 執行單元,執行緒負責執行乙個預先編排好的 段,執行 棧是基於執行緒的.乙個應用程式啟動的時候,程序自動建立,並且會預設建立主線程,主線程負責執行main 方法.thread t new thread new ...

程序與執行緒

程序 是擁有資源的實體,包括 1。乙個程序有乙個虛擬位址空間,不同程序位於不同的 虛擬位址空間中。程序之間若要通訊,必須通過作業系統 的功能呼叫 ipc 2。程序擁有其他資源,例如開啟的檔案和i o裝置。程序結束時,作業系統會自動釋放該程序擁有的所有資源。例如,如果 open乙個檔案而不close它...

程序與執行緒

程序包括 1 私有的虛位址空間 2 可執行程式 與資料 3 開啟系統資源列表控制代碼 4 安全訪問標誌 5 程序id 6 至少有乙個執行執行緒 執行緒包括 1 一組cpu暫存器狀態 2 兩個堆疊 系統態與使用者態 3 tls 執行緒區域性儲存區 4 執行緒id 5 安全特性 因此程序是不活潑的,它從...