最近看了操作系统这本书,算是第二次读这本书了。第一次看这本书时,觉得很多结构算法很普通,没有复杂精巧的结构,但是工作后再一次看,却有了不同的想法。首先是操作系统的很多概念可以适用于很多软件开发中,而且大多数的软件复杂程度是远远比不上操作系统的。我遇到的很多问题在操作系统内就有相应的解决方法,简洁有效,比起自行设计的复杂算法与结构,这些简洁直接的方法说不定可以带来更高的效率,包括运行效率与开发效率。第二就是操作系统的一些设计理念,感觉在开发新东西的时候很有指导作用。比如说“完美非无可增,乃不可减”,强调以最小的复杂性,来完成目标任务。这一点很难做到。还有“我们应该吹嘘以很少的代码实现给定的任务,简洁的代码更易懂,缺陷更少”,精简清晰的代码不代表简陋,反而展现出精妙的设计权衡。还有“不要过早进行优化”,感觉在没有完成系统构建前,并不能准确知道性能消耗瓶颈时,早期的优化可能是在做无用功。
对于虚拟化部分,我现在印象最深刻的是两个东西,一个是如何通过调度来呈现每个进程独占CPU的假象,同时保证很高的效率,另一个就是如何通过TBL来加速内存虚拟化后的查表速度,使得实际应用内存虚拟化成为可能。
而在并发部分,很多就是已经看过的并发问题以及对应的解决办法。在这里更多描述的是如何通过原子化的硬件指令来实现对应的功能。