打算从2019年开始深入学习操作系统,从2018年下半年开始又深入地回顾了数字电路、计算机组成原理、汇编语言《王爽老师版》,X86汇编语言-从实模式到保护模式《李忠老师版》;经过了2018年下半年的深入学习,对计算机硬件组织有了更加深入的认识,为2019年深入学习操作系统奠定了坚实的基础。
2019年刚开始学习操作系统的时候有点不知所措,主要是不知道从哪里下手。起初的想法是先把三本经典的操作系统理论书籍《现代操作系统》,《操作系统概念》,《操作系统精髓与设计原理》并行着看完,再去深入研究Linux。而深入研究Linux则从《Linux内核设计与实现》,《深入理解Linux内核》入手研读,动手部分则按照南京大学版《Linux操作系统实验教程》来进行。计划就照着这样子来进行。
三本操作系统经典理论书籍的第一章操作系统绪论部分由于自己已经有了比较深入的硬件理论基础,所以看起来不是很费力。在讲操作系统历史的时候也看的津津有味,对操作系统有了大概的了解。阅读三本书的时候对这三本书也有了更深刻的认识,《现代操作系统》讲的有点太抽象,感觉讲的有点不着边际。《操作系统概念》涉猎的面虽然广,但是感觉好多东西讲的都是蜻蜓点水,比如当我看到并发那一章节的时候,书上讲在进入临近区的前面有一段进入区代码,进入区代码要保证原子性。书上只是淡淡地说单CPU靠关中断来保证原子性,多CPU则靠硬件机制来保证,而怎么保证书上只是说要看计算机体系结构相关的书籍。所以到这里我就有点看不下去了,想把这个怎么保证原子性的办法查出来。此时我暂停下来去研究这个问题,想着去《Linux内核设计与实现》,《深入理解Linux内核》里面寻找答案。《Linux内核设计与实现》对于可能产出临界区的情况分析的比较到位,打破了我之前的一贯印象。比如我们通常只认为临界区是由多线程并发访问造成的竞争条件