作業系統 程序和執行緒 CPU排程演算法

2021-10-01 08:10:10 字數 1597 閱讀 3402

執行緒擁有的資源: 程式計數器 暫存器 棧 狀態字

什麼是殭屍程序:

當子程序比父程序先結束,而父程序又沒有**子程序,釋放子程序占用的資源,此時子程序將成為乙個殭屍程序。

怎樣來清除殭屍程序

改寫父程序,在子程序死後要為它收屍。具體做法是接管 sigchld 訊號。子程序死後,會傳送 sigchld 訊號給父程序,父程序收到此訊號後,執行 waitpid()函式為子程序收屍。這是基於這樣的原理:就算父程序沒有呼叫 wait,核心也會向它傳送 sigchld 訊息,儘管對的預設處理是忽略,如果想響應這個訊息,可以設定乙個處理函式。

把父程序殺掉。父程序死後,殭屍程序成為」孤兒程序」,過繼給 1 號程序 init,init 始終會負責清理殭屍程序.它產生的所有殭屍程序也跟著消失。

產生死鎖的必要條件

互斥條件

不可搶占條件

占有並申請條件

迴圈等待條件

死鎖的避免安全序列

安全序列:如果系統按照這種序列分配資源,則每個程序都能 順利完成。

只要能找出乙個安全序列,那麼系統就處於安全狀態

死鎖的避免 - 銀行家演算法

核心思想:在程序提出資源申請時,先預判此次分配是否會進入不安全狀態,如果會進入不安全狀態,就暫時不答應這次請求,讓該程序先阻塞著。

我們可以把作業系統看作是銀行家,作業系統管理的資源相當於銀行家管理的資金,程序向作業系統請求分配資源相當於使用者向銀行家貸款。

為保證資金的安全,銀行家規定:

當乙個顧客對資金的最大需求量不超過銀行家現有的資金時就可接納該顧客;

顧客可以分期貸款,但貸款的總數不能超過最大需求量;

當銀行家現有的資金不能滿足顧客尚需的貸款數額時,對顧客的貸款可推遲支付,但總能使顧客在有限的時間裡得到貸款;當顧客得到所需的全部資金後,一定能在有限的時間裡歸還所有的資金.

作業系統按照銀行家制定的規則為程序分配資源,當程序首次申請資源時,要測試該程序對資源的最大需求量,如果系統現存的資源可以滿足它的最大需求量則按當前的申請量分配資源,否則就推遲分配。當程序在執行中繼續申請資源時,先測試該程序本次申請的資源數是否超過了該資源所剩餘的總量。若超過則拒絕分配資源,若能滿足則按當前的申請量分配資源,否則也要推遲分配。

作業系統 CPU排程

控制 協調多個程序對cpu的競爭 即按一定的排程演算法從就緒佇列中選擇乙個程序,把cpu的使用權交給被選中的程序 n個程序就緒,等待上m m 1 個cpu執行,需要決策哪個程序分配給哪個cpu執行 排程時機 核心對中斷 異常 系統呼叫處理後返回使用者態時 就緒佇列的改變引發重新排程 如程序正常終止 ...

作業系統面試 cpu排程

cpu排程是多道程式設計的基礎。本文是對作業系統概念 第七版 第五章 cpu排程的學習總結,不足之處歡迎各位博友提出,共同進步。1 介紹cpu排程常見概念。2 介紹cpu排程演算法以及特點。1 cpu排程決策發生的情況 a 當乙個程序從執行態到等待狀態。i o請求 b 執行狀態到就緒態 中斷 c 等...

作業系統 CPU排程(一)

cpu排程室多道程式作業系統的基礎。通過在程序之間切換cpu,作業系統可以提高計算機的生產效率。接下來會展示多個不同cpu的排程演算法。還要闡述為特定系統選擇演算法的問題。多道程式設計的 目標是在任何時候都有乙個程序在執行,以使cpu使用了最大化。在單處理器系統中,每次允許乙個程序執行 任何其他程序...