摘要: 主要是一个内核调度alarm,定时中断并输出alarm。 任务一:backtrace 首先取出内核栈栈顶指针fp,对应到xv6的寄存器名是s0。 static inline uint64 r_fp() { uint64 x; asm volatile("mv %0, s0" : "=r" (x) ) 阅读全文
posted @ 2024-12-09 22:48 Thaudmin 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 这个和cow实验联系很紧密,并且cow比这个实验恶心一些的样子。 任务一:sbrk假分配 在sbrk中取消随栈指针变化对内存的分配/回收,只变化相应的栈指针。 这个比较简单,进入sbrk调用的growproc中去掉uvmalloc与uvmdealloc的部分即可。 任务二:Lazy allocati 阅读全文
posted @ 2024-12-09 21:27 Thaudmin 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 这次实验的内容比较杂,但是简单。 任务一:Uthread:switching(线程切换) 为thread添加context来保存寄存器上下文: struct context { uint64 ra; uint64 sp; // callee-saved uint64 s0; uint64 s1; u 阅读全文
posted @ 2024-12-09 21:24 Thaudmin 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 锁实验。锁算是比较简单的一个实验,之前了解过openmp就有了一个类似窃取的概念,那在这个实验里同样也是窃取,只需要对于每个CPU分配的内存块/ cache块进行维护即可。 kmem: 将一个kmem freelist 拓展为 NCPU 个即可。 修改init部分:一个初始化改为NCPU个初始化。 阅读全文
posted @ 2024-12-09 21:13 Thaudmin 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 比较简单的一项实验 大索引(bigfile): xv6的单文件索引有13个,其中只有一个二级索引,文件最大块数目是256+12 = 268块。 现在要给文件索引改成一个二级带一个三级索引,最大块数目就是11+256+256*256 = 65803块,可以容纳下很大的文件了。 先在fs.h中进行相应的 阅读全文
posted @ 2024-12-09 20:21 Thaudmin 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 实现两个功能:分别是mmap与munmap,将文件映射到内存当中,并为一个线程记录他管理的文件所在的页表目录。 函数原型如下: char* mmap( char* addr, int len, int prot, int flags,int fd, int off); int munmap( cha 阅读全文
posted @ 2024-12-09 20:04 Thaudmin 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 最重量级的一个,做完这个后面感觉浑身轻松。学校魔改版本的比这个还难一些。 1 Print a page table (easy) easy难度,打印页表函数,在后面的debug部分很有用。 先找到vmprint应该被执行的地方,在xv6的exec函数里对进程进行判断,如果pid为1说明是初始进程应该 阅读全文
posted @ 2024-11-28 21:57 Thaudmin 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 实验六:fork懒更新页表。 这次优化的内容是针对fork时内存复制的优化。在fork后,子进程很可能只用到了父进程中内存资源的一小部分,但是却完整地拷贝了父进程的内存,除那一小部分,剩下的资源都被浪费掉了,凭空增加了开销。 这就很不合理,我们结合提示想想应该怎么减少不必要的开销。有了实验五懒更新的 阅读全文
posted @ 2024-11-24 00:22 Thaudmin 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 写在前面:这个系列的博客是写给xv6 2020的,笔者因为实验课补交作业挂了平时分,迫不得已把xv6全部写(抄)完……在这个过程中借鉴了很多大佬的代码,结合去年打操作系统的失败经历,感觉对自己的提升也非常大,就在这里记录一下写每个实验的过程。 阅读全文
posted @ 2024-11-24 00:01 Thaudmin 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 闲来无事关注了一下数值积分,这里是对数值积分的一点补充。 # 1.机械求和法 我们由积分中值定理可以知道: $E=mc^2$ 阅读全文
posted @ 2024-09-12 15:38 Thaudmin 阅读(20) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示