进程调度算法模拟,用动态优先数及时间片轮转法实现进程调度_Java语言模拟实现

来源:互联网 发布:艾科特餐饮软件 编辑:程序博客网 时间:2024/05/18 02:56

//process类


import java.util.Date;


public class process {

private  int ID_name;    //进程ID名
private  int PRIORITY;        //优先数
private  int CPUTIME;         //进程已进行时间
private  int ALLTIME;         //进程还需要的时间
private  String STATE;          //进程状态

//设置 process类的构造方法
process(int i, int PRIORITY , int CPUTIME , int ALLTIME , String STATE)
{

this.ID_name = i;
this.PRIORITY = PRIORITY;
this.CPUTIME = CPUTIME;
this.ALLTIME = ALLTIME;
this.STATE = STATE;

}

public  int getID_Name()
{
return ID_name;
}

public  int getPRIORITY()
{
return PRIORITY;
}

public  int getCPUTIME()
{
return CPUTIME;
}


public  int getALLTIME()
{
return ALLTIME;
}


public  String getSTATE()
{
return STATE;
}

public  int setPRIORITY(int i)
{
return PRIORITY-=i;
}

public  int setCPUTIME(int i)
{
return CPUTIME+=i;
}


public  int setALLTIME(int i)
{
return ALLTIME-=i;
}


}


//process_Arraylist类


package ArrayList;


import java.util.ArrayList;


public class processArrayList {


public static void main(String[] args) {
// TODO Auto-generated method stub

ArrayList<process> process_list = new ArrayList<>();    //创建数组列表存放进程对象
 
// 将创建的对象加入数组列表中
process_list.add( new  process(0, 9, 0, 3, "ready" ));
process_list.add( new  process(1, 38, 0, 3, "ready" ));
process_list.add( new  process(2, 30, 0, 6, "ready" ));
process_list.add( new  process(3, 29, 0, 3, "ready" ));
process_list.add( new  process(4, 0, 0, 4, "ready" ));
 
System.out.println("ID_name   PRIORITY   CPUTIME   ALLTIME   STATE ");
for (process p : process_list)
System.out.printf("      %d              %d                %d               %d          %s \n",
p.getID_Name(),p.getPRIORITY(),p.getCPUTIME(),p.getALLTIME(),p.getSTATE() );
 
while(process_list.size() > 0)
{
int id = getID( process_list) ;
process p = process_list.get(id);
if(p.getALLTIME() == 0)
{
System.out.println("运行完成的进程:");
System.out.printf("      %d              %d                %d               %d          %s \n",
p.getID_Name(),p.getPRIORITY(),p.getCPUTIME(),p.getALLTIME(),p.getSTATE() );
process_list.remove(id);
}
else
{
System.out.println("正在运行的进程:"); 
    System.out.printf("      %d              %d                %d               %d          %s \n",
p.getID_Name(),p.getPRIORITY(),p.getCPUTIME(),p.getALLTIME(),p.getSTATE() );
p.setPRIORITY(3);         //优先级减3
p.setCPUTIME(1);          //运行时长加1
p.setALLTIME(1);          // 还需时长减1
System.out.println("当前进程运行完的结果:");
System.out.printf("      %d              %d                %d               %d          %s \n",
p.getID_Name(),p.getPRIORITY(),p.getCPUTIME(),p.getALLTIME(),p.getSTATE() );
}
}

}

public static  int getID( ArrayList<process> process_list) 
   {
    int size = process_list.size();
    int id = 0;
    int p = process_list.get(0).getPRIORITY();
    for(int i=1; i<size ; i++)
    {

    if( process_list.get(i).getPRIORITY() >p )
    {
    p = process_list.get(i).getPRIORITY();
    id = i;
    }
   
    }
    return id;
   
   }


}

1 0
原创粉丝点击