-
大小: 573KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-05-27
- 語(yǔ)言: Java
- 標(biāo)簽: java實(shí)現(xiàn)??有界面??進(jìn)程調(diào)度??
資源簡(jiǎn)介
這是一個(gè)系統(tǒng)模擬系統(tǒng)進(jìn)程調(diào)度的例子。
實(shí)驗(yàn)一是模擬進(jìn)程調(diào)度。實(shí)驗(yàn)二在實(shí)驗(yàn)一的基礎(chǔ)上加了內(nèi)存分配的模擬

代碼片段和文件信息
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;
//?掛起隊(duì)列
private?ProcessList?waitList;
//?后備隊(duì)列
private?ProcessList?reserveList;
//?就緒隊(duì)列
private?ProcessList?readyList;
//?完成隊(duì)列
private?ProcessList?achiveList;
//?最大道數(shù)
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(“進(jìn)程名“);
this.columNames.add(“要求運(yùn)行的時(shí)間“);
this.columNames.add(“優(yōu)先權(quán)“);
this.columNames.add(“狀態(tài)“);
model?=?(MyTableModel)?this.table.getModel();
}
public?void?run()?{
while?(true)?{
int?ProcessNum?=?waitList.getSize()?+?readyList.getSize();
//?如有可能將后務(wù)隊(duì)列中的進(jìn)程調(diào)進(jìn)
if?(ProcessNum? while?(this.reserveList.getSize()?>?0
&&?ProcessNum? PCB?selectedPCB?=?this.reserveList.get(0);
this.reserveList.removeProcess(selectedPCB);
selectedPCB.setState(“就緒狀態(tài)“);
this.readyList.addProcess(selectedPCB);
this.readyList.sort();
ProcessNum++;
//?更新表
for?(int?i?=?0;?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(“就緒狀態(tài)“?i?3);
break;
}
i++;
}
}
}
//?running一個(gè)進(jìn)程。
if?(this.readyList.getSize()?>?0)?{
PCB?selectPCB?=?this.readyList.get(0);
this.readyList.removeProcess(selectPCB);
selectPCB.setState(“運(yùn)行狀態(tài)“);
this.frame.setRunningPCB(selectPCB);
String?name?=?selectPCB.getPId();
int?i?=?0;
for?(;?i? if?(this.model.getValueAt(i?0).equals(name))?{
this.model.setValueAt(“運(yùn)行狀態(tài)“?i?3);
break;
}
}
//?為了更好的看到實(shí)驗(yàn)結(jié)果,讓進(jìn)和睡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(“等待狀態(tài)“))?{
this.frame.setRunningP
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????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個(gè)文件信息
評(píng)論
共有 條評(píng)論