资源简介

这是一个系统模拟系统进程调度的例子。 实验一是模拟进程调度。实验二在实验一的基础上加了内存分配的模拟

资源截图

代码片段和文件信息

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\Mainframe.java

     文件        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\Mainframe.java

     文件        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个文件信息

评论

共有 条评论