首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
实现一个精简的操作系统 xv6
bigboss2063
创建于2023-04-19
订阅专栏
在学习 MIT 6.s081 lab 的时候做的一些总结笔记。
等 5 人订阅
共11篇文章
创建于2023-04-19
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
MIT 6.s081 Lab11: networking
本次 lab 要给 xv6 实现网卡(Qemu 模拟 E1000 网卡)驱动。任务说明书里给了一大段说明以及 E1000 的操作手册。
MIT 6.s081 Lab10: mmap
这次 lab 是要给 xv6 添加 mmap 和 munmap 系统调用。来获得操作文件时性能的提升。
MIT 6.s081 Lab9: file system
本次 lab 感觉就是对 xv6 文件系统代码进行熟悉,我们要扩充 xv6 支持的最大文件大小并且给 xv6 实现软链接。
MIT 6.s081 Lab8: locks
本次 lab 是要重新设计 xv6 的内存分配器和块缓存来获取更高的并行性。要增加并行性通常要设计到更改数据结构和上锁策略来减少竞态。
MIT 6.s081 Lab7: Multithreading
本次实验要实现用户级线程之间的切换,使用多线程来加速程序,并实现屏障。 在听课的时候感觉这次实验是要实现内核级线程,让一个进程中的多个线程可以同时运行在多个 CPU 上面,感觉有点害怕。
MIT 6.s081 Lab6: Copy-on-Write Fork for xv6
给 xv6 实现 Copy-on-Write fork 节约复制内存的时间,只复制要修改的 page,并且可以很大程度上避免复制完后调用 exec 的浪费。
MIT 6.s081 2020 Lab1: Xv6 and Unix utilities
这个 lab 是用来熟悉 xv6 和它的系统调用的,就是用它的系统调用来实现一些小工具。在实现之后要将程序加入 Makefile 里的 UPROGS 中才能执行。
MIT 6.s081 2020 Lab3: Page Table
Lab3 就是要给每一个进程都添加一个自己的内核页表,并且把用户页表中的映射给复制进去,在进程进入内核态之后,可以使用进程中的内核页表,通过硬件来进行直接寻址。
MIT 6.s081 Lab4: Traps
This lab explores how system calls are implemented using traps.
MIT 6.s081 Lab5: xv6 lazy page allocation
xv6 中 sbrk 的实现默认是 eager allocation,也就是一旦用户进程申请了内存,那么内核马上就会分配。
MIT 6.s081 Lab2: System Calls
这个 lab 是让我们在 xv6 中添加两个新的系统调用,来熟悉系统调用是怎么工作的,还有阅读内核代码,后续的 lab 中会添加更多的系统调用。