资源简介
这是一个系统模拟系统进程调度的例子。
实验一是模拟进程调度。实验二在实验一的基础上加了内存分配的模拟
代码片段和文件信息
package myExprimentOne;
import java.util.Vector;
import javax.swing.JTable;
import myExprimentOne.data.PCB;
import myExprimentOne.data.ProcessList;
import myExprimentOne.view.Mainframe;
import myExprimentOne.view.MyTableModel;
public class MainThread extends Thread {
private Mainframe frame;
// 挂起队列
private ProcessList waitList;
// 后备队列
private ProcessList reserveList;
// 就绪队列
private ProcessList readyList;
// 完成队列
private ProcessList achiveList;
// 最大道数
private int maxProcess;
private JTable table;
private Vector tableData = new Vector();
private Vector columNames = new Vector();
private MyTableModel model;
public MainThread(Mainframe frame) {
this.frame = frame;
this.waitList = frame.getWaitList();
this.reserveList = frame.getReserveList();
this.readyList = frame.getReadyList();
this.maxProcess = frame.getMaxProcess();
this.achiveList = frame.getAchieveList();
this.table = frame.getProcessTable();
this.columNames.add(“进程名“);
this.columNames.add(“要求运行的时间“);
this.columNames.add(“优先权“);
this.columNames.add(“状态“);
model = (MyTableModel) this.table.getModel();
}
public void run() {
while (true) {
int ProcessNum = waitList.getSize() + readyList.getSize();
// 如有可能将后务队列中的进程调进
if (ProcessNum < maxProcess) {
while (this.reserveList.getSize() > 0
&& ProcessNum < maxProcess) {
PCB selectedPCB = this.reserveList.get(0);
this.reserveList.removeProcess(selectedPCB);
selectedPCB.setState(“就绪状态“);
this.readyList.addProcess(selectedPCB);
this.readyList.sort();
ProcessNum++;
// 更新表
for (int i = 0; i < model.getRowCount(); i++) {
System.out.println(“=========================“+i);
System.out.println(model.getValueAt(i 0).toString()
.trim());
if ((model.getValueAt(i 0).toString().trim())
.equals(selectedPCB.getPId().trim())) {
model.setValueAt(“就绪状态“ i 3);
break;
}
i++;
}
}
}
// running一个进程。
if (this.readyList.getSize() > 0) {
PCB selectPCB = this.readyList.get(0);
this.readyList.removeProcess(selectPCB);
selectPCB.setState(“运行状态“);
this.frame.setRunningPCB(selectPCB);
String name = selectPCB.getPId();
int i = 0;
for (; i < this.table.getRowCount(); i++) {
if (this.model.getValueAt(i 0).equals(name)) {
this.model.setValueAt(“运行状态“ i 3);
break;
}
}
// 为了更好的看到实验结果,让进和睡3秒。
try {
this.sleep(3000);
} catch (InterruptedException e) {
}
this.model.setValueAt(selectPCB.getPriorityNum() + 1 i 2);
selectPCB.setPriorityNum(selectPCB.getPriorityNum() + 1);
this.model.setValueAt(selectPCB.getNeedTimes() - 1 i 1);
selectPCB.setNeedTimes(selectPCB.getNeedTimes() - 1);
if (selectPCB.getState().equals(“等待状态“)) {
this.frame.setRunningP
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 391 2009-04-14 16:04 OperatingSystem\.project
文件 339 2009-10-30 14:47 OperatingSystem\.classpath
文件 3538 2009-05-14 22:43 OperatingSystem\source\myExprimentOne\MainThread.java
文件 4372 2009-04-17 19:26 OperatingSystem\source\myExprimentOne\view\Mainfr
文件 961 2009-04-14 23:36 OperatingSystem\source\myExprimentOne\view\MyTableModel.java
文件 2226 2009-04-16 23:43 OperatingSystem\source\myExprimentOne\view\AddDialog.java
文件 428 2009-04-15 00:08 OperatingSystem\source\myExprimentOne\control\MainAddLis.java
文件 2012 2009-05-25 22:41 OperatingSystem\source\myExprimentOne\control\addDia\AddDialogLis.java
文件 1126 2009-04-17 18:31 OperatingSystem\source\myExprimentOne\control\MainWaitLis.java
文件 984 2009-04-17 19:31 OperatingSystem\source\myExprimentOne\control\MainStartLis.java
文件 1202 2009-05-15 00:29 OperatingSystem\source\myExprimentOne\control\MainUnwaitLis.java
文件 1314 2009-04-16 22:57 OperatingSystem\source\myExprimentOne\data\PCB.java
文件 1766 2009-05-25 22:32 OperatingSystem\source\myExprimentOne\data\ProcessList.java
文件 3568 2009-05-15 00:31 OperatingSystem\source\myExprimentOne\MainThreadP.java
文件 3578 2009-05-15 00:28 OperatingSystem\source\myExprimentOne\MainThreadR.java
文件 1639 2009-05-14 22:29 OperatingSystem\source\myExprimentTwo\data\PCB.java
文件 712 2009-05-13 22:37 OperatingSystem\source\myExprimentTwo\data\MemoryItem.java
文件 4328 2009-05-13 23:58 OperatingSystem\source\myExprimentTwo\data\MemoryItemVector.java
文件 929 2009-05-14 02:09 OperatingSystem\source\myExprimentTwo\data\ProcessVector.java
文件 557 2009-05-13 14:11 OperatingSystem\source\myExprimentTwo\data\MemoryItems.java
文件 432 2009-05-14 01:56 OperatingSystem\source\myExprimentTwo\control\MainAddLis.java
文件 2190 2009-05-14 23:15 OperatingSystem\source\myExprimentTwo\control\addDia\AddDialogLis.java
文件 998 2009-05-14 17:01 OperatingSystem\source\myExprimentTwo\control\MainStartLis.java
文件 1222 2009-05-15 00:31 OperatingSystem\source\myExprimentTwo\control\MainUnwaitLis.java
文件 1060 2009-05-14 17:04 OperatingSystem\source\myExprimentTwo\control\MainWaitLis.java
文件 5701 2009-05-14 23:25 OperatingSystem\source\myExprimentTwo\view\Mainfr
文件 961 2009-05-14 00:11 OperatingSystem\source\myExprimentTwo\view\MyTableModel.java
文件 1556 2009-05-14 23:20 OperatingSystem\source\myExprimentTwo\view\MemoryDraw.java
文件 2912 2009-05-14 02:11 OperatingSystem\source\myExprimentTwo\view\AddDialog.java
文件 4546 2009-10-30 14:46 OperatingSystem\source\myExprimentTwo\model\MainThreadP.java
............此处省略63个文件信息
- 上一篇:JAVA五子棋简单实现
- 下一篇:java 雪景动画
相关资源
- java实现多文件异步上传
- 学生信息管理系统--java实现
- java实现多个图片生成视频流
- java实现从命令行读入文本统计字符的
- java实现神经网络BP算法
- 操作系统概念JAVA实现第七版.rar
- 电梯调度算法java实现
- 基于JAVA实现的图像特征提取源代码
- JAVA实现的流服务(直播点播)
- java实现银行家算法操作系统
- JAVA实现国际象棋算法
- java实现的注册功能模块源代码
- java实现复数加减运算的类
- java实现简单投票程序
- java实现邮件发送
- java实现的数组元素查找
- delaunay三角剖分的java实现算法
- java实现windows文件系统操作监控
- java实现cache小
- 基于java实现的决策树代码
- 人工智能实验 ID3决策树java实现
- java实现压缩与解压缩源码
- 企业内部通信系统(JAVA实现)
- 矩阵加减乘除java实现
- 银行家算法java实现
- 用Java实现的简单井字棋游戏
- 课程设计模拟幸运52游戏java实现
- JAVA实现求矩阵表示的无向图的欧拉通
- java实现基于SMO算法的SVM分类器
- java实现基于ID3算法的决策树分类器
评论
共有 条评论