前言 最近绝大多数的空闲时间都拿来锤15-445了,很久没动6.S081。前几天回头看了一下一个月前锤完的Lazy Allocation,自己写的代码几乎都不认识了.......看来总结之类的东西最好还是趁着热乎的时候写啊。 不过15-445的内容实在太多了,我只是为了锤Lab粗略的看了看课件 ...
虽然Copy on Write原理是很显而易见的,但是在具体实现中需要处理的细节特别多,经常会在莫名其妙的地方出现错误,再加上使用gdb调试内核本身就是一件不容易的事情,所以这个Copy on Write实验还是很有难度的。首先来看一下什么是copy on write,两张图解释: .uvmcopy 根据提示,首先要修改uvmcopy ,把子进程的虚拟地址映射到父进程的物理页表上,同时清理父子进 ...
2021-11-19 22:43 0 770 推荐指数:
前言 最近绝大多数的空闲时间都拿来锤15-445了,很久没动6.S081。前几天回头看了一下一个月前锤完的Lazy Allocation,自己写的代码几乎都不认识了.......看来总结之类的东西最好还是趁着热乎的时候写啊。 不过15-445的内容实在太多了,我只是为了锤Lab粗略的看了看课件 ...
目录 实验总结 0. 实验准备 0. 引用计数 1. 实现基于 cow 的 uvmcopy 2. 处理页面异常 4 & 5. 各种检查 实验总结 本次实验用时约 11 个小时。 收获是对 Copy-on-Write 机制 ...
代码在github上。总体来说如果理解了COW机制的话,这个实验的完成也没有很复杂。 这一个实验是要完成COW(copy on write)fork。在原始的XV6中,fork函数是通过直接对进程的地址空间完整地复制一份来实现的。但是,拷贝整个地址空间是十分耗时的,并且在很多情况下,程序立即调用 ...
前言 这个星期睡眠和精神状态一直比较差,6.824很多论文没时间回顾,15-445的Lab2又耗费了我巨大的精力,实在写不动代码了。只能写点回顾总结之类的东西。我很久之前就想总结一下xv6中关于进程的知识,后来发现这涉及的范围实在是太大了(废话,这在哪本OS教材里都能占完整的一章),而且无论如何 ...
RISC-V assembly Which registers contain arguments to functions? For example, which register holds 13 in main's call to printf ...
mmap mmap就是把指定的文件fd映射到进程内存空间的某一个部分,映射建立之后,进程读写这块内存就像是在读写文件一样。按照提示来做实验: Implement mmap: find an unused region in the process's address space ...
Memory allocator xv6是使用linked list来管理空余内存块,我们先看一下kalloc.c究竟是怎么工作的: 首先是2个结构体,匿名结构体kmem就是我们访问空余内存的凭据了,kmem里面有一个自旋锁和一个链表头部指针 ...
i-node xv6文件系统是使用inode来管理文件,先上一张图来解释一个文件的inode是怎么管理它的磁盘块的: xv6文件系统里定义了2个版本的inode。一个是硬盘上面存储的版本struct dinode ...