程序執行緒
含義
乙個在記憶體中執行的應用程式
程序的乙個執行任務
包含關係
乙個程序有若干個執行緒,至少包含乙個執行緒
程序的一部分,相當於只有乙個任務的程序(也稱輕權程序、輕量級程序)
根本區別
作業系統資源分配的基本單位
處理器任務排程和執行的基本單位
資源開銷
每個程序都有獨立的**和資料空間(程式上下文),上下文切換的開銷大
同一類執行緒共享**和資料空間,每個執行緒有獨立的棧區和程式計數器,上下文切換的開銷小
記憶體分配
不同程序間的位址空間和資源相互獨立
同一程序的執行緒共享本程序的位址空間和資源
影響關係
程序崩潰後,在保護模式下不影響其它程序
執行緒「崩潰」,可能導致整個程序崩潰。
(多程序比多執行緒健壯)
執行過程
可獨立執行,有程式執行的入口、順序執行序列和程式出口
執行緒不能獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制
執行緒「崩潰」時觸發 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排程的最小單元...