• 大小: 4.83MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-15
  • 语言: 其他
  • 标签: java  界面  操作系统  

资源简介

仿真模拟银行家算法对死锁的避免。对于进程死锁的避免问题,分为两种状态:安全状态和非安全状态。在避免死锁的方法中,允许进程动态地申请资源分配之前,应先计算此次资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,令进程等待。 所谓安全状态是指系统能按某种进程顺序,来为每个进程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


评论

共有 条评论