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解决了。

阅读更多

告别2020庚子鼠年

2020 庚子鼠年,在家上了半年网课,慵懒地躺尸,同时又在焦虑感的驱使下战战兢兢地当个做题家。而后,二进宫实习,同时参加夏令营,拿到 offer;国庆离职,进入实验室,成为临时工。一直在忙碌,一直在焦虑。

阅读更多

Rust智能指针Cow

定义

Cow是一个提供了写时克隆功能的智能指针,它可以包装对数据的借用,当需要修改数据或者获取数据的所有权时,对数据clone。它的定义如下:

阅读更多