(一)Computer Systems(OS)计算机系统学习路径
顺序 | 资源 | 知识分类/使用方法 | 链接和介绍 |
我的建议是:不管你怎么学,当你发现要从一门课程A跳到另一个课程B的时候,不要掉到B里面太深,只看B提供什么功能,把这些功能看做B提供的抽象。比如,当年你在学《数据库》时发现必须要了解进程概念,知道操作系统提供进程的功能就好,知道这是操作系统提供并行运算的机制就好,知道每一个进程随时都可能被另一个进程抢占CPU就好,不需要一头扎进《操作系统》里面去搞清楚进城如何实现的,你把操作系统提供的功能当做一个『抽象』就足够。 | |||
0 | 学习 Linux 基本操作 | 【Linux】 | 《鸟哥的Linux私房菜》 https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgo8WIuwYo9-uzrwM.pdf譬如怎么在电脑上装一台 Linux 出来、怎么查看进程、怎么操作文件、软链硬链、格式化磁盘、配置网卡、curl 一个网页等。 强烈建议如果你希望自己的操作系统方面的知识好一些,赶紧把你的 Windows 系统装成 Ubuntu,或者换台 Mac 也行。 Unix和Linux的区别: |
1 | 《程序是怎样跑起来的》 | 【入门】 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgssWIuwYomJXt_wY.pdf 入门微缩版本的“计算机组成原理” ,本书和《计算机是怎么跑起来的》是一对,分别对应着计算机科学导论,计算机组成原理这些书的简明版。这个是我看过的第4本日系技术书,日系技术书,特别是图灵日系书,特点就是书的开本比较小,全彩印刷,内容相对简单,整本书很轻,不过说实话,不建议购买,对于小白来说还是有难度的,但对有经验的人来说大部分可能都太简单,难的依然很难,简单的太简单。对于《程序是怎么跑起来的》,可看性可能比《计算机是怎么跑起来的》更好,其中讲CPU、内存和磁盘、压缩算法可以说是整本书的精华所在了。 |
1‘ | 图解系统 by 小林coding | 【入门】【可视化】 | |
2 | 《操作系统导论》《Operating Systems: Three Easy Pieces》 | 【大局观】【操作系统】 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgo8WIuwYogdfMyQU.pdf 《操作系统导论》有一个附录,记载了一些可能的 xv6 实验项目,其中充满了关于潜在项目的很棒想法。 这本书不仅告诉你 What,还会告诉你 How,书的内容都是循序渐进,层层递进的,阅读起来还是觉得挺有意思的,这本书的内存管理和并发这两个部分说的很棒,这本书的中文版本我也没找到资源,不过微信读书可以免费看这本书。 |
3 | Courser: Build a Modern Computer from First Principles: From Nand to Tetris (Project-Centered Course) 从与非门到俄罗斯方块 | 【实战】【操作系统】【计算机组成原理】 | https://www.coursera.org/learn/build-a-computer https://www.coursera.org/learn/nand2tetris2 这门麻雀虽小五脏俱全的课程会从 01 开始让你亲手造出一台计算机,并在上面运行俄罗斯方块小游戏。一门课里涵盖了编译、虚拟机、汇编、体系结构、数字电路、逻辑门等等从上至下、从软至硬的各类知识,非常全面。难度上也是通过精心的设计,略去了众多现代计算机复杂的细节,提取出了最核心本质的东西,力图让每个人都能理解。在低年级,如果就能从宏观上建立对整个计算机体系的鸟瞰图,是大有裨益的。 |
顺序 | 资源 | 知识分类/使用方法 | 链接和介绍 |
1 | 《深入理解计算机系统》《Computer Systems: A Programmer's Perspective》(CSAPP) | 【计算机系统】【CSAPP系列】 练习题一定要好好做 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgo8WIuwYokO7PFA.pdf 推荐人最多的书,一定要看。 结合了计算机组成原理和操作系统两方面的内容,基本上把计算机内部工作的那些原理都给讲清楚了 |
1’ | 2015 CMU 15-213 CSAPP 深入理解计算机系统 | 【计算机系统】【CSAPP系列】 从1’三门视频课里选择一门 lab一定要好好做 | https://www.bilibili.com/video/BV1iW411d7hd/ 3b1b风格讲解:https://www.bilibili.com/video/BV1cD4y1D7uR/?vd_source=72867308e8b7b6d7774a7e4be6278f68 这门课就是讲的CSAPP的内容,比CS61C更加软硬结合,所以先看这门课 |
1’ | Cousera上南京大学的计算机系统基础课程(一)袁春风 | 【计算机系统】【CSAPP系列】 从1’三门视频课里选择一门 提供一个中文版本 | https://www.coursera.org/learn/jisuanji-xitong/ https://www.bilibili.com/video/BV1gx411n7aG/?vd_source=72867308e8b7b6d7774a7e4be6278f68 这门课就是讲的CSAPP的内容 |
1’ | CS61C(Fa20版本) | 【计算机系统】 从1’三门视频课里选择一门 | 这门课可以认为是偏硬件版本的CSAPP |
2 | 《操作系统》,哈工大李治军老师,32讲 | 【操作系统】 | https://www.bilibili.com/video/BV19r4y1b7Aw/ 实验:https://github.com/hoverwinter/HIT-OSLab 用的是linux0.11的源码 |
顺序 | 资源 | 知识分类/使用方法 | 链接和介绍 |
1 | 《Linux内核设计与实现》 | 【操作系统】 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgpMWIuwYomcnImwM.pdf 这本书恰到好处,即讲清楚了内核实现的要点,又不会通篇源码。 这本书重点关注「第 3 章进程管理」、「第 5 章系统调用」、「第12章内存管理」、「第13章虚拟文件系统」、「第 15 章进程地址空间」这些章节属于操作系统核心部分,其它如中断处理、块 IO、设备管理根据你自己兴趣选择看下就可以了。 |
2 | MIT的操作系统公开课6.828 | 【操作系统】 一定要做 xv6 的 lab | https://pdos.csail.mit.edu/6.828/2023/ https://www.bilibili.com/video/BV1px411E7ST/ 作业参考:https://github.com/SmallPond/MIT6.828_OS/tree/master/xv6-public 但这门课需要你水平足够,最好在系统性学习完毕操作系统类的课程再来尝试它的lab,当然了,你如果你熟悉计算机组成原理,比如计算机多级流水线在做这个lab时,就更得心应手了!MIT6.828的lab比较硬核,全部一共6个实验,全部完成后可以实现一个简单的操作系统内核!不得不说,这门课最精华的部分就是lab了,不做lab还不如不去学MIT6.828:Lab1: C, Assembly, Tools, and Bootstrapping. 在这个过程中会让你熟悉课程使用的工具qemu,C语言以及汇编这些计算机的基地。同样讲解了bootstrapping:从计算机从通电,到开始运行操作系统,这个过程中发生了什么,而不是直接告诉你结果。Lab2: Memory management. 这个lab教你实现虚拟内存以及操作系统中十分知名的分页机制。Lab3: User-level Environments. 在这个lab中让你实现进程管理、中断机制(interrupt)、系统调用(system call)、缺页处理(page fault handling)等。Lab4: Preemptive Multitasking. 实现多CPU的支持,Round-Robin进程调度,Copy-on-Write机制,抢占式多任务(preemptive multitasking), 进程间通信(IPC)。Lab5: File system, spawn, and sh. 实现文件系统,完善sh。Lab6: Networking. 实现网络功能。 |
2’ | 清华大学操作系统-授课教师为向勇、陈渝老师 教科书:《现代操作系统》(大黑书) | 【操作系统】 2的平替,提供一个中文的版本 | https://www.xuetangx.com/course/THU08091000267/5883104 https://github.com/kiukotsu/ucore 如果你想找一个国内的类似 xv6 的 lab,那么这里推荐清华大学 ucore OS。 该清华大学的视频教学搭配的书应该是《现代操作系统》,你可以视频和书籍两者结合一起学,比如看完视频的内存管理,然后就看书上对应的章节,这样相比直接啃书相对会比较好。 |
3 | 《操作系统真象还原》 | 【操作系统】 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgpsWIuwYo2LTDvQQ.pdf 作者实在太好了,所有需要前置依赖的部分他都会简单的写个教程,照着这本书就能撸一个属于自己的 os。 == 推荐理由:先说下这本书的印象,大而全,事无俱细,处处透着作者想把知识说清楚的真诚,而且本书是从第0章开始,那一章是做为答疑,没错,刚开始就答疑,说明,这是作者为了把常见问题给大家解释,很难得,很真诚,很少见这样的认真。这本书很好,跟着书能完整一些一个操作系统,很有成就感。虽然有点啰嗦,但那是作者 为了把枯燥内容描述轻松而不得已的做法。这本书其实比很多大学老师都讲的好,感觉是真正站在学生的角度在阐述操作系统,在课堂上不懂的地方,这本书上全都有解释。总之,赞国内良心作者。 |
4 | 《Linux内核源代码情景分析》 | 【操作系统】 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgo8WIuwYojIn2yAI.pdf |