個人學習筆記-作業系統銀行家演算法題目
銀行家演算法的詳細描述,請自行查閱資料。
筆者只以一道簡單的題目做描述。
題目:
5個程序從p0到p4
3個資源型別A(10個例項),B(5個例項),C(7個例項)
具體輸入如下表:
在T0時刻有:
Allocation |
Max |
Available |
|
A B C |
A B C |
A B C |
|
P0 |
0 1 0 |
7 5 3 |
3 3 2 |
P1 |
2 0 0 |
3 2 2 |
|
P2 |
3 0 2 |
9 0 2 |
|
P3 |
2 1 1 |
2 2 2 |
|
P4 |
0 0 2 |
4 3 3 |
Available表示每類資源可用的數量。
Allocation表示當前分給每個程序的資源數目。
Max表示每個程序對資源的最大需求
答案分析如下表:
初始時:
Work:= Available
Need:=Max-Allocation
即:(只看黑字)
Work |
Need |
Allcation |
Work=Work+Allcation |
finish(Work+Allcation<(10,5,7)) |
|
A B C |
A B C |
A B C |
A B C |
||
P0 |
7 4 5 |
0 1 1 | |||
P1 |
3 3 2 |
1 2 2 |
2 0 0 | 5 3 2 |
true |
P2 |
6 0 0 | 3 0 2 | |||
P3 |
5 3 2 |
0 1 1 |
2 1 1 |
7 4 3 |
true |
P4 |
4 3 1 |
0 0 2 |
然後看P2不滿足Work>=Need,P3滿足條件Work>=Need,P1行求得(藍色)。以此類推,P4也可以求出。之後又從頭開始遍歷,依次完成P0,P2。
當完成後,finish都為true表示,系統處於安全狀態。輸出順序就可以了,如下圖:
Work |
Need |
Allcation |
Work+Allcation |
finish |
|
A B C |
A B C |
A B C |
A B C |
||
P1 |
3 3 2 |
1 2 2 |
2 0 0 |
5 3 2 |
true |
P3 |
5 3 2 |
0 1 1 |
2 1 1 |
7 4 3 |
true |
P4 |
7 4 3 |
4 3 1 |
0 0 2 |
7 4 5 |
true |
P0 |
7 4 5 |
7 4 3 |
0 1 0 |
7 5 5 |
true |
P2 |
7 5 5 |
6 0 0 |
3 0 2 |
10 5 7 |
true |
如表銀行家演算法的結果為 <P1,P3,P4,P0,P2>
筆者是個初學者,如有問題請聯絡。
相關推薦
個人學習筆記-作業系統銀行家演算法題目
銀行家演算法的詳細描述,請自行查閱資料。 筆者只以一道簡單的題目做描述。 題目: 5個程序從p0到p4 3個資源型別A(10個例項),B(5個例項),C(7個例項) 具體輸入如下表: 在T0時刻有: Allocation Max Available A
PL/SQL個人學習筆記
sql pop dbms var begin cal create div ont 資料1 -- Created on 2014/8/20 declare -- Local variables here i integer; begin
讀入優化~~~(個人學習筆記)
false == 學習 學習筆記 筆記 scanf ios sca tchar 基本模板:inline int read(){ int x=0,w=1; char ch=0; while(ch<‘0‘ || ch>‘9‘){if(ch==‘-‘)w=-1;ch=
個人學習筆記
個人學習 tar erl linux命令大全 class linux命令 http html blog zabbix linux命令大全 python模塊大全個人學習筆記
python+selenium個人學習筆記10-調用JavaScript和截圖
end post style keys driver quit fin send IT 調用JavaScript和截圖 一、調用JavaScript 1、調整瀏覽器滾動條位置 window.scrollTo(0,500); #左邊距,上邊距 2、用ex
js 數組方法(個人學習筆記)
rev 了解 很多 com 過濾 接收參數 版本 push 操作數 首先,創建數組的兩個方法: 1.構造函數: var array = new Array();//新建一個空數組 var array1 = new Array(20);//新建一個長度為20位的空數組
js 字符串方法(個人學習筆記)
new substring for name var 基本 正則表達 pattern 都是 首先,創建數組的兩個方法: 1.構造函數: var str = new String("a"); console.log(str);//"a" 2.字面量表示: var
js Math對象方法 (個人學習筆記)
最大 eof null alert XP source floor app math.sqrt 方法: 1.丟棄小數部分,保留整數部分 parseInt(5/2) 2.向上取整,有小數就整數部分加1 Math.ceil(5/2) 3,四舍五入.
JQ ajax全局事件 (個人學習筆記)
ron strong div sting UNC art append 屬性 res 作用:當你的頁面存在很多ajax事件的話,我們有一些信息是公共的,可以復用,我們可以用全局事件進行編寫,因為每一個ajax事件調用,都會觸發ajax全局事件。 jquery的ajax方
【知識小結】Git 個人學習筆記及心得
art over round TP 緩存 PE QQ 的區別 rda https://mp.weixin.qq.com/s/D96dXYfu3XAA4ac456qo0g git架構 工作區:就是你在電腦裏能看到的目錄。 版本庫:工作區有一個隱藏目錄.git,,而是
React個人學習筆記
myself value sse style css awesome func ons link 元素渲染 通過 ReactDOM.render() 方法渲染頁面, 可以使用 ES6 class 來定義一個組件: class Welcome extends React.C
MySQL個人學習筆記
https temp 刪除索引 ola 數據庫名 sql語句 偏移量 同時 安全模式 目錄: 數據庫的基本操作 創建、刪除用戶及授權 數據庫字符校對集 創建、刪除數據庫和表 DML操作 DDL操作 索引 事務 一、數據庫的基本操作 -
[學習筆記] Berlekamp-Massey演算法 - 學習筆記
重新實現了一個看上去就像是對的的東西。 推薦:傳送門 講的很清楚了,不多贅述。 #include<bits/stdc++.h> #define gc getchar() #define rep(i,a,b) for(int i=a;i<=b;i++) #define R
區塊鏈學習筆記:共識演算法
本文主題:共識、演算法、共識演算法名詞解析,以及簡單理解PRS協議所採用的共識演算法 1、 什麼是共識?共識是共同的認識。 什麼是演算法?演算法是利用計算機處理問題的解決步驟。 演算法的基礎——結構化程式設計的思想 用計算機編寫程式時,為了提高應用程式的效率
機器學習筆記——最鄰近演算法(KNN)補充
最鄰近演算法補充(K-Nearest Neighbor,KNN) 1、訓練資料集?測試資料集? 我們在使用機器學習演算法訓練好模型以後,是否直接投入真實環境中使用呢?其實並不是這樣的,在訓練好模型後我們往往需要對我們所建立的模型做一個評估來判斷當前機器學習演算法的效能,當我們在
MySQL個人學習筆記 MySQL個人學習筆記
MySQL個人學習筆記 目錄: 資料庫的基本操作 建立、刪除使用者及授權 資料庫字元校對集 建立、刪除資料庫和表 DML操作 DDL操作 索引 事務 一、資料庫的基本
資料結構與演算法之美專欄學習筆記-雜湊演算法
雜湊演算法的定義和原理 將任意長度的二進位制串對映為固定長度的二進位制串。 這個對映的規則就是雜湊演算法,而通過原始資料對映之後得到的二進位制串就是雜湊值。 設計一個優秀的雜湊演算法需要滿足: 從雜湊值不能反向推匯出原始資料(所以雜湊演算法也叫單向雜湊演算法); 對輸入資料非常敏感,哪怕原始
18.10.22 個人學習筆記
18.10.22 個人學習筆記 實驗名稱: TCP/UDP 報文結構分析實驗拓撲: 實驗總結:-1、Etheret 頭部結構0、IP頭部結構1、TCP結構圖2、UDP結構圖3、RIP的埠號是 UDP 520, 並
oracle個人學習筆記
1>-----------------------------表空間------------------------- 1.1>建立表空間example create tablespace 表空間名稱[example] logging datafile 資料庫儲存位置['
SERVER&HTTP-day3-個人學習筆記
SERVER&HTTP-day3-個人學習筆記 一、HTTP 1、URL概念 URL-統一資源定位符;URI-統一資源識別符號 2、完整的URL-網路協議:IP地址(虛擬地址):埠號/路徑;引數?查詢資料#錨點 常見:http://www.baidu.com