106 OS homework 2-2 成果報告書

組長:B10315010 張庭頤
組員:學號、姓名
組員:學號、姓名
github: https://github.com/twilightc/xv6-public


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

3.輸入showdate後,即時顯示日期與時間(UTC+8)


😇 成功畫面

scheduler的部分因為遭遇一些困難導致未能像流程圖當中的結果呈現,也因此這裡只放上結束xv6與即時顯示日期的執行畫面。


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

為求版面平整,圖片方面主要以date為主,其他部分佐以文字補助說明
date部分:
1.在syscall.h中加入定義的system call

2.defs.h中在欲實作部分加入宣告

3.在syscall.c加入來自外部的函數定義

4.在sysproc.c中加入系統函數內容


5.在user.h中定義user方函數的定義

6.usys.S中加入SYSCALL(函數名)

7.定義使用者呼叫函數時顯示的內容

8.修改Makefile中UPROGS的部分

9.開啟xv6,先檢查是否有指定函數後測試功能

halt:與上述修改地方大致雷同,另有halt.c為使用端呼叫函數
scheduler:與上述修改地方大致雷同,另外在:

  1. proc.c內 struct proc的部分加入int priority
    修改scheduler()部分
    spinlock.h內的資料結構加入lockcount變數
    spinlock.c getlockcount()
    gettimertick() (預計)
    加入frk.c方便測試

😎 結論

透過自己一步一步修改功能,以及大量查詢網路上的資料及教學,這門課讓我對OS中,如何透過shell運作process有更深一層的認識,途中曾經遇到閃神把原本xv6當中proc.c fork()的資料刪除一部分,搞得整夜沒睡的窘境,或是修改scheduler時沒有注意到資料結構的特性搞得一運作xv6就當機,導致最後scheduler的功能顯得陽春,不論結果是好是壞,相信這個學習的過程會對我在面對更複雜的系統提供更多的幫助。


📅 組員分工

本人:找資料,撰寫程式碼,測試