操作系统实验报告利用银行家算法避免死锁Word文档下载推荐.docx
- 文档编号:17775268
- 上传时间:2022-12-10
- 格式:DOCX
- 页数:15
- 大小:296.87KB
操作系统实验报告利用银行家算法避免死锁Word文档下载推荐.docx
《操作系统实验报告利用银行家算法避免死锁Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《操作系统实验报告利用银行家算法避免死锁Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
否则,认为出错,因为它所需要的资源数已超过它所宣布的最大值。
(2)如果Request<or=Available,则转向步骤(3);
否则,表示系统中尚无足够的资源,进程必须等待。
(3)系统试探把要求的资源分配给进程Pi,并修改下面数据结构中的数值:
Available=Available-Request[i];
Allocation=Allocation+Request;
Need=Need-Request;
(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。
3、安全性算法步骤:
(1)设置两个向量
①工作向量Work。
它表示系统可提供进程继续运行所需要的各类资源数目,执行安全算法开始时,Work=Allocation;
②布尔向量Finish。
它表示系统是否有足够的资源分配给进程,使之运行完成,开始时先做Finish[i]=false,当有足够资源分配给进程时,令Finish[i]=true。
(2)从进程集合中找到一个能满足下述条件的进程:
①Finish[i]=false
②Need<
or=Work
如找到,执行步骤(3);
否则,执行步骤(4)。
(3)当进程P获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:
Work=Work+Allocation;
Finish[i]=true;
转向步骤
(2)。
(4)如果所有进程的Finish[i]=true,则表示系统处于安全状态;
否则,系统处于不安全状态。
4、流程图:
系统主要过程流程图
银行家算法流程图
安全性算法流程图
5、主要数据结构
假设有M个进程N类资源,则有如下数据结构:
intmax[M*N]M个进程对N类资源的最大需求量
intavailable[N]系统可用资源数
intallocated[M*N]M个进程已经得到N类资源的资源量
intneed[M*N]M个进程还需要N类资源的资源量
intworked[]系统提供给进程继续运行所需的各类资源数目
4、源代码
import.*;
importclassOsBankerextendsJFrame{etBounds(0,0+pi*20,60,20);
labelProcessLabel2[pi].setBounds(0,0+pi*20,60,20);
}
(75,120,60,120);
(75,270,60,120);
for(intpi=0;
pi<
6;
pi++){
(labelProcessLabel1[pi],null);
(labelProcessLabel2[pi],null);
(pPanel1);
(pPanel2);
(pPanel4);
for(intsi=0;
si<
5;
si++)
for(intpi=0;
textNeed[pi][si]=newJTextField();
textNeed[pi][si]
.setBounds(150+si*50,120+pi*20,50,20);
textNeed[pi][si].setEditable(false);
textAllocation[pi][si]=newJTextField();
textAllocation[pi][si].setBounds(150+si*50,270+pi*20,
50,20);
textAllocation[pi][si].setEditable(false);
}
si++){
textAvailable[si]=newJTextField();
textAvailable[si].setEditable(false);
textAvailable[si].setBounds(150+si*50,70,50,20);
textRequest[si]=newJTextField();
textRequest[si].setEditable(false);
textRequest[si].setBounds(150+si*50,430,50,20);
(textAvailable[si],null);
(textRequest[si],null);
pi++)
for(intsi=0;
(textNeed[pi][si],null);
(textAllocation[pi][si],null);
(80,430,50,20);
(textProcessName,null);
(550,500);
(false);
("
银行家算法(SXJ)"
);
(null);
(EXIT_ON_CLOSE);
dd(scrollPane);
(450,400);
(newActionListener(){
publicvoidactionPerformed(ActionEvente){
etEditable(true);
textAllocation[i][j].setEditable(true);
textAvailable[j].setEditable(true);
}
}
});
Init();
(true);
count=0;
SafeSequence=newint[processNum];
worked=newint[resourceNum];
Finish=newboolean[processNum];
copyVector(worked,available);
Safety(0);
("
安全序列数量:
"
+count);
if(flag){
("
当前系统状态:
安全"
(true);
for(inti=0;
i<
resourceNum;
i++){
textRequest[i].setEditable(true);
}else{
不安全"
(false);
for(inti=0;
processNum;
Finish[i]=false;
flag=false;
RequestResource();
/*
*("
("
*/
for(intj=0;
j<
j++){
textNeed[i][j].setText("
textAllocation[i][j].setText("
textAvailable[j].setText("
textRequest[j].setText("
etEditable(false);
textRequest[j].setEditable(false);
("
Finish[i]=false;
etText());
max=newint[processNum][resourceNum];
allocated=newint[processNum][resourceNum];
need=newint[processNum][resourceNum];
for(inti=0;
for(intj=0;
max[i][j]=(textNeed[i][j].getText());
allocated[i][j]=(textAllocation[i][j]
.getText());
i++)
j++)
need[j][i]=max[j][i]-allocated[j][i];
available[i]-=allocated[j][i];
if(available[i]<
0){
您输入的数据有误,请重新输入"
}
voidSafety(intn)etText());
if(!
Smaller(request,need[processname])){
("
资源请求不符该进程的需求量."
}elseif(!
Smaller(request,available)){
可用资源不足以满足请求,进程需要等待."
}else{
Sub(available,request);
Add(allocated[processname],request);
Sub(need[processname],request);
copyVector(worked,available);
Safety(0);
if(flag){
可立即分配给该进程!
}else{
分配后导致系统处于不安全状态!
不可立即分配"
Add(available,request);
Sub(allocated[processname],request);
Add(need[processname],request);
//}
}
5、实验结果:
初始界面:
初始化:
检测安全性:
请求资源:
(1)进程2(1,0,2)
(2)进程5(3,3,0)
(3)进程1(0,2,0)
6、遇到的问题及不足之处:
1、程序编写的时候规定最大资源数和最大进程数均<
=6。
2、程序直接初始化了6个进程框,既浪费了内存空间,又对可视化界面的美观造成影响。
3、未对输入异常进行处理:
比如在请求资源的第一个方框中只能填入进程的数字编号,当填入的为非整数时,程序会抛出异常。
4、未解决进程名中对字符串的处理,直接固定进程名为数字,用户不能直接输入原有的进程名,造成不好的用户体验。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 报告 利用 银行家 算法 避免 死锁