0. 简介

操作系统是计算机科学中十分重要的一门基础学科,是一名计算机专业毕业生必须要具备的基础知识。但是在学习这门课时,如果仅仅把目光停留在课本上一些关于操作系统概念上的叙述,并不能对操作系统有着深层次的理解。必须要结合动手实践,才能真正掌握核心的知识。 
MIT的操作系统课程6.828是一门被广泛好评的入门课程。它最重要的特点就是它实践第一的教学原则。在这门课程中会涉及到非常丰富的实验,也会有非常多的动手机会。而且授课者更是亲自构建了一个简化的基于Unix内核的操作系统xv6。所有的实验都是在这个操作系统上完成。虽然它功能很简单,但是它能够帮助我们真正的了解操作系统在做什么。 
所以这一系列博文就是针对6.828这门课来展开的,我将以博客的形式记录自己学习6.828的过程。为了能够更好的掌握知识,以及为了能够服务于广大学习6.828的同学们,我将进自己最大的努力去总结,记录。在我们这系列博文中会包括以下几个内容:

  • 所有实验的实验报告(Lab)
  • 所有实验中的练习(Exercise)
  • 所有的小作业(Assignment)
  • lecture中(book_xv6)中一些比较重要的知识点的翻译总结
  • 一些其他的重要相关知识的总结(Appendix)

1. 博文格式的说明

1.1 博文名称

为了方便大家查找想要查看的内容,我为我的博文定义了一个命名规则:

  博文标号. 博文分类 : 博文题目

比如 1. Lab 1 : Booting a  PC

其中1,代表是第一篇博文,Lab 1,代表这篇博文讲述的是实验1的实验报告,Booting a PC代表的是这篇博文的题目。

1.2 博文分类

我的博文根据讲述的内容不同可能会划分为如下几个种类,下面的表格列出所有种类的分类名,以及它所包含的内容

    博文分类名 博文内容
       Lab     代表这篇文章是关于某个实验的记录
    Exercise     代表这篇博文是对某个实验中的某个exercise的解答,Exercise 3.1,就代表是Lab 3的Exercise 1
  Assignment     代表这篇博文是某个小作业的解答
    Lecture      代表这篇博文是lecture(book_rev8)中某个重要知识点的总结翻译
   Appendix     代表这篇博文是对于一些没有在lecture中出现的重要知识点的总结

这里面有一点要注意,因为每一个实验的内容都很多,所以我们不会把一个实验的所有部分都放在一篇博文中,所以我们对于Lab这类博文会再细分。因为每个Lab都会有好几个Part,所以我们会按照Part来上传博文,所以这类博文的名字如下:

  1. Lab 1 Part 1: PC Bootstrap

代表的含义就是实验1的Part1部分的实验报告。

2. 关于资源

MIT 6.828的课程资源其实都可以在他们的官网上下载到:https://pdos.csail.mit.edu/6.828/2014/index.html,但是由于被墙掉了,可能大家会访问不到,所以为大家提供了下面的途径

大家可以关注我的github:https://github.com/fatsheepzzq/6.828mit

这里面包含了我的所有完成的代码,还有关于xv6操作系统的源码,还有所有大家需要的资源,不过由于我也不断的学习中,所以这个里面的内容会有一些变动,比如添加一些新的资源,添加新的报告等等。

所以建议大家在github上watch一下我的工程,这样的话,就可以第一时间获取通知了!

谢谢大家的支持!

2.1 获取资源的方法

因为所有的资源都在github上,所以必须要求大家使用github来获取,而git也是6.828课程中非常强调的要掌握的技术之一,所以让大家采用这种方式来获取资源也是为大家之后的学习着想。

下面简答介绍下如何获取资源。

首先看一下在github中这个工程的目录,我的这个工程6.828mit包含两个目录:

\lab:这个目录下面存放着所有的xv6源码,以及所有的实验,作业的报告。每个实验或作业都对应一个文件夹。

    实验的文件夹名为"LabX"的形式,X代表第几个实验。

    作业的文件夹名为"AssignmentX",X代表第几个作业。

    每个文件夹中包括一个英文版的实验描述或作业描述,这是MIT官方提供的。然后有些练习涉及到编程,那么源文件也在这个目录下,每个源文件会有两份,其中一份是没有完成的原版,一份是我完成的,命名的区别就在于完成版后面会多加一个complete。

    比如 作业1中有一个源文件,名字sh.c,所以原版就是sh.c,而我完成的版本就是 sh_complete.c

    其余的文件夹都是xv6的源码。

\resources:

  这里面存放着所有和课程相关的引用书籍,都是授课者所推荐的。我为每个资源都标了号,具体在实验中要用到哪个资源,看标号就可以找到了。

  比如这门课程的课本(lecture)就是book-rev8,资源号为003.

在windows下获取资源:

  1. 首先你必须先安装git到你的电脑中,至于怎么安装git,我在这里就不赘述了,你可以在网上搜索,推荐 "廖雪峰的git教程",很简洁明了。

  2. 安装好git之后打开cmd

  3. 选择你想要把整个工程放在哪里,来到那个目录下

  4. 输入git clone https://github.com/fatsheepzzq/6.828mit.git 即可

   

  上图中就是完成了把工程clone到E:\Code目录下的操作。

在Linux下获取资源:

  操作同windows一样,也是要先安装git,然后打开一个terminal,并且输入

  git clone https://github.com/fatsheepzzq/6.828mit.git

  即可

如果工程有更新的话,比如当我上传新的实验报告时,你可以通过下面的方法获取最新的更新:

  1. 如果在windows下,打开cmd,如果在linux下,打开terminal

  2. 来到工程根目录下,比如E:\Code\6.828mit\

  3. 输入git pull,即可。

如有任何问题,或有发现我的错误,欢迎大家发送到我的邮箱~

  zzqwf12345@163.com

最后多谢大家的支持!

MIT 6.828 JOS学习笔记0. 写在前面的话的更多相关文章

  1. MIT 6.828 JOS学习笔记2. Lab 1 Part 1.2: PC bootstrap

    Lab 1 Part 1: PC bootstrap 我们继续~ PC机的物理地址空间 这一节我们将深入的探究到底PC是如何启动的.首先我们看一下通常一个PC的物理地址空间是如何布局的:        ...

  2. MIT 6.828 JOS学习笔记1. Lab 1 Part 1: PC Bootstrap

    Lab 1: Booting a PC Part 1: PC Bootstrap 介绍这一部分知识的目的就是让你能够更加熟悉x86汇编语言,以及PC启动的整个过程,而且也会首次学习使用QEMU软件来仿 ...

  3. MIT 6.828 JOS学习笔记18. Lab 3.2 Part B: Page Faults, Breakpoints Exceptions, and System Calls

    现在你的操作系统内核已经具备一定的异常处理能力了,在这部分实验中,我们将会进一步完善它,使它能够处理不同类型的中断/异常. Handling Page Fault 缺页中断是一个非常重要的中断,因为我 ...

  4. MIT 6.828 JOS学习笔记16. Lab 2.2

    Part 3 Kernel Address Space JOS把32位线性地址虚拟空间划分成两个部分.其中用户环境(进程运行环境)通常占据低地址的那部分,叫用户地址空间.而操作系统内核总是占据高地址的 ...

  5. MIT 6.828 JOS学习笔记15. Lab 2.1

    Lab 2: Memory Management lab2中多出来的几个文件: inc/memlayout.h kern/pmap.c kern/pmap.h kern/kclock.h kern/k ...

  6. MIT 6.828 JOS学习笔记10. Lab 1 Part 3: The kernel

    Lab 1 Part 3: The kernel 现在我们将开始具体讨论一下JOS内核了.就像boot loader一样,内核开始的时候也是一些汇编语句,用于设置一些东西,来保证C语言的程序能够正确的 ...

  7. MIT 6.828 JOS学习笔记7. Lab 1 Part 2.2: The Boot Loader

    Lab 1 Part 2 The Boot Loader Loading the Kernel 我们现在可以进一步的讨论一下boot loader中的C语言的部分,即boot/main.c.但是在我们 ...

  8. MIT 6.828 JOS学习笔记17. Lab 3.1 Part A User Environments

    Introduction 在这个实验中,我们将实现操作系统的一些基本功能,来实现用户环境下的进程的正常运行.你将会加强JOS内核的功能,为它增添一些重要的数据结构,用来记录用户进程环境的一些信息:创建 ...

  9. MIT 6.828 JOS学习笔记12 Exercise 1.9

    Lab 1中Exercise 9的解答报告 Exercise 1.9: 判断一下操作系统内核是从哪条指令开始初始化它的堆栈空间的,以及这个堆栈坐落在内存的哪个地方?内核是如何给它的堆栈保留一块内存空间 ...

随机推荐

  1. MongoDB 分片的原理、搭建、应用

    一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这 ...

  2. java wait()和notify()、notifyAll()

    图见<JAVA并发编程的艺术>P98-101 这三个方法都是java.lang.Object的方法,用于协调多个线程对共享数据的存取,必须在synchronized语句块中使用!这三个方法 ...

  3. centos6.5Xen4.2安装

    官方安装文档:http://xen.crc.id.au/support/guides/install/ 一.环境说明 1. 本文采用CentOS6.5 x64,安装开发包及开发工具. 2. 关闭sel ...

  4. Effective C++ -----条款02:尽量以const, enum, inline替换 #define

    class GamePlayer{private: static const int NumTurns = 5; int scores[NumTurns]; ...}; 万一你的编译器(错误地)不允许 ...

  5. 如何让VS2013编写的程序

    总体分c++程序和c#程序 1.c++程序 这个用C++编写的程序可以经过设置后在XP下运行,主要的“平台工具集”里修改就可以. 额外说明:(1)程序必须为Dotnet 4.0及以下版本.(XP只支持 ...

  6. List,Set,Map用法以及区别

    List,Set,Map是否继承自Collection接口? 答:List,Set是,Map不是. 如图: Collection ├List │├LinkedList │├ArrayList │└Ve ...

  7. 【leetcode】First Missing Positive(hard) ☆

    Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0]  ...

  8. nmake geos

    参考:http://blog.sina.com.cn/s/blog_82a2a7d301010f87.html 1 打开visual  studio command prompt 该工具位于 开始程序 ...

  9. 解决ERROR 2003 (HY000): Can't connect to MySQL server on

    方案一: .打开cmd; .输入命令:net stop +MySQL的服务名,停止MySQL服务,如果未启动MySQL服务则可跳过该步骤: .输入命令:mysqld --remove卸载MySQL服务 ...

  10. oracle TIMESTAMP日期相减

    select extract(day from inter) * 24 * 60 * 60 + extract(hour from inter) * 60 * 60 + extract(minute ...