活躍就緒:是指程序在主存並且可被排程的狀態。
靜止就緒(掛起就緒):是指程序被對換到輔存時的就緒狀態,是不能被直接排程的狀態,只有當主存中沒有活躍就緒態程序,或者是掛起就緒態程序具有更高的優先順序,系統將把掛起就緒態程序調回主存並轉換為活躍就緒。
活躍阻塞:是指程序已在主存,一旦等待的事件產生便進入活躍就緒狀態。
靜止阻塞:是指程序對換到輔存時的阻塞狀態,一旦等待的事件產生便進入靜止就緒狀態。
掛起,記憶體到外存;啟用,外存到記憶體。
如果乙個程序再等待乙個不可能發生的事,則程序就死鎖了。如果乙個或多個程序產生死鎖,就會造成系統死鎖。如果乙個或多個程序產生死鎖,就會造成系統死鎖。
假設程序a、b、c。這三個程序都需要5個系統資源,則系統最少絕對不會發生死鎖的系統資源數為(5-1)+(5-1)+(5-1)+1=13
互斥條件,即每個資源一次只能被乙個程序使用。
保持和等待條件,當程序已擁有某些資源,但申請其他資源時被阻塞
不剝奪條件
環路等待條件
死鎖的避免,即程序在每次申請資源時判斷此操作是否安全。如**「銀行家演算法」**。缺點:這種演算法會增加系統開銷。
死鎖的檢測*,判斷系統是否處於死鎖狀態,如果是則執行死鎖解除策略。
死鎖的解除*,將資源強行分配給別的程序,與檢測配合使用。
我們假設有程序p1,p2,…pn
則安全序列要求滿足:pi(1<=i<=n)需要資源<=剩餘資源 + 分配給pj(1 <= j < i)資源
每設計加入乙個程序都要用上面式子檢測一下,是否有安全序列。
前驅圖為有向無迴圈圖,用於描述程序之間執行的前後關係。圖中每個結點用於描述乙個程式段或程序,乃至一條語句。結點間的有向邊則用於表示兩個結點之間存在的偏序或前驅關係。
p i→
pj
p_\rightarrow p_
pi→pj
pi是pj的直接前驅,pj是pi的直接後驅,只有前驅沒有後驅的是終止結點,只有後驅沒有前驅的是初始結點。
參考位址
是為了解決互斥同步問題。
p操作:
for(i=s;i>=0;i–)
掛起本程序或等待本程序
v操作:
for(i=s;i<=0;i++)
不喚醒s佇列中的等待程序
臨界資源,是指程序間互斥共享資源,如印表機。
臨界區,每個程序中訪問臨界資源的那段**稱為臨界區。
訊號量,用於標識共享資源是否在被使用,在被使用用0標識,未被使用用1標識。
例子:生產者->市場->消費者
生產者初值為s1=1,市場有乙個空位
消費者初值為s2=0,市場無資源
作業系統過小,無法啟動資料庫
環境 linux5.3 redhat 記憶體1g oracle 12c 12.1.0.1.0 啟動資料庫時 sql startup ora 00845 memory target not supported on this system reason 從oracle11g開始,記憶體管理引數中新增m...
作業系統之作業系統引論
掌握作業系統的概念 特徵 功能和提供的服務,作業系統的發展與分類 作業系統是計算機硬體與使用者的橋梁,是計算機硬體上的的第一層軟體,是對硬體系統的首次擴充.作業系統是一組控制和管理計算機硬體和軟體資源.合理地對各類作業 job 進行排程,以及方便使用者的程式的集合.無作業系統 單批道作業系統 多批道...
作業系統 庫
庫的定義 庫就是目標檔案的集合,我們把不需要公升級更新維護的 打包合併在一起方便使用,也可以對源 進行保密。靜態庫 靜態庫在使用時在使用時是把被呼叫的 複製到呼叫模組中,然後在執行程式時,靜態庫就不需要了。靜態庫的特性 靜態的擴充套件名為.a 靜態庫的執行速度快,但占用記憶體大,當庫中的內容發生變化...