作業系統期末報告NachOS
Download
Report
Transcript 作業系統期末報告NachOS
指導老師:周立德
組員:
945002069 蘇智凡 945002074 鄭禹禾
945002075 林逢威 945002093 邱俊傑
945002094 楊文達 945002104 沈群景
Make Clean
Make Test2
Test2 result
Correction the code
作業二
修正多工下使用記憶體的錯誤
錯誤原因
NachOS 中的 processes 直接使用
physical address ,因此會造成不同
processes 使用同一位址。
解決方案
使用freeTable記錄空的frame
Process要求page時,將空的frame配置
給它
並使用page table將logical 轉為
physical
實作
在machine class 中增加freeTable以及配
置 free frame 的函式
修改 addrspace class 中修改 logical 對
應至 physical 的方法
Instruction used
Test3 result(1/4)
Test3 result (2/4)
Test3 result(3/4)
Test3 result(4/4)
作業三
Sleep
Three queue scheduler
第一部份
增加Sleep(x) system call ,使 process
能夠 idle x 次由 timer 所引起的 interrupt
實作
增加syscall.h start.s中的system call種類。
於scheduler class增加一array紀錄sleep
中的process,以及尚餘的sleep次數
Exception中利用alarm class中的
waitUntil方法,來達到Sleep的目的
實作重點
alarm class 中的 waitUntil function 會將
目前執行 Sleep 指令的 process 以及次
數記錄至 Scheduler class 中。
實作重點
而每發生timer interrupt 就以CallBack
function 將目前正在 sleep array 中的
processes 剩餘次數減1,若剩餘次數歸0,
將之放入 ready queue 中。
並且只有在系統狀態為 idle 以及沒有
process 在 sleep 時方會退出。
成果
第二部份
做出三個不同排班法之 ready queue
FCFS
SJF
RR
前置動作
需增加 scheduler 中的排班型別 FCFS
並且在 kernel class 中利用 argv ,來判
斷選擇的排班法
實作重點
在Scheduler class 中,若是使用 RR 排
班,那選擇下一個執行的 process 將會
是 ready queue 的第一個
而若是使用 SJF ,那麼將會從 ready
queue 找出預測時間最小的 process 來
執行
預測時間
在 scheduler class 中記錄每個 process
的預測 CPU burst time ,預設為 0。
預測公式為:
預測時間
在預測公式中的真實執行時間,是記錄
process 開始的時間,並且在 alarm 的
CallBack 中,執行預測公式。
實作FCFS
FCFS 排班法是使用強制系統不做
process 交換。
在 timer 所引起的 interrupt 後,我們在
alarm 的 CallBack 檢查排班法是否為
FCFS ,來看是否要做 process 的交換。
未實作部份
並未實作出多 queue ,原因為不知道如
何指定個別的 process 之排班演算法。
成果