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

上传人:自*** 文档编号:126228476 上传时间:2020-03-23 格式:DOC 页数:25 大小:54KB
返回 下载 相关 举报
Java模拟操作系统进程优先级调度.doc_第1页
第1页 / 共25页
Java模拟操作系统进程优先级调度.doc_第2页
第2页 / 共25页
Java模拟操作系统进程优先级调度.doc_第3页
第3页 / 共25页
Java模拟操作系统进程优先级调度.doc_第4页
第4页 / 共25页
Java模拟操作系统进程优先级调度.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《Java模拟操作系统进程优先级调度.doc》由会员分享,可在线阅读,更多相关《Java模拟操作系统进程优先级调度.doc(25页珍藏版)》请在金锄头文库上搜索。

1、/进程块/* * * 设计PCB及其数据结构: 进程标识数:ID 进程优先数:PRIORITY(优先数越大,优先级越高) * 进程已占用时间片:CPUTIME,每得到一次调度,值加1; * 进程还需占用时间片:ALLTIME,每得到一次调度,该值减1,一旦运行完毕,ALLTIME为0) 进程队列指针:NEXT,用来将PCB排成队列 * 进程状态:STATE(一般为就绪,可以不用) 设计进程就绪队列及数据结构; 设计进程调度算法,并画出程序流程图; 设计输入数据和输出格式; * 结构格式:当前正运行的进程:0 当前就绪队列:2,1,3,4 编程上机,验证结果 * * */public class

2、 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 prio

3、rity, 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)

4、 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 ge

5、tAllTime() 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 m

6、idifyState() /* * 打印显示当前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)

7、this.priority -= 3;/采用链表存储/* * 创建PCB的数据结构 * * author 摆渡恋人* */public class LineListNode private LineListNode node;private T element;/* * 创建空链表 */public LineListNode() this.node = null;this.element = null;/* * 创建一个存储特定元素的线性表 */public LineListNode(T element) this.node = null;this.element = element;/* *

8、 返回当前结点点的下一个节点 */public LineListNode getNextNode() return this.node;/* * 设置当前结点的下一个结点 */public void setNextNode(LineListNode node) this.node = node;/* * 返回当前结点存储的数据元素 */public T getElement() return this.element;/* * 设置当前结点存储的数据元素 */public void setElement(T element) this.element = element;package xia

9、o.zhang.backup;import xiao.zhang.osa.LineListNode;/* * 创建一个存储PCB用来线性链表,通过线性链表的相关操作来实现相应的功能 * * author XiaoZhang * */public class LineListPcb /* * 表示PCB线性表的长度 */private int size;/* * 表示PCB线性表的头元素结点 */private LineListNode headPcb;/* * 表示PCB线性表尾元素结点 */private LineListNode lastPcb;/* * 创建一个空的PCB线性存储链表 *

10、/public LineListPcb() this.size = 0;this.headPcb = null;this.lastPcb = this.headPcb;/* * 创建一个具有特定元素的PCB线性存储链表 */public LineListPcb(LineListPcb llp) this.size = llp.getSize();this.headPcb = llp.getHeadPcb();this.lastPcb = llp.getLastPcb();/* * 从PCB线性表中的头部移除数据元素 * * param element */public void removeE

11、lement() if (0 = this.size) return;/* * 这一段主要是为了处理移除数据元素后只剩下一个数据元素的时候的线性链表处理 */if (this.size = 1) / this.headPcb.setNextNode(this.lastPcb);/ this.lastPcb = this.headPcb;/ this.lastPcb.setNextNode(null);this.headPcb = null;this.size-;return;LineListNode tempNode = this.headPcb;this.headPcb = tempNode

12、.getNextNode();tempNode = null;this.size-;/* * 向PCB线性表中的添加数据元素 * * param element */public void addElement(PCB element) LineListNode newElement = new LineListNode(element);if (this.headPcb = null) /* * 头结点为空,表示链表中当前没有数据元素,说明头结点和尾结点指向同一内存空间 */this.headPcb = newElement;/* * 新添加一个数据元素则仍然指向同一内存空间 */this.lastPcb = this.headPcb; else /* * 链表不为空,在这里要保证最后一个结点与新加入的结点连接在一起 */this.lastPcb.setNextNode(newElement);this.lastPcb = newElement;this.size+;/* * 从PCB线性表中的头部移除数据元素,并将其添加到PCB线性表中的尾部 */public void removeFromHeadAddToLast() if (this.size = 1) return;Lin

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号