說明:
1. 系統中有n個process需要被執行於某一個系統,系統的記憶體大小為k,n及k設為參數。
2. 初始化每一個process的屬性,包括process id、所需記憶體大小、所需執行時間、及其他再執行時所需紀錄的run time information。
3. 每一個process都有相同的執行時間配額(quantum),q。某一process p在quantum結束前就已經執行結束,p
的狀態被設為block,且會被停止t個時間單位。當t時間單位結束後,p會被放在state是ready的queue的最後面。如果p在其quantum結束前尚未結束,他的狀態會被設為ready,且放在ready queue的最後面。
4. 當process p完全結束時,他會被block s個時間單位(s由亂數決定)。然後重新出始化其屬性(不一定和原來的相同,由亂數決定)。p被放在ready queue的最後面。
5. 你(妳)的系統會由ready queue的最前面,選擇第一個process(p),將其狀態改為run。如果p不存在記憶統中,scheduler會由磁碟中將這個process load進記憶體中。
6. 這個作業中,不考慮memory fragmentation的問題。也就是,只要剩餘的記憶體的總量足以load下一個process,則在記憶體中的process不需被寫回磁碟中。否則,scheduler會選擇m個process來寫回磁碟中。m值越小越好。
輸入:
1. process 的數量,n。
2. 記憶體的大小,k。
3. 配額的大小,q。
4. simulation 總共執行的單位時間,t。
輸出:
1. 計算在simulation的時間t內,total cost是多少,並書處至螢幕上。cost需包含
o swap in cost 10:將process由磁碟中load進memory。
o swap out cost 20:將process由memory中移到磁碟中。
o switch cost 2:在記憶體中切換process所需的cost。
2. 將輸出導入一文字檔,設為log.txt。
3. 輸出內容需包含時間、每一process的狀態、及其他相關資訊。(sample如下)
輸出的sample(log.txt)
時間 狀態
0 p1:初始化,需記憶體15M,需執行243,磁碟中,ready(0)
p2:初始化,需記憶體8M,需執行56,磁碟中,ready(1)
p3:初始化,需記憶體22M,需執行115,磁碟中,ready(2)
0 p1:執行,需記憶體15M,需執行243,尚有243,q剩下50,記憶體中,run
p2:等待,需記憶體8M,需執行56,尚有56,磁碟中,ready(0)
p3:等待,需記憶體22M,需執行115,尚有115,磁碟中,ready(1)
1 p1:執行,需記憶體15M,需執行243,尚有242,q剩下49,記憶體中,run
p2:等待,需記憶體8M,需執行56,尚有56,磁碟中,ready(0)
p3:等待,需記憶體22M,需執行115,尚有115,磁碟中,ready(1)
...
50 p1:等待,需記憶體15M,需執行243,尚有193,記憶體中,ready(1)
p2:執行,需記憶體8M,需執行56,尚有56,q剩下50,記憶體中,run
p3:等待,需記憶體22M,需執行115,尚有115,磁碟中,ready(0)
...
100 p1:等待,需記憶體15M,需執行243,尚有193,磁碟中,ready(0)
p2:等待,需記憶體8M,需執行56,尚有6,記憶體中,ready(1)
p2:執行,需記憶體22M,需執行115,尚有115,q剩下50,記憶體中,run
s
--
[m [1;34m※ 來源:‧靜宜大學計算機中心BBS站 bbs.pu.edu.tw‧[FROM: 211.22.171.110] [m