-
大小: 267KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-06-01
- 語言: 其他
- 標(biāo)簽: 廣工??操作系統(tǒng)??課程設(shè)計??
資源簡介
實現(xiàn)作業(yè)調(diào)度(先來先服務(wù))、進(jìn)程調(diào)度功能(時間片輪轉(zhuǎn))
實現(xiàn)內(nèi)存管理功能(連續(xù)分配)。
實現(xiàn)文件系統(tǒng)功能(選作)
這些功能要有機地連接起來

代碼片段和文件信息
import?java.util.linkedList;
import?java.util.Random;
public?class?ProcessMemoryController?{
????private?class?PCB?{
????????String?name;???????//進(jìn)程名
????????double?arrtime;????//到達(dá)時間
????????double?needtime;???//需要運行時間
????????double?usedtime;???//已用時間
????????int?needmemo;??????//所需內(nèi)存
????????int?address;???????//主存起始位置
????????char?state;????????//進(jìn)程狀態(tài)
????}
????private?class?MemoItem?{//內(nèi)存表條目
????????int?address?=?0;
????????int?length?=?0;
????????char?state?=?‘F‘;//B代表busy或F代表free
????????public?MemoItem(int?address?int?length)?{
????????????this.address?=?address;
????????????this.length?=?length;
????????}
????}
????int?NUM?=?6;//進(jìn)程數(shù)
????int?ACCURACY?=?1;//控制格式化后小數(shù)點后面的位數(shù)
????int?THRESHOLD?=?3;//允許并發(fā)的進(jìn)程數(shù)量,小于時從后備隊列調(diào)入進(jìn)程
????int?MINSIZE?=?10;//控制內(nèi)存碎片的產(chǎn)生
????PCB[]?pcb?=?new?PCB[NUM];
????linkedList?memoList?=?new?linkedList<>();
????double?pTime;?????//時間片
????int?run;???????//當(dāng)前運行的進(jìn)程,沒有則為-1
????long?lastTime;??//每次調(diào)度程序都記錄當(dāng)前時間
????long?beginTime;//程序開始時間
????boolean?isAllFinished()?{
????????for?(int?i?=?0;?i?????????????if?(pcb[i].state?!=?‘F‘)?return?false;
????????}
????????return?true;
????}
????void?init()?{
????????run?=?-1;
????????Random?r?=?new?Random();
????????for?(int?n?=?0;?n?????????????pcb[n]?=?new?PCB();
????????????pcb[n].name?=?Character.toChars(65?+?n)[0]?+?““;
????????????pcb[n].needtime?=?r.nextDouble()?*?5?+?5;//5到10秒
????????????pcb[n].needmemo?=?r.nextInt(120)?+?30;//需要的內(nèi)存為30到150的隨機數(shù)
????????????if?(n?==?0)?{
????????????????pcb[n].arrtime?=?0;
????????????????pcb[0].needmemo?=?50;
????????????}?else?{
????????????????pcb[n].arrtime?=?r.nextDouble()?*?5?+?1;
????????????????pcb[n].needmemo?=?r.nextInt(120)?+?30;//需要的內(nèi)存為30到150的隨機數(shù)
????????????}
????????}
????????for?(int?n?=?0;?n?????????????pcb[n].usedtime?=?0;
????????????pcb[n].address?=?0;
????????????pcb[n].state?=?‘U‘;
????????}
????????//設(shè)置起始地址為30,初始化的長度在50到100之間
????????MemoItem?first?=?new?MemoItem(30?r.nextInt(50)?+?50);
????????memoList.add(first);
????????MemoItem?prev?=?first;
????????for?(;?;?)?{
????????????int?address?=?prev.address?+?prev.length;
????????????if?(address?>=?500)?break;
????????????int?length?=?r.nextInt(50)?+?50;
????????????MemoItem?ano?=?new?MemoItem(address?length);
????????????memoList.add(ano);
????????????prev?=?ano;
????????}
????}
????String?d2s(double?d)?{
????????String?tmp?=?d?+?““;
????????int?index?=?tmp.indexOf(“.“);
????????return?tmp.substring(0?index?+?ACCURACY?+?1);
????}
????void?sortByArrtime()?{
????????int?i?j;
????????PCB?temp;
????????for?(i?=?0;?i?????????{
????????????for?(j?=?0;?j?????????????????if?(pcb[j?+?1].arrtime?????????????????????temp?=?pcb[j];
????????????????????pcb[j]?=?pcb[j?+?1];
????????????????????pcb[j?+?1]?=?temp;
????????????????}
????????????}
?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-01-20?13:19??操作系統(tǒng)課程設(shè)計\
?????文件?????????217??2017-12-13?21:59??操作系統(tǒng)課程設(shè)計\ProcessMemoryController$1.class
?????文件?????????532??2017-12-13?21:59??操作系統(tǒng)課程設(shè)計\ProcessMemoryController$MemoItem.class
?????文件?????????689??2017-12-13?21:59??操作系統(tǒng)課程設(shè)計\ProcessMemoryController$PCB.class
?????文件????????6688??2017-12-13?21:59??操作系統(tǒng)課程設(shè)計\ProcessMemoryController.class
?????文件???????10205??2017-12-13?20:34??操作系統(tǒng)課程設(shè)計\ProcessMemoryController.java
?????文件??????332288??2018-01-20?13:18??操作系統(tǒng)課程設(shè)計\課程設(shè)計.doc
- 上一篇:機械工程測試技術(shù)第三版
- 下一篇:操作系統(tǒng)銀行家算法兩個
評論
共有 條評論