106 OS homework 2-2 成果報告書

組長:B10415023、吳欣樺
組員:B10415026、林于婷
組員:B10415027、倪銓川
github: https://github.com/winterknow852/xv6-public


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


補充說明:


😇 成功畫面

一開始priority都設為3,alarm在cpu開始跑時開始alarmtest starting,由我們設定的會印出"."時間跑了10個cpu tick時就會印出alarm!並換行繼續

呼叫測試數值foo,依據我們設定的值,parent會fork出child,child的priority我們都預設為10

接下來我們就能自己輸入修改他的priority,輸入ch 10 5 就能把pid10的foo的priority從原本的10設成5,也可以看到pid10一直在RUNNING的狀態,因為他有最高的priority。

再一次的修改pid10的priority,設為13,可以看到狀態又變回RUNNALBLE,因為pid9的priority比他更高所以先執行,pid9的狀態設為RUNNING。


🏃 實作過程(修改哪些檔案)

修改

defs.h

user.h

usys.S

sysproc.c

syscall.c

syscall.h

proc.c

proc.h


新增

ps.c

ch.c

foo.c

alarm.c


😎 結論

xv6原始的排程演算為Round-Robin,我們新增了priority scheduling algorithm排程演算法,讓CPU根據每一個process的優先權來決定哪一個process需要先執行,並且我們設定能自行修改優先權,這樣讓使用者能自行調整想先執行的process,就不會有starving的問題,並且我們加上了alarm的功能,看顯示就能知道cpu目前執行process所花的時間。


📅 組員分工