前言

  该专栏从本篇文章开始,正式进入xv6操作系统的相关实验,从之前的介绍可以知道,我们的xv6操作系统源码是一个基于教学实验的微内核,整个xv6操作系统源码部分在该专栏的第0章已经给出来了,源码虽然代码量不高,但是实现了基本的操作系统该有的功能。
  我们用xv6操作系统进行实验的目的是,通过我们自己写的代码,然后将其加入到操作系统源码中,然后修改Makefile文件,让我们自己的代码成为xv6操作系统源码的一部分。这样,我们就实现了给一个操作系统增加功能的需求,大大提高了我们对操作系统底层源码实现的理解和C语言的编程能力。
  本篇文章通过编写一个简单的C语言求和例子,然后将其加入到xv6操作系统源码中,进行编译之后,在QEMU虚拟环境(QEMU和xv6操作系统源码已经在第0章给出)中启动xv6操作系统,然后运行我们编写的例子


一、编写C语言程序

  首先,我们找到xv6操作系统源码所在目录(建议备份一份最初始的源码,复制一份到自己的文件夹下用来做lab使用),我复制的xv6操作系统源码在csdn_lab1目录下面,在该目录中打开终端,利用vim编写我们的C语言程序,完成1到100的求和,如下第一步和第二步,完成程序的编写之后,输入:wq命令保存文件,退出vim。
  进入xv6操作系统源码目录下面,利用vim编写一个C语言程序
图1
  编写一个1到100求和的C语言程序代码,并且:wq保存退出vim。
在这里插入图片描述
  到了这一步,我们发现程序中包含了与我们日常C语言编程不同的头文件,这些头文件可以在xv6操作系统源码中查看,我们不妨打开这些头文件,看看里面都有什么。
types.h头文件内容如下:
在这里插入图片描述
stat.h头文件内容如下:
在这里插入图片描述
user.h头文件内容如下:
在这里插入图片描述
  通过查看上面三个头文件内容,其实我们就对xv6操作系统源码进行了简单查看和分析,其实不难理解,这三个头文件的功能和#include"stdio.h"差不多,就是完成了一些简单的系统调用,把我们程序需要输出的内容,通过操作系统调用外部资源显示出来。

二、修改xv6操作系统源码中Makefile文件

  保存了编写的C语言程序后,我们需要利用vim修改xv6操作系统源码下的Makefile文件,如下图所示,这一步的目的是在我们后续使用make命令的时候,xv6操作系统可以自动完成对编写好的C语言程序进行预处理、编译、链接等过程。
在这里插入图片描述
  修改完Makefile文件后,:wq保存退出vim,我们在xv6操作系统源码目录下打开终端,输入make命令,xv6操作系统会根据Makefile文件内容,对我们编写的C程序进行预处理、编译、链接等过程,如下图所示。
在这里插入图片描述

三、启动QEMU虚拟环境 && 运行编写的程序

  至此,我们成功在xv6操作系统源码中添加了我们自己编写的C语言程序,实现了简单的求和功能,为了验证我们的程序是否成功的加入到了源码中,我们在xv6操作系统源码目录打开终端,输入make qemu命令,进入QEMU虚拟环境,运行xv6。
在这里插入图片描述
  最后,我们在QEMU黑框中输入ls命令,看到我们编写的程序名,然后继续输入程序名,此时,在QEMU中显示我们编写程序的运行结果。
在这里插入图片描述
在这里插入图片描述


四、总结

  上述就是本篇文章的大致内容,本文是xv6操作系统入门实验的第一个实验,完成了为xv6操作系统源码中添加自己的程序,并且成功在QEMU虚拟环境启动xv6操作系统运行了我们的程序。通过该篇文章的学习,可以让读者对xv6操作系统的源码有一个大致的认识,对Makefile文件有一个初步的了解等,是一个非常棒的xv6入门实验。

  注:如果希望对xv6操作系统有一个较为深入的了解,请参考深圳大学罗秋明老师著的《操作系统原型-xv6分析与实验》,本专栏的所有文章都是对改本书里面的部分简单内容介绍,旨在以一个非常简单的方式让读者对xv6操作系统实验有一个全面的认识,帮助读者参与到xv6操作系统功能增加的过程中,提高对操作系统的实践能力。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐