![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OS-xv6
DeadPool loves Star
存储系统方向,热爱操作系统,乐于尝试不同的设计框架
展开
-
xv6 6.S081 Lab9: mmap
xv6 6.S081 Lab9: mmap写在前面实验介绍开始!mmap代码在这里。这是完成的最后一个实验了,因为网络部分在计算机网络实验中有所涉及,就没再做了。只能说,完结撒花吧!感谢xv6陪伴的这一个学期。写在前面都最后一个实验了,相关参考资料就不多提了吧~还是提一下:我的博客OS实验xv6 6.S081 开坑中给出了一些有用的参考资料,大家可以参考。实验介绍老样子,先给实验指导书。本次实验主要完成两个任务:简单的mmap简单的munmap开始!什么是mmap呢?在Li原创 2020-12-23 15:50:40 · 3554 阅读 · 2 评论 -
xv6 6.S081 Lab8: fs
xv6 6.S081 Lab8: fs写在前面实验介绍开始!Large FileSymbolic linksfs代码在这里。我的妈呀,终于要写完了,xv6的file system考察难度并不大,这里强烈推荐我工Ext2 Based File System,这里可以给一下参考代码与参考结果,后面找机会写写博客。写在前面xv6中的file system结构与Ext 2的结构类似,如下图所示:在完成本实验前,推荐阅读xv6 book Chapter 7.9,搞清楚inode的索引结构。与往常一样,原创 2020-12-23 14:04:27 · 2954 阅读 · 0 评论 -
xv6 6.S081 Lab7: Lock
xv6 6.S081 Lab7: Lock写在前面实验介绍开始!Memory AllocatorBuffer Cachelock代码在这里。本次实验理解起来简单,做起来也容易写在前面老样子,在我的博客OS实验xv6 6.S081 开坑中给出了一些有用的参考资料,大家也可以一并参考。实验介绍这里是实验指导书。本次实验主要还是学习内存分配,不过需要注意的是,本实验会和多CPU打交道,因此在内存分配的时候,锁的存在就十分必要了。本实验主要分为两个部分:基于多CPU的内存分配器(Memory原创 2020-12-23 11:46:00 · 4836 阅读 · 5 评论 -
xv6 6.S081 Lab6:Syscall
xv6 6.S081 Lab6: Syscall写在前面实验介绍开始!回答问题Uthread: switching between threadsAlarm完善Alarmsyscall代码在这里。不行了,今天已经快飙到极限了,写了5篇博客了……药不能停,再来一篇!写在前面syscall即system call,系统调用。完成本次实验可以让我们了解诸如:fork()、write()、exec()之类的函数究竟是如何调用的——这些函数在user文件夹中真的找不到原型……和往常一样,我的博客OS实验x原创 2020-12-22 23:36:21 · 1300 阅读 · 0 评论 -
xv6 6.S081 Lab5: cow
xv6 6.S081 Lab4: cow写在前面实验介绍开始!cow代码在这里。完成了lazy后,cow的实现就非常明了了……写在前面经典写在前面????。cow是copy-on-write的缩写(不是母牛┗|`O′|┛ 嗷~~),从字面上来看就是只在要写的时候复制内存。考虑这样一个情况:调用fork()后,子进程是需要复制所有的父进程内存还是说当且仅当子进程或者父进程要写的时候才复制呢?答案显而易见了。这就是cow的核心思想。按照惯例,这篇博客OS实验xv6 6.S081 开坑中给出了另一些有原创 2020-12-22 21:37:52 · 2049 阅读 · 3 评论 -
xv6 6.S081 Lab4: lazy
xv6 6.S081 Lab4: lazy写在前面实验介绍开始!打印页表实现Lazy Allocation修改sbrk()实现Lazy Allocation完善Lazy Allocationlazy代码在这里。我去,lazy改好多文件啊。不过相比于buddy allocator,自认为lazy还是好多了????。写在前面哈哈,老·写在前面了。在完成lazy的时候,一定要有Page的概念,说白了就是一个内存页,emmm,其实就是一片连续内存吧。另外,一定要理解lazy的思想:该分配Page时才分配,原创 2020-12-22 17:53:47 · 1975 阅读 · 0 评论 -
xv6 6.S081 Lab3: alloc
xv6 6.S081 Lab3: alloc写在前面实验介绍开始!任务再描述任务一实现任务二实现Buddy AllocatorCode Thru任务二的实现alloc代码在这里。另外,本文主要是将我的实验报告搬了下来,因此内容难免偏多,可以一边结合代码、一边结合实验指导书食用。写在前面Buddy Allocator是Linux中著名的内存分配器,详情可以参考这里的实验指导书(PS:写得真的非常棒)实验介绍本次实验由两个任务构成:利用bd_malloc 实现文件动态分配优化Buddy Al原创 2020-12-22 16:33:51 · 1114 阅读 · 2 评论 -
xv6 6.S081 Lab2: shell
xv6 6.S081 Lab2: shell写在前面实验介绍开始!Shell代码在这里。写在前面echo a > filegrep deadpool < deadpoolStory.txt | echo > file上述命令展示了Linux中的重定向与管道机制。其中,重定向是将标准输入或输出重定向至一个文件描述符内,例如:echo a > file,echo命令本来是将内容写入标准输出,然后展示到Shell上,但是这里有一个重定向符">",它将echo的标准原创 2020-12-22 14:19:40 · 960 阅读 · 2 评论 -
xv6 6.S081 Lab1: util
xv6 6.S081 Lab1: util写在前面实验介绍开始!sleeppingpongPrimesFindXargs拖了这么久,终于稍微有时间填坑了。今天介绍xv6的第一个实验util。代码在这里。废话不多说,我们开始吧。写在前面参考我的上一篇博客OS实验xv6 6.S081 开坑,这里给出了一些有用的参考资料。实验介绍这是MIT Lab1的官方指导书Lab1 UtilitiesLab1要求我们实现几个Unix中常用的工具函数:sleeppingpongprimesfindx原创 2020-12-22 12:44:14 · 4034 阅读 · 1 评论 -
OS实验xv6 6.S081 开坑
OS实验xv6 6.S081 开坑终于把xv6 2019 6.S081做完了,网络部分没有写,因为有计网实验了。怎么说呢,xv6的坑有点多,能做完多亏了:和我同学ljj交流,参考RedemptionC老哥的博客(他写的非常详细,遗憾的是,他好像没有写mmap),再者就是参考这位老哥的做法(没有源码,写得不是特别详细,不过有借鉴作用,mmap就是借鉴了他的思想)……废话不多说了,直接开始。实验指导首推RedemptionC的博客这位老哥的个人博客xv6 6.S081官网(后面的实验都要参考官网原创 2020-12-03 11:43:35 · 3285 阅读 · 7 评论