GithubHelp home page GithubHelp logo

mit6.s081's Introduction

简介

因为学习MIT6.824,偶然知道了MIT6.S081这门课程。MIT6.S081这门课程的标题是Operating System Engineering,主要讲的就是操作系统。授课教授是Robert Morris和Frans Kaashoek,两位都是非常出名的程序员。

课程是基于一个类似于Unix但是简单的多的教学操作系统XV6来讲解,虽然不是原汁原味的Linux,但是对于理解Linux的工作方式和结构是足够了。与MIT6.824一样的是,这门课程是全英文,甚至英文字幕都没有。对于国内的同学来说,如果英文没有足够好,很难较好的理解这门课程。因此我计划将这门课程翻译成中文文字版。我将在语句通顺的前提下,尽量还原课程的内容,希望可以帮助大家学习到这门课程。如果你的英语不是那么好,建议阅读完文字再去看视频相关的课程。

目前MIT的这门课还没有上完,按计划是在12月初完成,具体的内容可以参考【1】。每一节课都在80分钟左右,大概会有6-9个知识点,我会按照独立的知识点将每节课拆分成6-9个小节。

----------------------------------------------------------------------------------

2021-04-24 更新:

今天终于把问答课以外的20节课程都翻译完了,总共大概有35万个字,花费时间大概在200个小时左右。

这门课程相比6.824来说更像是一个整体。6.824更多的是在理解和设计分布式系统时的一些技术和技巧,而6.S081介绍了Unix风格操作系统的各个方面(虽然这两个课没什么关系( ̄. ̄),但是因为是连着翻译的难免会有对比)。

实际中的操作系统会更加的复杂,但是通过这门课程的学习基本上可以对操作系统有一个全面的认识。经过翻译的过程,我自己也把之前的一些知识盲区补全了。这门课程虽然只是一个MIT的本科课程,但是我推荐给所有从事IT相关工作的同学,掌握了操作系统对于面试,debug,写代码都是有好处的。

最后,希望我的翻译可以帮助到你。

【1】https://pdos.csail.mit.edu/6.828/2020/schedule.html

如果

  • 你发现了翻译的错误,可以向关联的github提交PR
  • 你觉得我做的还不错,可以关注我的知乎,并给我一个点赞。
  • 还想学习其他IT相关知识,我还做了一些其他的翻译

声明

此次翻译纯属个人爱好,如果涉及到任何版权行为,请联系我,我将删除内容。文中所有内容,与本人现在,之前或者将来的雇佣公司无关,本人保留自省的权利,也就是说你看到的内容也不一定代表本人最新的认知和观点。

mit6.s081's People

Contributors

chen-zhuohan avatar elfisworking avatar gitbook-bot avatar gwzlchn avatar huihongxiao avatar jiacheo avatar jinjiezhao avatar liudoo avatar mxzel avatar ruokeqx avatar seeflood avatar techlarry avatar wurongfeng1995 avatar xclwt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mit6.s081's Issues

不太理解这一部分什么意思

在20.10这一章中,有这么一段话

Cody、Robert和我在实现这个项目的过程中学到的一件事情是,任何一种编程语言就是编程语言,你可以用它来实现内核,实现应用程序,它并不会阻止你做什么事情。

这里加粗的部分不太理解是什么意思。

11.4 xv6线程切换 这一节有个问答有疑问

截屏2021-09-10 下午5 28 43

跟翻译没有关系哈。这里Robert说可以保存在trapframe中,我感觉不对吧?trapframe在用户地址空间,swtch.S又并没有像trampoline那样kernel,user同映射。如果保存在trapframe,需要切换page table,但是swtch.S的执行就崩掉了

(PS: 最后感谢有这么一个项目,加速了我学习的进度)

lec08: 8.2 也许是个小翻译问题

在 8.2 Lazy page allocation节中:

当调用sbrk时,它的参数是整数,代表了你想要申请的page数量。sbrk会扩展heap的上边界(也就是会扩大heap)。

sbrk的参数含义好像是想要allocate或shrink的字节数,不是page数,只是xv6只会以page为单位分配和释放。

Lec13.4 文字错误

原文有这么一段

uartwrite在最开始获取了sleep的condition lock,并且一直持有condition lock知道调用sleep函数。

这里的知道应该是直到

lec05 5.4 RISC-V寄存器

参考链接中这样描述Caller和Callee寄存器

Caller-saved registers (AKA volatile registers, or call-clobbered) are used to hold temporary quantities that need not be preserved across calls.

For that reason, it is the caller's responsibility to push these registers onto the stack or copy them somewhere else if it wants to restore this value after a procedure call.

在课程翻译中,翻译如下:

表单中的第4列,Saver列,当我们在讨论寄存器的时候也非常重要。它有两个可能的值Caller,Callee。我经常混淆这两个值,因为它们只差一个字母。我发现最简单的记住它们的方法是:
Caller Saved寄存器在函数调用的时候不会保存
Callee Saved寄存器在函数调用的时候会保存

和参考链接中似乎有冲突

关于字幕可否参考问题

肖总您好 最近想翻译下视频用于发布短视频平台 请问下可否参考下您的字幕 可能会有点重回 但是视频简介方面会写您的地址作为参考来源 这样可否 如果不够请问下用什么方式标明更好呢

Lec14.2 文字错误

原文有这么一段

同时我们需要提供一些标志位,现在我们还太关心标志位所以我会忽略它。

最后是不是应该是,我们还太关心标志位。似乎少了一个字。

6.4节的翻译问题

原文中有这么一段话

这里的控制是通过STVEC寄存器完成的,这是一个只能在supervisor mode下读写的特权寄存器。在从用户空间进入到内核空间之前,内核会设置好STVEC寄存器指向内核希望trap代码运行的位置。

这里说STVEC寄存器是内核设置的,那么是不是应该是“从内核空间进入到用户空间之前,内核会设置好STVEC寄存器”?

还有一处可能有问题的地方

切换page table的代价比较高,如果ecall打包完成了这部分工作,那就不可能对一些系统调用进行改进,使其不用在不必要的场景切换page table。

这里的这个不可能似乎有些不通畅?

Typo in 14.4 inode

Lec 14 File systems (Frans) - 14.4 inode 中的第一处学生提问(不是学生回答)中的”注“有误,应为4GB。

image

Lec16.7 文字问题

原文是

logging系统需要能区分一个以魔法数字作为起始的descriptor block和一个以魔法数组作为起始的data block。

这里的魔法数组,是否应该是魔法数字

9.4对于stvec寄存器的描述似乎有误

9.4对stvec的描述:“STVEC寄存器,它会保存当trap,page fault或者中断发生时,CPU运行的用户程序的程序计数器,这样才能在稍后恢复程序的运行。”
保存触发trap的用户指令的地址好像是SEPC寄存器。STVEC寄存器应该是保存trap handler(uservec、kernelvec)的地址。trap返回时,恢复PC用的应该是SEPC的值吧。

Lec15.8 文字问题

原文是

其次检查commiting状态,当前不可能在commiting状态

这里t应该双写加ing

以下两个应该是同一个错误

(log.understanding == 0)
注,这里的understanding有点迷,它表示的是当前正在并发执行的文件系统操作的个数,

这里是不是应该是outstanding?因为上文中老师在讲outstanding的数量问题。

关于内核页表的问题

感谢大佬的翻译和讲解,我想问大佬几个问题
1.就是课堂中,kernel page table将这个虚拟内存地址翻译成与之等价物理内存地址,这个等价是指什么?
2. “因为只有trampoline中代码是同时在用户和内核空间中映射”这句话如何理解

Lec15.4 文字错误

原文中有

如果block 45不需要写入到磁盘中的block列表中

这里的“在”是否打错了,应该是“再”?

Lec16.5 文字问题

原文为

在Linux的文件系统中,我们需要每个系统调用都表明一些列写操作的开始和结束。

这是是否应该是一系列

顺便这句话有些语义上的问题。声明 似乎比 表明 更加合适。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.