作業系統期末報告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 之排班演算法。
成果