106 OS homework 2-2 成果報告書

組長:B10415019 張祖浩
組員:B10415020 蔡奕德
組員:B10415045 施泓仰
github: https://github.com/hiroya8649/xv6-public


🙂 使用情境說明(包含流程圖)

原本的scheduler:RR

修改過後的scheduler:deadline first

一共有2個機制
1.當deadline不同時:選擇最靠近deadline的process

2.當deadline相同時:選擇最久未被執行的process

※下圖中的數字為尚未執行的時間

deadline相同時的分配狀況


會與RR的情況相似

deadline不同時的分配狀況


每個process分配到的時間
deadline=5︰25
deadline=15︰15
deadline=20︰15
deadline=50︰5

可以看到deadline越小的process被分配到的時間越多


😇 成功畫面

首先在背景程式中創建多個不會執行完的foo process

可以觀察到每個process的deadline相同時分配到的時間差不多

輸入chdl指令改變pid=45的deadline為10,已經可以看到process的執行時間有稍微比其他的多一點

經過數秒後再觀察一次,可看到降低deadline後的process的執行時間比其他process的執行時間有大幅差異


🏃 實作過程(修改哪些檔案[含圖片])

chpr.c

chdl.c

ps.c

foo.c


syscall.h

syscall.c


defs.h

usys.S

user.h

sysproc.c

proc.c




proc.h

trap.c

Makefile



😎 結論

讓xv6使用deadline first的排程方法,使process跟時間具有相關性,若給予的限制時間越短,則被執行到的機會會越高,執行次數也會越多次,且此排程方法不會造成priority的starvation,即使有很多短時間的process被建立也不會使整個os停止運作。但不足的地方是,我們無法保證process的工作一定會在時間內完成,只能盡量使得該process在時間內完成。


📅 組員分工

祖浩:在process裡新增priority屬性,實作測試function(foo)、狀態印出(ps)、變更priority(chpr)
奕德:修改scheduler(priority based),顯示記憶體空間,顯示process的執行時間,整合專案
泓仰:在process裡新增deadline屬性,實作deadline first排程方法,變更deadline(chdl),實作計時器