Skip to content

Latest commit

 

History

History
57 lines (33 loc) · 2.47 KB

README.md

File metadata and controls

57 lines (33 loc) · 2.47 KB

Operating-System

本repo主要用与记录自己对操作系统的学习,包含两个部分:

  • 操作系统基本概念与原理。这一部分来源于两个方向,一是对MIT 6.s081指导书的学习和解读,二是对Linux内核知识的理解和梳理。(对应main分支)
  • MIT 6.s081 Lab(2020版)。本repo的实现参考了网上一些优秀的案例,代码均可以正确执行。(对应除main分支外的其余分支)。

操作系统基本概念与原理

这一部分主要用于深入理解操作系统。引用MIT 6.S081授课教授和李沐老师的话:

  • 在这门课上,我们将花费大量的时间去探究操作系统的设计目的、思考和权衡。以及它的实现。(原话忘了,这里是记忆滤镜版) ——罗伯特.莫里斯
  • 系统设计是一门艺术。 ——李沐

在学习的过程中参考了一些优秀的书籍和博客:

  • xv6: a simple, Unix-like teaching operating system(6.s081的教材与指导书)
  • xv6手册与代码笔记(对xv6的解读)
  • 现代操作系统:原理与实现(个人觉得国人写的很好的操作系统教材,支持!)
  • Linux内核设计与实现 Ed3

已经整理过的部分(由于水平有限,一是难免有错误或者不严谨的部分,二是大部分都是出于学习,不能算原创,故说整理)(这里对操作系统该重要概念的划分参考xv6):

  • scheduling
    • Linux进程调度概述
    • Linux进程调度-CFS调度器
    • CPU架构-SMP和NUMA

MIT 6.s081 Lab

本repo使用的实验版本主要为2020版(utils为2021)。个人认为该lab的意义在于达到这样一种境界:理解可执行程序在计算机系统上的执行。所以意义在于理解操作系统对程序的支持与限制,程序如何在计算机系统上运行,局限性在于6.s081课程和lab并未涉及程序的编译、链接和装载。

本repo的实现参考了一些优秀的开源实现:

已完成的部分:

  • Utilities

  • System calls

  • Page tables

  • Traps

  • Lazy allocation

  • Copy-on-Write

  • Multithreading

  • Lock