sys_resource.java

来自「进程调度的设计与实现」· Java 代码 · 共 91 行

JAVA
91
字号
package design;



public class Sys_resource {
  int[] resourceHave;
  int[] resourceUse;
  int[] resourceFree;
  int[] resourceMayFree;

  public Sys_resource() {
    resourceHave=new int[4];
    resourceUse=new int[4];
    resourceFree=new int[4];
    resourceMayFree=new int[4];
  }
  public Sys_resource(int[] a){
    resourceHave=new int[a.length];
    resourceUse=new int[a.length];
    resourceFree=new int[a.length];
    resourceMayFree=new int[a.length];
    for(int i=1;i<=a.length-1;i++)
      resourceMayFree[i]=resourceFree[i]=resourceHave[i]=a[i];
  }

  public boolean canBeBestDistribute(int[] a){
    for(int i=1;i<=a.length-1;i++)
      if(a[i]>resourceMayFree[i])
        return false;
    return true;
  }

  public int[] bestDistrubire(int[] a){ //尽力分配
    int[] temp=new int[a.length];
    for(int i=1;i<=a.length-1;i++)
      temp[i]=Math.min(a[i],resourceFree[i]);
    for(int i=1;i<=resourceHave.length-1;i++){
      resourceFree[i]-=temp[i];
      resourceMayFree[i]-=temp[i];
      resourceUse[i]+=temp[i];
    }
    return temp;
  }

  public boolean canBeAddDistribute(int[] a){
    for(int i=1;i<=a.length-1;i++)
      if(a[i]>resourceFree[i])
        return false;
    return true;
  }

  public boolean addDistribute(int[] a,int [] allResource){
    for(int i=1;i<=a.length-1;i++)
      if(a[i]>resourceFree[i])
        return false;
    for(int i=1;i<=a.length-1;i++){
      resourceFree[i]-=a[i];
      resourceUse[i]+=a[i];
      resourceMayFree[i]+=allResource[i];
    }
    return true;
  }

  public boolean canBeAllDistribute(int[] a){
    for(int i=1;i<=a.length-1;i++)
      if(a[i]>resourceFree[i])
        return false;
    return true;
  }

  public boolean allDistrubite(int[] a){//完全分配
    for(int i=1;i<=a.length-1;i++)
      if(a[i]>resourceFree[i])
        return false;
    int[] temp=new int[a.length];
    for(int i=1;i<=a.length-1;i++)
      temp[i]=a[i];
    for(int i=1;i<=a.length-1;i++){
      resourceFree[i]-=temp[i];
      resourceUse[i]+=temp[i];
    }
    return true;
  }
 // public boolean
 public void freeResource(int[] a){
   for(int i=1;i<=a.length-1;i++){
     resourceUse[i]-=a[i];
     resourceFree[i]+=a[i];
   }
 }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?