OS 程序 執行緒 死鎖

2022-10-09 23:15:18 字數 1669 閱讀 3662

程序執行緒

含義

乙個在記憶體中執行的應用程式

程序的乙個執行任務

包含關係

乙個程序有若干個執行緒,至少包含乙個執行緒

程序的一部分,相當於只有乙個任務的程序(也稱輕權程序、輕量級程序)

根本區別

作業系統資源分配的基本單位

處理器任務排程和執行的基本單位

資源開銷

每個程序都有獨立的**和資料空間(程式上下文),上下文切換的開銷大

同一類執行緒共享**和資料空間,每個執行緒有獨立的棧區和程式計數器,上下文切換的開銷小

記憶體分配

不同程序間的位址空間和資源相互獨立

同一程序的執行緒共享本程序的位址空間和資源

影響關係

程序崩潰後,在保護模式下不影響其它程序

執行緒「崩潰」,可能導致整個程序崩潰。

(多程序比多執行緒健壯)

執行過程

可獨立執行,有程式執行的入口、順序執行序列和程式出口

執行緒不能獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制

執行緒「崩潰」時觸發 segment fault 訊號

系統的預設處理方式是終結該執行緒所在的程序,也可遮蔽訊號。

j**a 執行緒崩潰,jvm 自動釋放相關的資源,不會導致程序崩潰。

執行緒狀態

分類標準:可重用、可搶占。

消耗性資源(臨時)

程序執行順序:系統進入不安全狀態。

只要發生死鎖,以下 4 個條件同時成立。

互斥:至少有乙個資源非共享,同一時刻只有乙個執行緒能使用。

不可剝奪:即不可搶占資源,資源只能在程序完成任務後主動釋放

請求與保持:程序占用至少乙個資源,並等待另乙個被其它程序占用的資源。

迴圈等待:存在程序資源的迴圈等待鏈(如程序 p1 等待 p2,p2 等待 p1)

預防設定限制條件,破壞產生死鎖的 4 個必要條件。

避免在資源的動態分配過程中,用某種方法防止系統進入不安全狀態。

有序資源分配法:將資源統一編號,程序必須按編號順序申請資源。

銀行家演算法:允許程序動態申請資源,在資源分配前檢查安全性。

常用技術

檢測

設定檢測機構,及時檢測死鎖的發生。

解除檢測出死鎖後,採取適當措施將程序從死鎖狀態中解脫出來。

os 程序執行緒概念

作業系統中為了提供cpu的利用率,引入了多道程式設計,於是就有了程序的概念。程序模型無疑提高了cpu的利用率,因為多個程序可以 同時 執行在乙個cpu上,乙個程序被阻塞掉了,另乙個程序就可以被排程上cpu繼續執行了。這樣降低了cpu閒置的時間。但是程序模型卻存在乙個問題。那就是如果乙個程序被阻塞掉了...

OS回顧 死鎖

互斥訪問條件 即乙個資源一段時間內只能被乙個執行緒占有,不能被兩個或兩個以上執行緒占有 不可搶占條件 當乙個資源正在被乙個程序占用時,不可以被其他程序搶占 占有且申請條件 程序已經保持了至少乙個資源,但又提出了新的資源請求,而該資源已被其他程序占有,此時請求程序被阻塞,但對自己已獲得的資源保持不放。...

程序 執行緒 死鎖的相關知識

面試中經常會被問到,程序及執行緒的相關知識,這裡做乙個總結。很容易區分倆概念 干擾的記憶體空間,此空間,被分成幾個段 segment 分別是text,data,bss,heap,stack。執行緒 容易想到多執行緒,就是併發的執行多個任務。總結,程序是資源分配的基本單元,執行緒是cpu排程的最小單元...