資源簡介
實現作業調度(先來先服務)、進程調度功能(時間片輪轉)
實現內存管理功能(連續分配)。
實現文件系統功能(選作)
這些功能要有機地連接起來

代碼片段和文件信息
import?java.util.linkedList;
import?java.util.Random;
public?class?ProcessMemoryController?{
????private?class?PCB?{
????????String?name;???????//進程名
????????double?arrtime;????//到達時間
????????double?needtime;???//需要運行時間
????????double?usedtime;???//已用時間
????????int?needmemo;??????//所需內存
????????int?address;???????//主存起始位置
????????char?state;????????//進程狀態
????}
????private?class?MemoItem?{//內存表條目
????????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;//進程數
????int?ACCURACY?=?1;//控制格式化后小數點后面的位數
????int?THRESHOLD?=?3;//允許并發的進程數量,小于時從后備隊列調入進程
????int?MINSIZE?=?10;//控制內存碎片的產生
????PCB[]?pcb?=?new?PCB[NUM];
????linkedList?memoList?=?new?linkedList<>();
????double?pTime;?????//時間片
????int?run;???????//當前運行的進程,沒有則為-1
????long?lastTime;??//每次調度程序都記錄當前時間
????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;//需要的內存為30到150的隨機數
????????????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;//需要的內存為30到150的隨機數
????????????}
????????}
????????for?(int?n?=?0;?n?????????????pcb[n].usedtime?=?0;
????????????pcb[n].address?=?0;
????????????pcb[n].state?=?‘U‘;
????????}
????????//設置起始地址為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??操作系統課程設計\
?????文件?????????217??2017-12-13?21:59??操作系統課程設計\ProcessMemoryController$1.class
?????文件?????????532??2017-12-13?21:59??操作系統課程設計\ProcessMemoryController$MemoItem.class
?????文件?????????689??2017-12-13?21:59??操作系統課程設計\ProcessMemoryController$PCB.class
?????文件????????6688??2017-12-13?21:59??操作系統課程設計\ProcessMemoryController.class
?????文件???????10205??2017-12-13?20:34??操作系統課程設計\ProcessMemoryController.java
?????文件??????332288??2018-01-20?13:18??操作系統課程設計\課程設計.doc
- 上一篇:機械工程測試技術第三版
- 下一篇:操作系統銀行家算法兩個
評論
共有 條評論