Java模拟操作系统进程优先级调度

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//进程块

/**

*

* ①设计PCB及其数据结构:进程标识数:ID 进程优先数:PRIORITY(优先数越大,优先级越高)

* 进程已占用时间片:CPUTIME,每得到一次调度,值加1;

* 进程还需占用时间片:ALLTIME,每得到一次调度,该值减1,一旦运行完毕,ALLTIME为0)进程队列指针:NEXT,用来将PCB 排成队列

* 进程状态:STATE(一般为就绪,可以不用)②设计进程就绪队列及数据结构;③设计进程调度算法,并画出程序流程图;④设计输入数据和输出格式;

* 结构格式:当前正运行的进程:0 当前就绪队列:2,1,3,4 ⑤编程上机,验证结果

*

*

*/

public class PCB {

private int id;

private int priority;

private int cpuTime;

private int allTime;

private int state;// 状态为1的时候表示准备就绪

/**

* 无参数的构造方法,通过geter,seter器来对PCB的信息进行获取的修改

*/

public PCB() {

}

/**

* 初始化PCB的基本信息的构造方法

*

* @param id

* @param priority

* @param cpuTime

* @param allTime

* @param state

*/

public PCB(int id, int priority, int cpuTime, int allTime, int state) {

super();

this.id = id;

this.priority = priority;

this.cpuTime = cpuTime;

this.allTime = allTime;

this.state = state;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public int getPriority() {

return priority;

}

public void setPriority(int priority) { this.priority = priority;

}

/**

* 根据要求来修改PCB的优先级

*/

public void modifyPriority() {

if (0 < this.priority) {

this.priority -= 3;

}

return;

}

public int getCpuTime() {

return cpuTime;

}

public void setCpuTime(int cpuTime) { this.cpuTime = cpuTime;

}

/**

* 根据要求修改CPU时间

*/

public void modifyCpuTime() { this.cpuTime += 1;

}

public int getAllTime() {

return allTime;

}

public void setAllTime(int allTime) { this.allTime = allTime;

}

/**

* 根据要求修改PCB占用的时间片

*/

public void modifyAllTime() {

if (0 < this.allTime) {

this.allTime -= 1;

}

return;

}

public int getState() {

return state;

}

public void setState(int state) {

this.state = state;

}

/**

* 根据要求修改PCB的状态

*/

public void midifyState() {

}

/**

* 打印显示当前PCB的全部信息

*/

public void showStatus() {

System.out.println("PCB [id=" + id + ", priority=" + priority

+ ", cpuTime=" + cpuTime + ", allTime=" + allTime + ", state="

+ state + "]");

}

/**

* 修改PCB的全部信息

*/

public void modify() {

if (0 < this.allTime) {

this.allTime -= 1;

}

this.cpuTime += 1;

if (0 < this.priority) {

this.priority -= 3;

}

}

}

//采用链表存储

/**

* 创建PCB的数据结构

*

* @author摆渡恋人*

*/

public class LineListNode {

相关文档
最新文档