void RequestResource() { // 请求资源
jt.setText(\
int processname = (Integer.parseInt(textProcessName.getText()) - 1); request = new int[resourceNum];
for (int i = 0; i < resourceNum; i++) {
request[i] = Integer.parseInt(textRequest[i].getText()); }
if (!Smaller(request, need[processname])) {
labelInfo.setText(\资源请求不符该进程的需求量.\ } else if (!Smaller(request, available)) {
labelInfo1.setText(\可用资源不足以满足请求,进程需要等待.\ } else {
Sub(available, request);
Add(allocated[processname], request); Sub(need[processname], request); copyVector(worked, available); Safety(0); if (flag) {
labelInfo1.setText(\可立即分配给该进程!\
} else {
labelInfo1.setText(\分配后导致系统处于不安全状态!,不可立即分配\
Add(available, request);
Sub(allocated[processname], request); Add(need[processname], request); } }
// } } }
五、实验结果:
初始界面:
初始化:
检测安全性:
请求资源:
(1)进程2(1,0,2)
(2)进程5(3,3,0)
(3)进程1(0,2,0)
六、遇到的问题及不足之处:
1、程序编写的时候规定最大资源数和最大进程数均<=6。 2、程序直接初始化了6个进程框,既浪费了内存空间,又对可视化界面的美观造成影响。
3、未对输入异常进行处理:比如在请求资源的第一个方框中只能填入进程的数字编号,当填入的为非整数时,程序会抛出异常。
4、未解决进程名中对字符串的处理,直接固定进程名为数字,用户不能直接输入原有的进程名,造成不好的用户体验。