势是未来发展的大势。操作系统的作用不言而喻,它是现代计算平台的核心支撑,向下负责硬件资源,向上控制软件程序。如果把芯片比作一个人的心脏,那么操作系统的地位无疑是一个人的灵魂,面对”卡脖子“的历史阶段,学习操作系统迫在眉睫。
道是事物背后的规律。智能终端使操作系统有了更好的落地,回顾历史,每一次随着智能终端的发展,都会带来翻天覆地的变化。随着5G带来的低延时,高吞吐,广连接,以及异构设备的蓬勃发展,我们正在进入万物互联的新世界。万物互联的世界对传统单一操作系统提出了新的需求,比如微软新研究的Windows CoreOS,谷歌新研究的Fuchsia,华为新研究的鸿蒙等,它们都是为万物互联新时代而生的新的操作系统。
除了国家和时代的需要,操作系统也能为你的职业发展保驾护航。众所周知,操作系统作用于硬件上第一层软件,也是其它软件的基础,承上启下,实现它,你要了解硬件体系 ,而对它本身的了解 ,就相当是拥有了武侠片中的内功 ,一旦有了雄厚的内功,其它武功你一看就明白,一学就会,任何招式你和别人打出去的威力就不是一个级别。这种帮助无论对嵌入式开发者,还是对互联网程序员都是非常明显的。
术是技术层面的操作方法。那么,如何学习操作系统?内核涉及到的模块很多,包含内存管理,进程管理,中断管理,同步机制,文件系统,电源管理,网络等。不同模块之间又是关联的,想要精通这些模块没有好的学习方法,基本无从下手。虽然”Talk is cheap. Show me the code“,但除非你本身就是做内核相关工作的,否则我不推荐大家把内核源码通读一遍,因为首先大部分小伙伴自己工作的时间已经够辛苦,工作之余并没有大量的时间去通读。其次即使你啃完了代码,但手头的工作和内核关系不大,没有工作的实践,过段时间还是会忘掉。
这里我建议在阅读代码时注意逻辑性,不要抠细节,遇到难点跳过,结合整段功能去阅读,等有了整体框架的了解后再根据工作中的需要去深挖细节。要时刻记住自己想要解决的问题是什么,无关的代码能绕开的就绕开。吾生有涯,而知无涯,我们只挑对我们有用的进行学习。
这里提供内存管理和进程管理两个模块讲解,个人认为内存管理和进程管理是内核的基石,是打通操作系统任督二脉的基础。我们知道,一个操作系统的最终目的是运行多个程序。一个程序要运行,首先要加载,然后执行,也就是说程序的运行离不开内存的支撑。多个程序要运行,需要调度,调度的策略又离不开进程管理。所以说,理解了内存管理和进程管理,也就理解了操作系统的核心。