MIT6.S081实验
文章平均质量分 74
wasamtc
这个作者很懒,什么都没留下…
展开
-
MIT6.S081Lab8:locks
当一个锁的竞争比较激烈而要减少竞争时,可以将这个锁分为更多较细粒度的锁,这样可以提高并行性。另外我感觉第二个部分说的有一点不清楚,提示比较模糊,尤其是ticks部分,关键是用ticks实现LRU的话要遍历所有桶,相当于O(n),而之前双向链表的方式最差才是O(n),一般是O(1)。原创 2024-01-05 17:09:01 · 428 阅读 · 0 评论 -
MIT6.S081Lab7:Multithreading
总的来说这几个实验都不难,只要把已有的代码看懂加上提示做出来还是没问题的,第一个实验对我的提升最大,进一步理解了ra和sp,尤其是sp,原来更改堆栈这么简单,所谓程序的状态,其实主要也就是那几个寄存器的值而已。原创 2024-01-04 15:11:39 · 358 阅读 · 0 评论 -
MIT6.S081Lab6:Copy on Write Fork for xv6
实验不难,但是要仔细,而且很多时候,当你觉得你的想法实现太复杂了,多半是想法有问题。原创 2023-12-08 18:14:11 · 410 阅读 · 0 评论 -
MIT6.S081Lab5:xv6 lazy page allocation
这个实验总的来说我觉得还是比lab3简单一点,最需要注意的就是最后一个中关于系统调用涉及到lazy allocation不会触发页面错误需要手动编写代码来分配页面。原创 2023-12-07 16:57:04 · 901 阅读 · 0 评论 -
MIT6.S081Lab4:traps
总的来说,lab4并不是很难,只要理解了trap的机制以及用户空间与内核在trap机制中如何转换,应该是能够写出来的。可能需要一点汇编代码的理解能力,不过应该还是能大致看懂需要用到的汇编的。在test0中我在usertrap直接执行处理函数,忽略了用户和内核页表的不一致导致出错,这一点需要注意,尤其是解引用的时候。原创 2023-12-06 10:32:48 · 409 阅读 · 0 评论 -
MIT6.S081Lab3:page tables
按照准备环境,即如果提示之前的修改没有提交的话可以把之前的修改去掉(备份一份)。原创 2023-12-05 13:54:45 · 961 阅读 · 0 评论 -
如何在自己的github仓库建立xv6-labs-2020项目
然后进入该文件夹运行git bash或者其他git控制程序,建立与自己github上仓库的连接(如果没有,在github上新建一个)查看所有远程分支(除master外所有分支都是在远程仓库上,本地没有)这个时候再去看github的仓库,已经有util分支以及对应的文件了。然后直接把util分支push到我们自己的github仓库上。然后切换到某一个分支就可以把远程分支复制到本地来。例如我们需要util这个分支,那么就。切换到util分支,这个时候适用。就可以看到本地有util分支了。原创 2023-11-27 10:58:35 · 854 阅读 · 0 评论 -
MIT6.S081Lab2:system calls
其实这两个实验都不是很难,根据提示来基本能在1~2小时内做出来。两个实验让我更加理解系统调用的过程,同时还让我明白了一件很重要的事情:用户空间和内核空间各有各的页表,不能互相读写内存空间。原创 2023-10-22 16:26:07 · 147 阅读 · 0 评论 -
MIT6.S081Lab1: Xv6 and Unix utilities
这几个实验因为中间有其他事情,所以时间跨度还是挺长的,不过我觉得MIT6.S081的实验真的很有价值,之前可能用过这些指令,但是不清楚这些指令具体怎么实现的,在实现这些指令的过程我对fork,pipe,exec这些系统调用的使用更加熟练了,之前其实没怎么使用过这些系统调用。期待下一个实验!原创 2023-10-18 19:54:46 · 267 阅读 · 0 评论 -
MIT6.S081的gdb调试方法
MIT6.S081的gdb调试方法原创 2023-10-11 16:41:37 · 633 阅读 · 0 评论 -
MIT6.S081实验环境搭建
本文参考了MIT的官方指南和知乎文章。原创 2023-09-05 14:54:41 · 1099 阅读 · 0 评论