进程调度算法java_java按时间片轮转进程调度算法实现

该博客介绍了一个使用Java实现的时间片轮转进程调度算法,通过`OSProcess`类来表示进程,包括进程名、运行时间、已运行时间等属性。`OSTimeturn`类用于初始化进程队列、获取下一个进程以及执行进程。代码演示了如何模拟进程执行,当已运行时间等于要求运行时间时,进程出队。
摘要由CSDN通过智能技术生成

public class OSProcess{

private String name; //进程名

private OSProcess next;//指向下一个进程

private int run_time; //要求运行时间

private int allo_time;//已运行时间

private int req_time;//还需要运行时间

private char state;//状态

private int pri;//优先数

public OSProcess(){}

//构造方法1  优先权方法

public OSProcess(String name, int run_time, int pri, char state) {

this.name = name;

this.run_time = run_time;

this.pri=pri;

this.state = state;

}

//构造方法2  时间片轮转方法

public OSProcess(String name, int run_time, char state, int allo_time) {

this.name = name;

this.run_time = run_time;

this.allo_time = allo_time;

this.state = state;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public OSProcess getNext() {

return next;

}

public void setNext(OSProcess next) {

this.next = next;

}

public int getRun_time() {

return run_time;

}

public void setRun_time(int run_time) {

this.run_time = run_time;

}

public int getAllo_time() {

return allo_time;

}

public void setAllo_time(int allo_time) {

this.allo_time = allo_time;

}

public int getReq_time() {

return req_time;

}

public void setReq_time(int req_time) {

this.req_time = req_time;

}

public char getState() {

return state;

}

public void setState(char state) {

this.state = state;

}

public int getPri() {

return pri;

}

public void setPri(int pri) {

this.pri = pri;

}

}

public class OSTimeturn { List list = new ArrayList(); OSProcess op1,op2,op3,op4,op5; public void init(){ //初始化进程OSProcess(String name, int run_time, char state, int allo_time)  op1 = new OSProcess("q1",2,'R',1); op2 = new OSProcess("q2",3,'R',0); op3 = new OSProcess("q3",1,'R',0); op4 = new OSProcess("q4",2,'R',0); op5 = new OSProcess("q5",4,'R',0); op1.setNext(op2); op2.setNext(op3); op3.setNext(op4); op4.setNext(op5); op5.setNext(op1); //添加到进程队列 OSProcess temp = op2; while(!list.contains(temp)){ list.add(temp); temp=temp.getNext(); } } public int getNext(OSProcess current,List list){ OSProcess next = current.getNext(); int t=0;; while(!list.contains(next)){ next=next.getNext(); t=list.indexOf(next); } return t;   } public void run(int curPosition){ OSProcess current = list.get(curPosition); current.setAllo_time(current.getAllo_time()+1); System.out.println("当前:"+current.getName()+"进程执行"); OSProcess temp = list.remove(curPosition);//获得当前运行的进程 if(temp.getAllo_time()!=temp.getRun_time())//判断已运行时间是否等于要求运行时间 list.add(temp); else {  //已运行时间==要求运行时间 temp.setState('E'); System.out.println("进程"+temp.getName()+"出队!"); } if(list.size()>0){ System.out.print("此时list的值:"); for(int i=0;i0){ int a = this.getNext(cur, list); cur = this.list.get(a); this.run(a); } } public static void main(String[] args) { OSTimeturn ost = new OSTimeturn(); ost.init(); ost.runProcess(); } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值