生存指南
核心指导原则
Don't Panic. (不要慌)——The Hitchhiker's Guide to the Galaxy
曾经 OSLabs 是一个可怕的传说;但随着 jyy 周目的增加 (尤其是在把《计算机系统基础》从前导课程中去除后),感觉越来越能在 “挑战性” 与 “趣味性” 之间找到一个让大家活下去的平衡:
- 最优秀的同学也应该感到挑战。在 jyy 读书的时代,“期末翻一遍书就有 95 分” 的课程似乎不能承担大家作为一名 “名校毕业生” 肩负的重任
- 掉在队伍之后的同学,即便是仅有一定的编程基础,努力过的同学也一定能通过 (Yes!)
但无论如何,还是要花点时间说一下怎么在这门课生存下来,因为说到底操作系统还是一门十分硬核的编程课。
1. 操作系统为什么难学?
操作系统难学的最主要原因是操作系统里的主题很多,有些主题对大家来说并不太熟悉。例如,同学们到目前为止编写的大部分代码都是串行的,打个比方,就是写一个程序模仿 “一个人”,一次执行一步动作。但操作系统引入了并发编程,也就是你需要协同多个共享内存的 “多个人” 时,会遇到很多你也许意料之外的问题。
在操作系统中,哪怕我们完全不管如何实现 “低延迟、高吞吐的牛逼现代操作系统”,即便是实现一个最小的能工作的操作系统内核,你依然会遇到众多非常具有挑战性的问题:
- 操作系统应该为应用程序提供怎样的 API?
- 如何用硬件实现多个进程的并发/并行?
- 如何编写能够工作的并发程序,它不会在压力负载下随时随地崩溃?
- 如何维持多个隔离的执行流?
- 如何在磁盘上实现持久的数据结构?
- ……
在解决这些问题上作出突出贡献的人已经得过 nn 个图灵奖了——每一个问题都不是吃素的。要把这些问题的来龙去脉、解决方法、代码实现都掌握好,的确是相当有挑战性的。
2. 操作系统该怎么学?
幸运的是,我们在多年的经验里找到了理解操作系统的两把 “钥匙”,它们分别打开了操作系统的两个侧面。
标签:指南,操作系统,生存,实现,代码,编程,JYY,理解,API From: https://www.cnblogs.com/zaiyewujiang/p/17222140.html