XV6的运用
Xv6是由麻省理工学院(MIT)为操作体系工程的课程(代号6.828),开发的一个教育意图的操作体系。这儿介绍一下它的运用,假如只看MIT课程的翻译的话可能有很多当地都不理解,学的很乱,这儿给出基本的XV6的环境搭建和运用。
这儿引荐运用我根据linxi的镜像重新制造的docker镜像
loserfromlazy/mit6.s081-gdb:latest
避免不同环境造成的bug。
我这儿是运用linxi大大的docke镜像修改后的镜像(详细原因见下面),他的镜像是根据2020试验版本制造的,首要咱们拉取镜像并发动:
它的镜像运用的是
gdb-multiarch
,这个调试东西无法si单步进入ecall指令,这时可以装置riscv64-unknown-elf-gdb
,这是MIT6.S081课程上运用的调试东西,装置办法。
然后进入到该镜像,并进入到xv6-labs-2020目录:
在这个目录下运用make qemu
指令即可发动xv6体系,假如想中止xv6体系的话,就另起一个终端,进入此镜像,然后履行pkill -f qemu
指令即可。
xv6发动后咱们输入ls指令可以见到其一切的可履行的指令:
咱们可以看到ls指令也在其中。其实咱们可以将这儿的一切指令理解为用户程序,咱们可以在xv6-labs-2020/user下见到他们:
假如咱们想自己编写C程序并在XV6中运行的话,那么只需要将编写好的c文件放到这个user目录下,然后在Makefile文件中参加咱们编写的文件。比方上图中的sleep.c就是我自己编写的C程序文件,然后咱们去编辑Makefile,主要改这个当地:
然后回到xv6-labs-2020目录下,履行make clean指令,在履行make qemu即可。然后咱们就可以在XV6中调用自己的c程序了。就跟调用ls指令是相同的。