# MIT6.828 **Repository Path**: rcary/mit6.828 ## Basic Information - **Project Name**: MIT6.828 - **Description**: 个人写的麻省理工6.828实验作业代码 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 14 - **Forks**: 5 - **Created**: 2022-07-12 - **Last Updated**: 2025-10-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MIT6.828 [让OS无秘密] ### 介绍 大二暑假时完成了麻省理工6.828-- 实现一个**操作系统内核**。 **我已经在lab的相关注释、代码进行了翻译和代码的相关解析,供大家学习和讨论,如发现有误的地方 请随时指正!** 由于最近正想深入了解OS,于是找到了828这门神课!通过这门课学习了OS,真正的体验了与OS零距离的实践操作,更加深入理解了OS的美妙之处~(真是羡慕mit的学生啊 太爽了) 基于**麻省理工学院**的6.828主要任务分为: - #### LAB1 - 了解汇编语言以及Boot启动和加载内核的过程 相关控制寄存器位数的作用,最后完成一个print函数的小代码. - #### LAB2 - 了解xv6的内存管理结构,并对JOS的虚拟地址映射的页表、物理内存分配器...相关细节进行实现 - #### LAB3 - 了解xv6中的用户态以及内核态之间的环境关系,并对各种中断、进程分配、进程管理...具体细节进行实现 - #### LAB4 - 了解xv6中的多环境(进程)运行,并对多环境之间的转换、进程间通信、自旋锁...相关细节进行实现 - #### LAB5 - 了解xv6中的文件系统,并对文件系统的相关细节操作进行实现 #### 项目难点 以下是准备工作的需要注意的地方: 1. 英语,从视频到文档再到代码注释全英文(真是对英语一次磨炼的好机会..) 2. C语言基础需要扎实,写完这个 C语言编程能力蹭蹭上涨..(由于Java选手 而这的指针真的是很容易把我绕晕,不过语言具有很强的通用性 好在java学得不错 这里上手很快) 3. 对操作系统要有扎实的基础(当然对于我是没学过OS 直接刚了 然后时间就比较久) 4. 实操性很强,需要具备较强的Coding能力(可以量化为:力扣上200题以上) 项目中的实际难点: 1. Lab1-5都是具有关联性,任何一个地方代码的错误都可能导致BUG得找上好几天,最后发现原来是之前的lab写错了... 2. Lab2的 **内存管理** ,需要对页表理解较深 然后 指针要学会灵活变通 3. Lab3的需要手动实现一些异常和中断处理(用户态与内核态的转换 eg: 缺页中断,系统调用..),以及对进程的分配管理. 4. Lab4的多进程运行,关乎于 **锁** 的实现以及 **锁** 应该何处位置 还有 调度算法的实现(mit算是放水了 让大家实现时间片轮询的方法 不过有想法的同学可以实现优先级、多队列..等进阶的调度算法) #### 软件架构 基于x86架构处理器完成OS内核 #### 安装教程 1. 根据官网完成环境安装 https://pdos.csail.mit.edu/6.828/2018/schedule.html 2. 也可根据个人写的安装教程:https://blog.csdn.net/Rcary/article/details/125547980?spm=1001.2014.3001.5502 #### 参与贡献 1. 感谢Goole Baidu Github,让我在头疼 想不出的时候 给我指引 ,永远是我前方的灯塔! #### 特技 1. 扎扎实实码出每一行 就是你的特技~