為什麼要引入程序和執行緒的問題呢?
目錄程序的管理
程序間關係
執行緒執行緒實現
引入多執行緒
小結一項新概念的引入一般都是為了更好的描述或構建乙個新的體系。程序與執行緒也不外乎如此。
程序是在多道程式系統中引入,但直到目前為止,程序的定義也未能完全統一。而執行緒則出現的較晚,但卻是彌補了程序的一些缺陷,所以執行緒又名輕程序。
關於程序這一概念的解釋有很多種,但這些解釋都具有同乙個特性——強調程式的執行,即程序所具有的一種動態特性,這是程序與程式間本質上的差異。
程序與程式的區別:關於程序,我們做出如下討論。程式是靜態的,程序是動態的。
程式可通過儲存介質長期儲存,程序具有生命週期。
程式和程序是一對多的關係,而程序和程式確只能是一對一。
系統程序:也稱守護程序,乙個系統程序所完成的任務是相對獨立和具體的,其優先順序高於使用者程序。
使用者程序:在作業系統之上執行的所有應用程式都稱為使用者程序。
無論是系統程序還是使用者程序,都具有:注意:程序是排程的基本單位併發性,動態性,獨立性,互動性,非同步性,結構性等幾大特性。
基本狀態有三種:
執行態(run):程序占有處理器資源,正在執行。
就緒態(ready):程序等待處理器資源,已具備執行條件。
等待態(wait):不具備執行條件。
程序狀態轉換:
執行->就緒:剝奪程序所占有的處理器資源(也可能是程序正常執行結束)。
執行->等待:等待某事件的發生。
就緒->執行:分配程序處理器資源。
就緒->等待:不存在。
等待->就緒:程序所等待的事件以發生,當前正在等待處理器資源。
等待->執行:不存在。
note:程序控制塊是標誌程序存在的資料結構(對使用者透明),在其中包含系統對程序管理所需要的全部資訊。非搶占式排程,不存在執行->就緒的狀態轉換。
處理器排程演算法對於程序的狀態轉換具有直接的影響,如上所述即為一種情況。
pcb中所包含的資訊數量與系統規模,功能成正相關關係。建立程序->建立pcb
撤銷pcb->撤銷程序
資料:一般包含靜態變數,動態堆(儲存動態變數)以及動態棧。
就緒佇列:根據排程演算法確定,一般來說,整個系統就只有乙個。
等待佇列:與事件個數對等,即每個等待事件有乙個等待佇列。
執行佇列:與處理器個數有關,每個cpu有乙個。
建立:
由父程序建立的子程序是其全盤複製,即子程序除了程序號與父程序不一致外,其他均相同。撤銷:
程序的撤銷的原因可以是正常執行結束,也可以是程序執行是發生錯誤而結束。邏輯關係:
無關程序:無任何邏輯聯絡
相互作用:
直接相互作用: 不需要第三方而發生相互作用
只能發生在相關程序之間。間接相互作用: 需要第三方才能發生作用
執行緒與程序相類似,所以又成執行緒為輕程序,但執行緒是程序內的乙個相對獨立的執行流,即乙個執行緒包含多個執行緒。
程序內的多個執行緒執行同一程式中相同或不同**段,共享資料區和堆。tcb中內容較少,因為大多數內容是記錄在程序中。程序是資源的分配單位,執行緒是cpu的排程單位。
執行緒的實現方式決定tcb的歸屬。
tcb歸屬:作業系統空間,使用者程序空間。核心級別執行緒(klt)
使用者級別執行緒(ult)
混合執行緒
當乙個應用中程序間的功能有所重疊(如具有相同的**和資料),此時如果採用多程序的方式,那麼對於系統來說,系統開銷是非常巨大的。
所以多執行緒的引入成為了必需:
同一程序的多個執行緒間可共享記憶體,合作完成某項功能。
同一程序的多個執行緒間切換速度快。
提高處理器與裝置之間的並行性。
多處理器環境下,多執行緒可並行執行(不同程序)。
只有當同一程序中的多個執行緒具有相同**和資料,或者這些執行緒之間是合作(執行**不同部分)的,或者是同構(執行相同**)。才可以採用多執行緒處理模式。程式是程序的組成部分,程序是為了執行對應的程式而存在的,如此可知沒有程式,程序也失去了討論的意義。
而沒了程序,執行緒也就不復存在了。
程序與執行緒
程序 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 安全特性 因此程序是不活潑的,它從...