分类: MIT6.828

9 篇文章

lab3 part B
环境 ubuntu 20.04 64位系统 正文 现在你的内核有了最基本的中断处理能力,我们还会进一步的对它升级使得它能够提供依赖于异常处理的重要的操作系统原语。 Handing Page Fault page fault,第14号中断(T_PGFLT),是一个非常重要的中断贯穿在本次lab以及下一次lab。当处理来处理page fault的时候,…
lab3 Part A:User Environments and Exception Handling
环境 ubuntu 20.04 64位系统之前有些实验是在xv6的源码上操作的,发现20.04无法运行。后来发现lab还是可以在20.04正常做的,就把环境切换到本机上了。 lab地址:mit 6.828 lab3 废话 这次实验感觉难做了不少,参考了别人不少的代码。毕竟代码是别人写的,要花心思去理解别人的思路。注释里面的提示我也觉得有点模棱两可。…
Lab2 part3 Kernel Address Space
环境 ubuntu 20.04 64位系统 lab2地址:点击我查看lab2 正文 lab2说实话还是挺难的,这也首先归因我对于页式内存了解有点不到位。在实验中走了一些弯路。不过还是很努力地把lab3的内容都做完了。废话不多说,开始干! 下面这段还是翻译下lab2 part3的一些原文。JOS 将32bit的线性地址空间划分为两个部分。用户使用低地…
Lab2 part2 Virtual Memory
环境 Ubuntu20.04 64位系统lab2地址:lab2 正文 本次实验需要我们对paging有一个比较深入的了解,如果只是一知半解可能连代码都不知道什么意思。所以在正式开始代码实验之前,我们先来介绍一下一些预先需要的知识。在part1当中,主要做的就是对物理内存分页,我们使用了PageInfo 和一个page_free_list来管理空闲的…
Lab2 part1 Physical Page Management
环境 Ubuntu 20.04 64 位系统Lab的地址:点击这里去Lab2 准备工作 因为在Lab1当中代码我写了很多注释在里面,并且还有修改了一些代码。所以我重新clone一份lab1。然后执行下面的命令就行: git checkout -b lab2 origin/lab2 git merge lab1 这样一来应该就看到lab2新的一些文件…
Lab1 The Kernel
环境 ubuntu 20.04 64系统 本文大部分内容翻译mit6.828 Lab1 part3的内容,原地址点击这里课程主页:MIT6.828-2018 Fall 正文 本篇是MIT6.828 Lab1 的part3的内容。经过了part2对boot loader的深入研究以及知道了如何去加载一个elf文件,现在我们终于可以来看看JOS的ker…
Lab1 The Boot Loader
环境 ubuntu 20.04 64位系统 part2的内容是从./lab/obj/kernel.img中引导我们的系统JOS,本文很大一部分内容都是翻译Lab1 课程的原地址:MIT-6.828 预先需要的知识: 虽然mit这课提供了相关知识,但是我个人觉得,对保护模式有过实操以后,看相关的保护模式代码确实很容易懂很多。 汇编,要知道基本的语句是…
Lab1 PC Bootstrap
环境 ubuntu 20.04 64位 正文 这部分的目的是为了让我们了解x86汇编语言和PC引导的过程,逐渐熟悉QEMU和QEMU/GDB的调试。在本次lab中不需要写任何代码,但是需要lab中的各个问题。 Getting Started with x86 assembly 如果你已经熟悉x86汇编,那么就最好了。lab页面给的那个关于x86汇编…
MIT6.828-2018学习心得
过去很长一段时间都想自己写一个操作系统,走了不少弯路。花了很多时间在学习《30天自制操作系统》,学到后面发现作者讲述的有点绕了,代码也没有讲明白。到最后还是选择了MIT6.828,这门课的难度比较大,要求对x86保护模式下的变成要比较了解。慢慢跟下来,还是受益匪浅的。我没有做完所有的实现,我就做到了lab5。不知道何种原因,lab6代码无法运行,所…