(一)Computer Systems(OS)计算机系统学习路径

2024-11-21 03:02

(一)Computer Systems(OS)计算机系统学习路径


1. 初阶(一个有着CS bachelor学位的人的程度)

顺序

资源

知识分类/使用方法

链接和介绍

我的建议是:不管你怎么学,当你发现要从一门课程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的区别:

https://www.zhihu.com/question/24217234

1

《程序是怎样跑起来的》

【入门】

https://32931414.s21i.faiusr.com/61/ABUIABA9GAAgssWIuwYomJXt_wY.pdf

入门微缩版本的“计算机组成原理” ,本书和《计算机是怎么跑起来的》是一对,分别对应着计算机科学导论,计算机组成原理这些书的简明版。这个是我看过的第4本日系技术书,日系技术书,特别是图灵日系书,特点就是书的开本比较小,全彩印刷,内容相对简单,整本书很轻,不过说实话,不建议购买,对于小白来说还是有难度的,但对有经验的人来说大部分可能都太简单,难的依然很难,简单的太简单。对于《程序是怎么跑起来的》,可看性可能比《计算机是怎么跑起来的》更好,其中讲CPU、内存和磁盘、压缩算法可以说是整本书的精华所在了。

1‘

图解系统 by 小林coding

【入门】【可视化】

https://xiaolincoding.com/os/

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


https://www.nand2tetris.org/


这门麻雀虽小五脏俱全的课程会从 01 开始让你亲手造出一台计算机,并在上面运行俄罗斯方块小游戏。一门课里涵盖了编译、虚拟机、汇编、体系结构、数字电路、逻辑门等等从上至下、从软至硬的各类知识,非常全面。难度上也是通过精心的设计,略去了众多现代计算机复杂的细节,提取出了最核心本质的东西,力图让每个人都能理解。在低年级,如果就能从宏观上建立对整个计算机体系的鸟瞰图,是大有裨益的。


2. 中阶

顺序

资源

知识分类/使用方法

链接和介绍

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’三门视频课里选择一门

https://www.bilibili.com/video/BV1fC4y147iZ/?spm_id_from=333.337.search-card.all.click&vd_source=72867308e8b7b6d7774a7e4be6278f68


这门课可以认为是偏硬件版本的CSAPP

2

《操作系统》,哈工大李治军老师,32讲

【操作系统】

https://www.bilibili.com/video/BV19r4y1b7Aw/


实验:https://github.com/hoverwinter/HIT-OSLab


用的是linux0.11的源码


3. 高阶

顺序

资源

知识分类/使用方法

链接和介绍

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


DIY吧 除非你...
若你有信心 我建议CS申硕申博求职DIY~ 若你想找专家伴你成长 我建议寻找做啥成啥的人 他们能力强 资源多 能解决你一切CS申硕申博求职身份生活的挑战~
先找其他机构?
肯定有其他靠谱机构 但如果你感觉他们干不过我、或你走投无路了 你再来找我吧hhh 但如果我没名额了 希望你别难过 我不是针对你 而是我每年名额都会满
就想加肖哥微信
我的微信被我藏在我荡气回肠的人生经历里 xiaogeedu.tech/col.jsp?id=253 辛苦你去找下hhh 我是美西时区 但每年9月中-12月中是申请季/招聘季 作息是乱的
不考虑商业合作
不商业合作 因为我不知谁靠谱 不合作能杜绝狗血 因噎废食能保护我自己 且我不缺流量还要赶走流量 找我合作您巨亏hh 我与任何商家或申硕申博求职中介都无关
用电脑访问本站
不建议用手机端访问本站,看着贼挤,在电脑端看着舒服hh