Xv6是Unix第六版的重新实现,可以用作学习工具。 xv6由MIT开发,作为其“ 6.828”课程的教学操作系统。关于xv6的一个至关重要的事实是,它包含Unix的所有核心概念,并且与Unix具有相似的结构,即使它缺少某些现代操作系统所期望的功能。这是一个轻量级的操作系统,其编译时间非常短,并且还允许远程调试。
可以将xv6的源代码克隆到您的计算机上,如下所示:
https://github.com/mit-pdos/xv6-public
将用户程序添加到xv6:
在计算机上完成xv6设置后,您可以看看如何向xv6添加新的用户程序。用户程序可以是简单的C程序。但是,仅将文件添加到xv6文件夹是不够的,因为我们需要在shell提示符下将其提供给用户。
步骤1:简单的C程序
首先,让我们创建一个如下的C程序。我们将其以first.c或您喜欢的任何名称保存在xv6操作系统的源代码目录中。
C
//A Simple C program
include "types.h"
include "stat.h"
include "user.h"
//passing command line arguments
int main(int argc, char *argv[])
{
printf(1, "My first xv6 program learnt at GFG\n");
exit();
}
// This code is contributed by sambhav228
步骤2:编辑Makefile
需要编辑Makefile,以使我们的程序可用于xv6源代码进行编译。
gedit Makefile
这行代码将在gedit文本编辑器中打开Makefile。接下来,需要编辑Makefile的以下部分以首先添加您的程序。c
UPROGS=\
_cat\
_crash\
_echo\
_factor\
_forktest\
_grep\
_hello\
_init\
_kill\
_ln\
_ls\
_mkdir\
_null\
_rm\
_sh\
_share\
_stressfs\
_usertests\
_wc\
_zombie\
_first\
EXTRA=\
mkfs.c ulib.c user.h cat.c echo.c forktest.c grep.c kill.c\
ln.c ls.c mkdir.c rm.c stressfs.c usertests.c wc.c zombie.c\
first.c\
printf.c umalloc.c\
README dot-bochsrc *.pl toc.* runoff runoff1 runoff.list\
.gdbinit.tmpl gdbutil\
现在,我们的Makefile和用户程序已准备好进行测试。输入以下命令以编译整个系统。
make clean
make
现在,在QEMU上启动xv6系统,并在其启动时运行ls命令以检查我们的程序是否对用户可用。如果是,请提供该可执行程序的名称,在我的情况下,这是首先在终端上看到程序输出的名称。
输出 :
“我在GFG学习的第一个xv6程序”在QEMU仿真器窗口中显示了此输出。