bank

来源:互联网 发布:umts网络是什么意思 编辑:程序博客网 时间:2024/05/12 06:39
public class TestBank {public static void main(String[] args){//各线程最大需求量int[][] claim = new int[][]{{7,5,3},{3,2,2},{9,0,2},{2,2,2},{4,3,3}};//各线程已分配资源int[][] allocation = new int[][]{{0,1,0},{2,0,0},{3,0,2},{2,1,1},{0,0,2}};int i,j,k,l = 0,count = 0,m = 0;//各进程仍需要的各类资源int[][] C_A = new int[][]{{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}};//存放预分配成功的线程int[] result = new int[]{-1,-1,-1,-1,-1};//当前可分配资源int[] currentAvail = new int[]{3,3,2};System.out.println("各进程对各资源的最大需求:");System.out.println("   A "+"B "+"c ");for(i=0;i<5;i++){System.out.print("p"+i);for(j=0;j<3;j++){System.out.print(" "+claim[i][j]);C_A[i][j] = claim[i][j] - allocation[i][j];}System.out.println();}System.out.println("各进程已分配到的各类资源:");System.out.println("   A "+"B "+"c ");for(i=0;i<5;i++){System.out.print("p"+i);for(j=0;j<3;j++){System.out.print(" "+allocation[i][j]);}System.out.println();}System.out.println("各进程仍需的各类资源数量:");System.out.println("   A "+"B "+"c ");for(i=0;i<5;i++){System.out.print("p"+i);for(j=0;j<3;j++){System.out.print(" "+C_A[i][j]);}System.out.println();}while(result[l]==-1){for(k=0;k<5;k++){if(result[k]==-1){for(j=0;j<3;j++)if(C_A[k][j]<=currentAvail[j]&&C_A[k][j]>=0){currentAvail[j] = currentAvail[j] + allocation[k][j];m++;if(m==3){result[l] = k;m = 0;}}}else break; l++;}for(i=0;i<1;i++)if(result[i] != -1){System.out.println("p"+result[i]+"->");count++;}l=0;}if(count==5)System.out.println("系统安全!上行所示为其中一个安全序列");elseSystem.out.println("系统安全");}}