像這種教學目的操作系統(例如XV6 Minix)是不能小看的。
比如上古傳說Linus Torvalds大神在上Minix操作操作系統課時突發奇想!
在芬蘭的赫爾辛基大學用Minix操作平台建立了一個新的操作系統的內核,他把它叫做Linux。
我也希望走走人家大神當年走的路.
關於xv6 的編譯,為了能夠重寫拓展xv6需要將修改后的xv6重新編譯
1.要將 xv6 的源碼拷貝到linux 系統下!不能是windows系統。然后cd 如xv6文件夾。執行make 命令!
2 然后執行chmod 777 ./sign.pl
3 執行make clean
4 最后執行 make 可生成xf.img xv6.img 兩個文件即可!
把這些文件拷貝出來,用boch 運行就可以了。
關於echo功能
xv6 運行一次echo 功能一下

這個功能由echo.c文件負責,

echo.c源碼如下:
#include "types.h"
#include "stat.h"
#include "user.h"
int
main(int argc, char *argv[])
{
int i;
for(i = 1; i < argc; i++){
puts(argv[i]);
puts(" ");
}
puts("\n");
exit();
}
假如想小小修改一下echo 把echo 改成單詞倒置比如輸入hello world!
變成olleh !dlrow 單詞順序不變化 單詞字母順序倒置可以這樣:
#include "types.h"
#include "stat.h"
#include "user.h“
void f(char *s)
{
if(*s||(*s)==' ')
{
f(s+1);
putchar(*s);
}
}
int
main(int argc, char *argv[])
{
int i;
for(i = 1; i < argc; i++){
f(argv[i]);
//puts(argv[i]);
puts(" ");
}
puts("\n");
exit();
}
可以先在linux 下測試一下功能然后打包進去重新編譯。
如果希望設計哲學有所突破,需要參考xv6並發設計
1.Xv6中並發進程有幾種狀態,在源碼中分別以什么常量代表,試解釋每種狀態的意義。
2.Xv6中PCB是以什么方式存放的,鏈表還是數組?系統 最多允許同時運行多少個進程?
3.Xv6是否支持多核cpu? 如果支持的話,是通過哪個數 據結構支持的?
4.系統啟動的第一個進程,其入口函數在哪個文件第幾 行?它主要實現什么功能?
