当不再把操作系统当作技术和知识点来学习的时候,完全有了另外一种认识,以前感觉操作系统是个集各种高端技术的领域,是那些技术大牛搞的领域,现在的感觉是操作系统实际上就是个管理制度的集合,像一个公司甚至是社会,为了让这个公司运行正常,管理者想出各种办法制定了各种政策,很多政策的制定并不是天才们的凭空发明,而是在被各种问题给“逼”出来的。操作系统的发展史就说明了这一点,操作系统的发展就是在硬件不断发展和人的需求不断升级给逼出来的。
学习操作系统先最好不要陷入到技术细节里,而是站在设计者的角度,想想为什么要做出如此设计,是遇到了什么问题。比如关于锁的设计,实际上是当时需要一个玩意来保证一组操作能不受其他操作的打扰,而要设计锁就需要有原子性操作的底层保证和对锁的合理使用,这些东西当然基于各种“高端”技术,但透过技术细节,发现只是为了实现一个约定的制度。再比如各种进程调度算法,实际上是需要一个规则来公平地有效地把CPU分配给各个需要资源的进程,这其实是个各行各业都会面临的共性问题,而各种调度算法也在其他领域能找到原型,基于的是一些共性的原理,只是实现方式不同罢了。
因此,操作系统的精髓在于制定的各种制度和原则,学习操作系统也应该重点学习这些东西。对于架构师而言,操作系统也折射出一个道理,优秀的系统不是高端技术的堆砌,而是对特定问题采取最有效最合适的制度和实现。