xv6实验课程:Xv6和Unix实用程序
本實驗讓您熟悉xv6及其系統調用。
官方文檔:
https://pdos.csail.mit.edu/6.828/2020/labs/util.html
注:目前MIT 2020秋季實驗課程網站文檔不全,最好參考2019年秋季的課程。
https://pdos.csail.mit.edu/6.828/2019/labs/util.html
1. 啟動?xv6??
使用命令uname -a查看系統是否為:i386 GNU/Linux、i686 GNU/Linux或x86_64 GNU/Linux。我用的機器系統信息如下,符合要求。
獲取xv6源代碼并檢出util分支。
$ git clone git://github.com/mit-pdos/xv6-riscv-fall19.git$?cd xv6-riscv-fall19
$?git checkout util
xv6-riscv-fall19存儲庫與書中的xv6riscv略有不同,目的是使實驗更容易。
構建xv6。
$?make
$?make qemu
緊接著會看到xv6正在啟動,然后出現'$',此時就在xv6環境中。
如果你在命令行輸入ls,應該會看到類似于下面的輸出:
2. sleep
為xv6實現Unix Sleep調用調用,在Sleep系統調用中指明一段時長,一般用ticks表示,tick是內核中定義的一個概念,代表兩次時鐘中斷之間的時間長度。程序存放在user/sleep.c。
一些提示:
·??你可以通過查看/user下的其他程序來學習如何將命令行參數傳入程序。如果用戶忘記傳入參數,sleep程序應該打印error信息。
·??命令行參數作為字符串傳遞,你可以使用atoi將它轉換成一個整數(見user/ulib.c)。
·??使用系統調用 sleep(見user/usys.S 與 kernel/sysproc.c)。
·??確保 main 調用 exit() 來退出程序。
·??在makefile中將程序添加到UPROGS并通過 make fs.img 來編譯程序。
·??閱讀Kernighan and Ritchie’s book The C programming language (second edition) (K&R) 來學習C語言。
? 查看一下其他程序如何編制,比如mkdir。
如法炮制sleep.c
#include "kernel/types.h"#include "user/user.h" intmain(int argc, char *argv[]){ if (argc != 2) { fprintf(2,"Usage: sleep <ticks>\n"); exit(); } int x = atoi(argv[1]); fprintf(1,"Sleep %d\n",x); sleep(x); exit();}在Makefile中將程序添加到UPROGS并通過 make fs.img 來編譯程序。
$?make clean
$?make?qemu
運行sleep
總結
以上是生活随笔為你收集整理的xv6实验课程:Xv6和Unix实用程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css中图片有缩放和转动效果
- 下一篇: 第四章 数字调制方式