像这种教学目的操作系统(例如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("
");
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("
");
exit();
}
可以先在linux 下测试一下功能然后打包进去重新编译。
如果希望设计哲学有所突破,需要参考xv6并发设计
1.Xv6中并发进程有几种状态,在源码中分别以什么常量代表,试解释每种状态的意义。
2.Xv6中PCB是以什么方式存放的,链表还是数组?系统 最多允许同时运行多少个进程?
3.Xv6是否支持多核cpu? 如果支持的话,是通过哪个数 据结构支持的?
4.系统启动的第一个进程,其入口函数在哪个文件第几 行?它主要实现什么功能?