106 OS homework 2-2 成果報告書

組長:B10413040 張靜馨
github: https://github.com/AlexMeow/xv6-public


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

一、date:

開機後直接輸入date即可開始。

二、shutdown:

開機後直接輸入shutdown即可開始。


😇 成功畫面

如下圖,
輸入date之後得到CST時間(原本預計要用UTC,但總覺得太不直覺了,最後改成UTC+8的CST);
輸入shutdown之後關閉xv6。


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

1. 增加宣告和定義在syscall.h, syscall.c, user.h, usys.S, defs.h中

syscll.h:

syscll.c:

user.h:

usys.S:

defs.h:

2. 在sysproc.c中實作kernal level

3. 新增date.h, date.c, shutdown.c,實作user level

date.h:

date.c:
(輸出格式仿照linux的date指令)

shutdown.c:


😎 結論

原本是打算在做完這兩個功能之後,再繼續增加更多功能,
例如reboot──本來想說都做了關機那就順便做個重開機吧,結果我到最後還是想不到要怎麼實作;上網也查不到相關參考資料,只好放棄。
也曾經打算增加一些排程、記憶體管理相關的system call,無奈我的能力不夠,來不及在死線之前看懂這部分的參考資料並實作。

不論如何我最後至少完成了原先寫在構想書裡的這兩個指令,
看到時間被正確的print出來的瞬間感動到想哭,感恩讚嘆xv6內建的cmostime函式。

參考資料:
https://pdos.csail.mit.edu/6.828/2017/homework/xv6-syscall.html
https://pdos.csail.mit.edu/6.828/2012/homework/xv6-syscall.html
http://web.cecs.pdx.edu/~markem/CS333/projects/p1
https://www.youtube.com/watch?v=6zAHUcEt-QQ


📅 組員分工

B10413040 張靜馨:寫構想書、system call實作、測試整合
(只有我一個人,搭啦!)