組長:A10615003、張家成、github帳號:GoSomewhereNice
組員:A10615002、張海鯤、github帳號:haikun233
組員:A10615001、趙梓丞、github帳號:zhaozichengkv
github: https://github.com/GoSomewhereNice/xv6-syscall
當很多進程(process)同時需要運行,cpu會面臨誰先執行誰後執行的選擇,此刻需要為每個進程(process)設定其權限(priority),或修改其權限來讓cpu選擇最高權限的進程(先執行),其餘進程(process)ready。


修改的檔案:
1."Makefile"增加代碼

分別為將如下指令添加至系統
ps指令:
列出現有進程pid status priority
(將計畫書中listpriority()結合至此)
setpr指令:
全稱:setpriority
對指定pid的process設置其priority
getpr指令:
全稱:getpriority
查詢指定pid的process所擁有的priority
prt指令:
全稱:prioritytest
無限循環的消耗cpu的測試程序
2.“defs.h” 增加代碼

分別為
cps:
使cps方法可以被調用的代碼
chpr:
使chpr方法可以被調用的代碼
getpr:
使getpr方法可以被調用的代碼
3.“proc.c” 增加代碼



分別為
p->priority = 10;
定義表示權限的變量 priority
cps:
實現ps指令的代碼
chpr:
實現setpr指令的代碼
getpr
實現getpr指令的代碼
4.proc.h

定義priority的類型為int,並且範圍為0~20,數值越小權限越大。
5."ps.c"新建文件

調用cps方法實現ps指令。
6.“syscall.c”、“syscall.h”、"usys.S"增加代碼



將cps、chpr、getpr方法添加至系統中。
7."sysproc.c"增加代碼

調用cps、chpr、getpr方法時得到的返回值。
8."user.h"增加代碼

cps、chpr、getpr的所需參數。
9."prt.c"新建文件

測試程序源碼。
通過此次system call的作業,我們鑽研並實現了作業系統對於進程的權限管理。我們發現實現的方式並不是唯一的,可以有很多種演算法來判斷進程執行的先後順序,可以根據不同的作業系統來實現不同的權限排程方式。除此之外,在編譯不斷報錯中,我們對於xv6中的文件和其對應的功能和作用有了一定的了解。相信對以後相關領域學習會有很大幫助。
| 組員 | 分工 |
|---|---|
| 張家成 | 1.setpr指令實現 2.scheduler()方法修改 3.prt.c測試程序初版 4.測試 5.成果報告書 |
| 張海鯤 | 1."ps"指令實現 2.將"ps"結合了"listpriority()"指令 3.getpr指令實現 4.測試 |
| 趙梓丞 | 1.prt.c測試程式最終改進版 2.getpr指令實現 3.將nice指令精簡優化至setpr指令和getpr指令中 4.測試 |