【操作系统】6.S081lab完成记录(一)lab1 Xv6 and Unix utilities——sleep

5 篇文章 0 订阅
2 篇文章 0 订阅

参考资料

官网课程计划:https://pdos.csail.mit.edu/6.S081/2021/schedule.html
以及点进课程安排中的链接就可以看到的xv6电子课本、lab要求

环境配置

租了个腾讯云服务器,并将系统设为教程推荐的ubuntu 20.4版本,具体配置细节lab要求里的“lab tools page”有很详细的介绍,这里不再赘述。

Boot xv6

  • 在执行$ git clone git://g.csail.mit.edu/xv6-labs-2021命令时,提示我没有clone权限。

遇到这种情况只需要返回上级目录,然后将打算用于存放仓库代码的目录的权限设为o+w即可。
代码:

sudo chmod o+w dirname

dirname为存放仓库代码的目录

  • 生成和运行xv6是以下命令:
make qemu

之后可以进入xv6,这是一个类Unix的操作系统,我们之后的任务就是往其中增加功能。

  • 接下来先熟悉一下这个操作系统:
    先试试ls 命令
    (注:我是先做了sleep功能再写这篇文章,所以此处显示有sleep,一开始打开的时候是没有的)

在这里插入图片描述
试试echo:

echo hello world!

在这里插入图片描述
试试mkdir:

mkdir test

在这里插入图片描述
不过有点bug,我cd进去该目录之后无法使用功能命令了

在这里插入图片描述
对此,我在xv6的课本中找到了这样一段描述,不知道会不会和这个有关系:
在这里插入图片描述
在这里插入图片描述
一方面和cd本身的机制有关,另一方面是因为xv6还没能像Unix一样完善。

  • 关于退出:
    lab要求中有这样的提示:
    在这里插入图片描述
    我试了试,指的是在同时按下ctrl和字母a键之后快速松手并马上按x键。

关于实现sleep功能:

  • 在user/ 下新建sleep.c文件并打开:(使用vim打开一个不存在的文件将会自动创建)
vim sleep.c
  • 编写代码
    参照教程提示:
    在这里插入图片描述
    代码如下:
#include "kernel/types.h"
#include "kernel/stat.h"
#include "user/user.h"

int main(int argc, char *argv[]){
    int n;
    if (argc != 2){
        fprintf(2, "Please enter a number!\n");
        exit(1);
    }else{
        n = atoi(argv[1]);
        sleep(n);
        exit(0);
    }
}

关于功能添加与评测

  • 在.c文件写好代码之后,还要把它添加到功能列表中。在这里插入图片描述
    返回上级目录,打开Makefile文件,在UPROGS配置下追加一行代码。
    (写到这里的时候没打开相应文件,就不放代码了,不过很简单的,上面的指令什么格式,这个依葫芦画瓢就行)
    (vim操作回顾:在normal模式下输入/可以搜索关键词,按n查找下一个结果,按N查找上一个结果)

  • 之后make qemu,会看到如下结果:
    在这里插入图片描述
    输入ls可以看到ls出现在选项中,如前面的图展示的。

  • 来试试功能:
    在这里插入图片描述
    输入该命令后,可观察到几秒内 光标在闪烁,但是没有其他的东西,新的$也没出现,说明进程确实是在休眠。

  • 评测
    在这里插入图片描述
    这个make grade命令出现在sleep功能要求之前,好奇宝宝本人手贱没看清楚说明就输入了,结果评测出0分 (现在知道它的含金量了吧?指的是当前lab的所有测试)。

如果做完了其中一个,比如只完成了sleep功能,想只测sleep的,可以使用这个命令:

 $ ./grade-lab-util sleep

或者这个:

$ make GRADEFLAGS=sleep grade

我看网上有博客文章说要改这个评测脚本的测试路径和测试命令,但我试了试,反正我这边不改也行的。

结果

在这里插入图片描述
看到评测结果,还是很有成就感滴!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值