組長:B10415044、吳唯甄
組員:B10415017、時安劼
組員:B10415021、呂承叡
github: https://github.com/tomatothevegetable/xv6-public
主要功能:



priority 1:重要性最高的priority,可以對任何process插隊。例:init、sh、ptable
priority 2:已經over deadline的priority會升到此等級,盡速完成
priority 3~20:一般process所被分配到的priority區間
changePriority
輸入方式:changePriority pid priority
changePriority 6 5 -> 將pid 6的priority改成 5

setTime
輸入方式:
setTime pid priority startHour startMin endHour endMin deadlineHour deadlineMin
setTime 7 3 15 51 15 52 15 53
在15:51~15:52間將pid 7的priority設為3,deadline設為15:53

endTime=15:52,時間到後priority改回原本的10

其他排程方式
若priority相同,則會先執行deadline較近的

deadline=15:53,若現在時間已經超過deadline,系統自動將priority設為2,盡快完成process

新增的syscall
| system call | 功能 |
|---|---|
| ptable | 顯示所有process |
| foo | 創造用來test的process |
| setTime | 設定process的開始、結束時間和deadline |
| changePriority | 改變process的priority |
ptable



foo



排程




changePrioority
changePrioority.c

sysproc.c

proc.c

setTime



其他


從理論上來看有非常多種排成方式。然而每一種方式都會有其優缺點,因此希望能結合多種排程,讓系統依據程序的需求使用適合的排程方式。
在實作過程中,較為困難的就是判斷哪種類型的process需要哪種排程。像是當輸入指令時會呼叫到 sh syscall判斷輸入的指令,而起初設定排程時並沒有考慮進去。所以當所有CPU被占去後就沒辦法執行輸入的指令。所以可能對於如何分辨process的重要程度是我們還可以努力嘗試的。
吳唯甄:基本排程功能、報告撰寫
時安劼:排程架構、排程deadline部分
呂承叡:設定與判斷排程時間、deadline與priority、CPU ticks