XV6的使用与介绍

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命令是一样的。

点击链接有彩蛋,领取更多Java书籍。

相关推荐
爱勇宝20 分钟前
第 1 章:别把“需求文档”当成真正的需求
前端·后端·程序员
IT_陈寒5 小时前
闭包陷阱让我加了两天班,JavaScript你真行
前端·人工智能·后端
易协同低代码6 小时前
通达OA核心类库TD类深度解析
后端
Gopher_HBo6 小时前
Go语言学习笔记(十八)Gin处理Session
后端
谭光志7 小时前
工具塞满上下文窗口怎么办?深度拆解 AI Agent Tool Search 按需加载实现原理
前端·后端·ai编程
她说..7 小时前
Java 默认值设置方式
java·开发语言·后端·springboot
foggyprojects7 小时前
从0开始,一句话启动AI DataAgent
后端·数据分析·ai编程
郡杰7 小时前
一些基础和问题解决
后端
陈随易7 小时前
前端项目部署只要30秒
前端·后端·程序员
YIAN7 小时前
从零手写文件读取 MCP 服务:一文吃透 Model Context Protocol 全链路通信原理
前端·后端·mcp