6.S081 lab5 lazy

Eliminate allocation from sbrk()

这次实验的第一关非常简单,就是从sbrk调用中取消内存分配,为之后的lay allocation做准备。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
uint64
sys_sbrk(void)
{
int addr;
int n;

if(argint(0, &n) < 0)
return -1;
struct proc *p = myproc();
addr = p->sz;
p->sz += n;

return addr;
}
阅读更多

6.S081 lab4 traps

RISC-V assembly

这是一个简单的RISC-V汇编热身关卡。

阅读更多

6.S081 lab3 page tables

环境配置

前两个 lab 比较基础,就不写博客记录了,于是从 lab3 开始。

环境配置参考官网 。如果使用ubuntu20.04的话,环境配置比较简单,只需要从qemu 官网下载源码,手动 build 就完成了;或者使用archlinux,一条命令便全部配置完成。笔者使用的平台是macOS 11.2.1,使用homebrew安装的qemu在前两个 lab 没有问题,但是在第三个 lab 出现了 crash,改为从源码手动编译安装qemu 5.1.0解决了。

阅读更多