自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 xv6 Lab: file system

一定要仔细阅读xv6book的file system部分 阅读关于file的代码。比如创建新的inode的create()调用后会持有返回inode的锁。这一部分我认为是比较难的 如果要写的比较严谨 要考虑的地方还是很多的。主要的细节在最初的bmap()中已经体现到了 照葫芦画瓢即可。要修改fs.h的结构体 fs.c中的bmap()函数。否则去测试的时候跟没修改过的bmap()是一样的。要注意块号bn与连续的块的索引到底是什么关系。但在测试的时候发现给的用例可能没有这么严谨。

2023-10-25 20:48:01 177 1

原创 xv6 Lab: locks

这个实验涉及到内存分配 锁 文件系统 的知识。

2023-10-22 15:59:56 202 1

原创 xv6 Multithreading lab

此次lab要实现用户级线程前置知识是要了解xv6的进程调度。

2023-10-14 15:41:18 192 1

原创 xv6 Copy-on-Write Fork Lab

关于usertrap() 注意与lazy allocation 不同 我们得到r_stval()中的 va进而得到的pte是访问了不能写的页面触发的page fault。2.修改usertrap() 让它识别page fault 就是想写入一个未设置 PTE_W 的页面。1.修改 uvmcopy()函数 只是让子进程的pte映射到父进程的物理页面上 而不是分配页面。在kalloc()分配页面的时候就把引用计数加1 kree()会在引用计数为0时才释放页面。而且要把进程的pte上的PTE_W 取消。

2023-10-07 19:24:20 68 1

原创 xv6 lazy allocation

这部分的 hint其实只是给出遇到问题后去怎么解决 总体思路就是实现lazy allocation。只有lazy allocation 才能去unmap没有分配空间而导致pte无效的情况。这里是是把pte为0的情况 和pte无效的情况变成continue。这是跑测试用例的时候发现的 从别的函数中调用的mappages()我建议就是想到一个得修改的地方 写上 然后调试去找新的错误。这是write 和 read 系统调用的底层函数。注意我们这里的虚拟地址是具体的 一定不要舍入。但要考虑到传入的n是负数的情况。

2023-09-20 19:27:23 82 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除