MIT6.S081 Lab lazy page allocation
本次实验是有关内存页懒分配的。所谓内存页懒分配,在本实验中,指的是在用户进程使用 sbrk() 系统调用来增加内存中堆的空间时,我们不直接在物理内存中分配相应的页,而是只是记录了分配到了哪些用户地址,在用户页面表中这些地址默认标记为无效。当进程首次尝...
本次实验是有关内存页懒分配的。所谓内存页懒分配,在本实验中,指的是在用户进程使用 sbrk() 系统调用来增加内存中堆的空间时,我们不直接在物理内存中分配相应的页,而是只是记录了分配到了哪些用户地址,在用户页面表中这些地址默认标记为无效。当进程首次尝...
本实验主要是关于如何使用陷阱实现系统调用的。 RISC-V assembly (easy) 这个部分主要是回答一些问题。 首先我们按照实验的指示,运行下面的命令得到一份容易读懂的汇编和 C 结合的代码,位于 user/call.asm。 1make...
实验开始前的折腾 突然发现 2023 版的和 2020 版的实验内容其实还不一样…… 因为我正在看的视频以及参考资料都是基于 2020 版的课程,因此我还是决定将之前的实验都迁移到 2020 版的 xv6-lab-2020 来。 在自己的 Macb...
这一个实验的主要内容就是给 xv6 添加两个系统调用:trace 和 sysinfo。 Using gdb (easy) 这个部分我就不做了…… M1 的 Macbook Air 上的 gdb 太难安装了,所以暂时用不了 gdb 调试…… Sys...
环境准备 不得不说,在 M1 的 Macbook Air 上写这个实验还挺费劲…… 我尝试根据课程的官方指引安装了 qemu 和 riscv-tools,结果总是遇到各种奇怪的问题…… 首先,根据官方的指导,我应该这样安装 riscv-tools:...
终于到最后一个 Lab 啦! 这个 Lab 的任务是实现一个代理服务器,将客户端发送的请求转发到服务端。 这个 Lab 分为三个任务,第一个任务需要实现这个代理服务,第二个任务支持处理并发请求,第三个任务需要实现缓存。 Part I: Implem...
本次实验的内容也比较清晰,只需要完成一个手写的 malloc 动态内存分配器即可。 书上第 999 章第 999 节介绍了这样的分配器的实现方法。 实验要求 本次实验提供了基本的框架,需要完成下面几个函数: 1234int mm_init(void...
本次实验的任务很清晰,实现一个简单的 Unix Shell。需要用到基础的进程控制、信号处理等知识。 简单来说,实验已经提供了一些简单的功能,我们需要在此基础上,实现下面的功能: eval:解析和解释命令行的主例程。[70行] builtin_cm...
到实验 5 啦! 这次的实验是有关高速缓存的。 让我们先来复习一下高速缓存的基础知识吧! 复习 高速缓存的结构 在一个存储器地址有 mmm 位的系统上,一共有 M=2mM = 2^mM=2m 个地址。假设高速缓存被组织成一个有 S=2sS = ...
本次实验是有关书上第四章设计的 Y86-64 处理器的,实验分为三个部分,分别是编写几个简单的 Y86-64 程序、使用一条新指令扩展 SEQ 模拟器以及优化 Y86-64 的基准测试程序和处理器设计。 实验准备 需要简单复习一下 Y86-64 的...