MIT 6.s081 Lab11 networking MIT 6.s081 Lab11 networking
本实验是整个6.s081的最后一个实验,而且跟xv6的关系也不大,要求你阅读E1000的硬件开发手册然后完善一个网卡驱动,实现e1000_transmit()和e1000_recv()这两个函数。 因为Hint给的非常详细,跟着Hint一步
2022-03-24
MIT 6.s081 Lab10 mmap MIT 6.s081 Lab10 mmap
本实验只有一个hard级别的任务,基本可以算是最综合的任务了。要求是实现mmap()和munmap()这两个系统调用。 什么是mmap? mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进
2022-03-24
MIT 6.s081 Lab9 File system MIT 6.s081 Lab9 File system
根据《OSTEP》划分的三个部分,Lab9来到了持久性这一环节。本实验的内容是对文件系统进行一些研究。 通过阅读xv6book的Chapter 9,我们可以了解xv6的文件系统是如何实现的。本实验总共有两个任务。 Large Filesxv
2022-03-24
MIT 6.s081 Lab8 Locks MIT 6.s081 Lab8 Locks
Lab8是对锁相关的知识进行探讨。前置知识是xv6book的第六章以及3.5,8.1~8.3这些对物理内存分配和文件系统Buffer Cache相关内容。 本次实验有两个任务,并且任务间完全独立,可以乱序做。不过核心思想都是减小锁的粒度来减
2022-03-13
MIT 6.s081 Lab7 Multithreading MIT 6.s081 Lab7 Multithreading
暂时结束了对操作系统虚拟化方面的一些探讨,Lab7和Lab8主要是对操作系统并发的专题学习。其中Lab7的主题是多线程。 在xv6中,线程调度的过程还是很值得探讨的。 xv6中线程调度的过程大概如下所示: 首先是用户线程接收到了时钟中断,
2022-03-13
MIT 6.s081 Lab6 Copy-on-Write Fork for xv6 MIT 6.s081 Lab6 Copy-on-Write Fork for xv6
Lab6和Lab5比较相似,都是利用页错误的一些实现,这个Lab是要我们实现写时复制(Copy on Write)。 在 shell 中执行指令时,首先会 fork 一个子进程,然后在子进程中使用 exec 执行 shell 中的指令。在这
2022-03-07
MIT 6.s081 Lab5 xv6 lazy page allocation MIT 6.s081 Lab5 xv6 lazy page allocation
疯狂补票博客ing Lab5涉及到了页错误机制的一个应用——懒分配,通俗的讲就是程序申请内存的时候,操作系统并不直接分配内存,而是只增大进程的内存空间字段值,当真正需要用到申请的内存时,因为这部分内存没有分配,所以会引发页错误中断从而陷入内
2022-03-07
MIT 6.s081 Lab4 traps MIT 6.s081 Lab4 traps
Lab4考察的主要内容是陷阱有关的内容,前置知识是xv6book的第四章和kernel/trap.c,kernel/trampoline.S两个源码文件,顺便还需要复习一下Lab2的一些知识。 RISC-V assembly这个任务是让你简
2022-03-07
MIT 6.s081 Lab3 pagetabel MIT 6.s081 Lab3 pagetabel
过年耽误了不少时间,再加上看OSTEP,Lab3就一直拖到了现在。 注意:ArchLinux下按照官网的Guide安装的环境里qemu的版本是更新过的,2020版本的实验执行qemu后会导致挂起,前两个实验因为用的2021的环境所以没发现这
2022-02-14
MIT 6.s081 Lab2 syscall MIT 6.s081 Lab2 syscall
咕咕了一周多,今天总算把Lab2做完了。 Lab2主要加深对系统调用的理解,做完确实学到了很多东西。 这个Lab有两个任务:添加一个系统调用trace和系统调用sysinfo,实现的重点也和Lab1的写代码变成了理解内核代码。资料方面需要读
2022-01-27
MIT 6.s081 Lab1 util MIT 6.s081 Lab1 util
寒假打算一边打ASC一边学点操作系统,于是打算开始做6.s801了。版本是2020,源代码和环境配置在官网上写的很清楚,就暂时不写了。 Lab1是简单的Warmup以及对管道,多进程的基本应用,难度不算太大,顺便回忆一下当时写的shell和
2022-01-19
Hexo简易搭建教程 Hexo简易搭建教程
1 安装sudo pacman -S nodejs npm sudo npm install -g hexo-cli echo 'PATH="$PATH:./node_modules/.bin"' >> ~/.profile
2021-08-13