模拟操作系统进程优先级调度
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//进程块
/**
*
* ①设计PCB及其数据结构:进程标识数:ID 进程优先数:PRIORITY(优先数越大,优先级越高)
* 进程已占用时间片:CPUTIME,每得到一次调度,值加1;
* 进程还需占用时间片:ALLTIME,每得到一次调度,该值减1,一旦运行完毕,ALLTIME为0)进程队列指针:NEXT,用来将PCB 排成队列
* 进程状态:STATE(一般为就绪,可以不用)②设计进程就绪队列及数据结构;③设计进程调度算法,并画出程序流程图;④设计输入数据和输出格式;
* 结构格式:当前正运行的进程:0 当前就绪队列:2,1,3,4 ⑤编程上机,验证结果
*
*
*/
publicclass PCB {
privateint id;
privateint priority;
privateint cpuTime;
privateint allTime;
privateint 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;
}
publicint getId() {
return id;
}
publicvoid setId(int id) {
this.id = id;
}
publicint getPriority() {
return priority;
}
publicvoid setPriority(int priority) { this.priority = priority;
}
/**
* 根据要求来修改PCB的优先级
*/
publicvoid modifyPriority() {
if (0 < this.priority) {
this.priority -= 3;
}
}
publicint getCpuTime() {
return cpuTime;
}
publicvoid setCpuTime(int cpuTime) { this.cpuTime = cpuTime;
}
/**
* 根据要求修改CPU时间
*/
publicvoid modifyCpuTime() {
this.cpuTime += 1;
}
publicint getAllTime() {
return allTime;
}
publicvoid setAllTime(int allTime) { this.allTime = allTime;
}
/**
* 根据要求修改PCB占用的时间片
publicvoid modifyAllTime() {
if (0 < this.allTime) {
this.allTime -= 1;
}
return;
}
publicint getState() {
return state;
}
publicvoid setState(int state) { this.state = state;
}
/**
* 根据要求修改PCB的状态
*/
publicvoid midifyState() {
}
/**
* 打印显示当前PCB的全部信息
*/
publicvoid showStatus() {
System.out.println("PCB [id=" + id + ", priority=" + priority
+ ", cpuTime=" + cpuTime + ", allTime=" + allTime + ", state="
+ state + "]");
}
/**
* 修改PCB的全部信息
*/
publicvoid modify() {
if (0 < this.allTime) {
this.allTime -= 1;
}
this.cpuTime += 1;
if (0 < this.priority) {
this.priority -= 3;
}
}
}
//采用链表存储
/**
* 创建PCB的数据结构