![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
6.S081
文章平均质量分 66
mit 6.s081课程
Marine Tears
这个作者很懒,什么都没留下…
展开
-
MIT 6.S081---Lab: file system
【代码】MIT 6.S081---Lab: file system。原创 2024-03-20 12:09:32 · 327 阅读 · 0 评论 -
MIT 6.S081---Lab: locks
【代码】MIT 6.S081---Lab: locks。原创 2024-03-12 11:57:34 · 632 阅读 · 0 评论 -
MIT 6.S081---Lab: Multithreading
修改uthread.c,在thread中新增context字段:修改uthread.c,在thread_create函数中新增以下逻辑:修改uthread.c中的thread_switch函数定义:修改uthread.c中的thread_schedule函数实现,新增线程切换逻辑:修改uthread_switch.S:修改uthread.c,新增头文件引用:测试结果如下:修改ph.c,修改entry结构体,新增lock字段:修改ph.c,修改main函数,新增初始化逻辑:修改ph.c,原创 2024-03-07 11:16:59 · 190 阅读 · 0 评论 -
MIT 6.S081---Lab: Copy-on-Write Fork for xv6
Implement copy-on write(hard)从下图可见,xv6的pte中RSW都是可以被软件使用的未定义位,此处将pte中的第9位标记为PTE_COW位。修改kernel/riscv.h:修改kernel/vm.c,新增refCount代表物理页面的引用次数,根据(PHYSTOP-KERNBASE)/ PGSIZE得32768:修改kernel/vm.c中的uvmcopy():修改kernel/vm.c中的mmappages(),当页表绑定物理页面时增加引用计数:修改k原创 2024-02-21 10:51:32 · 277 阅读 · 0 评论 -
MIT 6.S081---Lab: xv6 lazy page allocation
前面的解决方法存在诸多不足,在这里需要修改;原创 2024-02-18 11:49:32 · 207 阅读 · 0 评论 -
MIT 6.S081---Lab: traps
函数f的汇编代码在上图的第26~35行;而函数g的汇编代码位于第13~22行,经过对比代码一模一样,其原因是函数f在调用函数g时编译器采用了inline的方式直接将g函数内联展开了,节省了一次函数调用的时间。大端序的话地址需要以字节为一组进行翻转,即改为0x726c6400,而57616不用改,因为编译器会让它以正确的形式展示出来。可以从代码第45~47行代码可以看出,main函数调用printf系统调用时传入的参数是通过a0 ~ a2 来传入的。可见y可能是一个随机的值,一个没有被初始化过的未定义的值。原创 2024-01-25 19:53:19 · 1163 阅读 · 0 评论 -
MIT 6.S081---Lab: page tables
这样做的话有个问题,因为内核的页表不包含这些映射,进行系统调用时必须传入物理地址而不能传入虚拟地址,而本处要做的便是在每个用户进程内都维护一个内核页表,进程切换的时候在硬件维度就切换内核页表,分配时也要用这个内核页表。(也就是用新的内核页表替代用户页表)本题的目标是要用copyin_new 来取代copyin,用copyinstr_new取代copyinstr,其中需要在修改原用户页表时也同步修改新建的内核页表。在XV6原先的设计下,只有一张内核表,而每个进程都维护了一张自己的进程用户页表。原创 2024-01-15 11:50:42 · 446 阅读 · 0 评论 -
MIT 6.S081---Lab: system calls
对gdb配置有问题的可以参考。原创 2023-12-26 14:06:21 · 78 阅读 · 0 评论 -
MIT 6.S081---Lab util: Unix utilities
选择的是Vmware+ubuntu的配置,注意ubuntu的版本一定要是20.04,作者试过16版本,不行,建议直接安装20.04版,不然环境配置都浪费不少时间有点得不偿失。(Vmware可以用Virtualbox代替)原创 2023-12-23 22:24:20 · 289 阅读 · 0 评论