資源簡介
仿真模擬銀行家算法對死鎖的避免。對于進程死鎖的避免問題,分為兩種狀態:安全狀態和非安全狀態。在避免死鎖的方法中,允許進程動態地申請資源分配之前,應先計算此次資源分配的安全性。若此次分配不會導致系統進入不安全狀態,則將資源分配給進程;否則,令進程等待。
所謂安全狀態是指系統能按某種進程順序,來為每個進程pi分配所需的資源,直至滿足每個進程對資源的最大需求,使每個進程都可順利地完成。如果系統無法找到這樣一個序列,則系統處于不安全狀態。只要系統處于安全狀態,系統便可避免進入死鎖狀態。因此避免死鎖的實質在于:系統在進行資源分配時,如何使系統不進入不安全狀態。銀行家算法就是一種最有代表性的避免死鎖的算法。

代碼片段和文件信息
/*
程序的界面比較麻煩,所有的控件的添加全部放在了面板里面了,主窗口的最外面的面板是imagePanel,將panelout加在
了imagePanel的北面,將panel6加在了imagePanel的中部。在panel6里面加panel7在西部,panel8在中部。等等,
后面基本全是這么加的。由于開始的時候沒有想到會用這么多的面板,所以到最后只能這么一個加一個的編號了。因此看
起來有些亂。代碼大部分都在做界面,真正的處理部分在監聽器接口里面。程序運行的時候,先將一張圖片放在C盤根目
錄下,并且將圖片的名字命名為寬屏壁紙e.jpg
*/
//package?PROJECT;
import?javax.swing.*;
import?java.awt.*;
import?java.awt.event.*;
public?class?MyJlist?extends?Jframe?implements?ActionListener
{
private?JTextField?current_text=new?JTextField();//添加到標簽(“當前進程資源非配情況:“)之后,添加到容器panel1的中間
//保存申請資源不能滿足的時候,用于恢復的數值
private?String?request1;
private?String?request2;
private?String?request3;
private?String?available1;
private?String?available2;
private?String?available3;
private?String??need1;
private?String??need2;
private?String??need3;
private?int?convert=0;//控制申請資源的進程數目只能為1
private?int?requestThread;//保存申請資源的進程的索引
private?JList?threadName_list;//顯示系統中的進程的名字
private?JList?max_resource1_list;//顯示每個進程的資源1的最大數目
private?String[]?max_resource1_list_num=new?String[10];//存儲每個進程的資源1的最大數目
private?JList?max_resource2_list;
private?String[]?max_resource2_list_num=new?String[10];
private?JList?max_resource3_list;
private?String[]?max_resource3_list_num=new?String[10];
private?JList?allocation_resource1_list;//顯示進程當前占有的資源1的數目
private?String[]?allocation_resource1_list_num=new?String[10];//存儲進程當前占有的資源1的數目
private?JList?allocation_resource2_list;
private?String[]?allocation_resource2_list_num=new?String[10];
private?JList?allocation_resource3_list;
private?String[]?allocation_resource3_list_num=new?String[10];
private?JList?need_resource1_list;//顯示進程當前所需要的資源1的數目
private?String[]?need_resource1_list_num=new?String[10];//存儲進程當前所需要的資源1的數目
private?JList?need_resource2_list;
private?String[]?need_resource2_list_num=new?String[10];
private?JList?need_resource3_list;
private?String[]?need_resource3_list_num=new?String[10];
private?JList?available_resource1_list;//顯示當前資源1的可以使用的數目
private?String[]?available_resource1_list_num=new?String[]{“10“};//存儲當前資源1的可以使用的數目
private?JList?available_resource2_list;
private?String[]?available_resource2_list_num=new?String[]{“5“};
private?JList?available_resource3_list;
private?String[]?available_resource3_list_num=new?String[]{“7“};
private?JTextField?add_ThreadName;//填寫所添加的進程的名字
private?String[]?name_num_add_ThreadName=new?String[10];//存儲添加的進程的名字
private?static?int?num_add_ThreadName;//存儲程序中添加的進程的數目
private?String[]?add_resource1={“0““1““2““3““4““5““6““7““8““9““10“};
private?JComboBox?add_resource_combobox1=new?JComboBox(add_resource1);//選擇添加進程的資源1的數目
private?String[]?add_resource2={“0““1““2““3““4““5““6““7““8““9““10“};
private?JComboBox?add_resource_combobox2=new?JComboBox(add_resource2);
private?String[]?add_resource3={“0““1““2““3““4““5““6““7““8““9““10“};
private?JComboBox?add_resource_combobox3=new?JComboBox(add_resource3);
private?JB
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????82011??2010-07-25?19:48??實現銀行家算法\程序代碼\MyJlist.java
?????文件????5385728??2010-07-25?19:49??實現銀行家算法\報告\報告.doc
?????文件?????312364??2006-12-16?16:05??實現銀行家算法\圖片\寬屏壁紙e.jpg
?????文件?????289733??2007-07-07?22:07??實現銀行家算法\圖片\河流與山坡.jpg
?????目錄??????????0??2012-12-20?09:04??實現銀行家算法\程序代碼
?????目錄??????????0??2012-12-20?09:04??實現銀行家算法\報告
?????目錄??????????0??2012-12-20?09:04??實現銀行家算法\圖片
?????目錄??????????0??2012-12-20?09:04??實現銀行家算法
-----------?---------??----------?-----??----
??????????????6069836????????????????????8
- 上一篇:簡單的第一人稱射擊游戲源碼
- 下一篇:黑蘋果i2c觸摸驅動教程
評論
共有 條評論