自己学习操作系统的时间也挺长了,虽然目前的成果还不是特别明显,但是在这段时间中还是学习了很多,今天想在这里和大家分享一下如何学习操作系统,以及如何制定学习操作系统的路线。
以下是针对有过编程经历的。
1,首先操作系统是人机交互的代理,那么作为操作系统必定是要和机器硬件打交道的,那么我们肯定是要学习一部分硬件知识,所以没有硬件知识的应该去补习一下硬件的知识,不用深究到电路,只需要了解电脑的基本部件和特性。
2,假定你有过C语言编程的经历,那么可以学习简单的汇编语言,以及学习一下ARM嵌入式系统,因为x86的寻址模式,保护模式容易把你弄晕。刚开始的时候可以只学习简单的汇编语言编程,以及ARM嵌入式系统硬件方面的信息,比如ARM体系结构、指令集、以及一些简单的外设相关信息。
3,那么现在就可以真正的开始学习操作系统了,
3.1 操作系统的理论知识过一遍,
3.2 然后把计算机启动流程弄清楚(这个特别重要),比如说实模式,保护模式,可能你在前面学习ARM嵌入式系统的时候会接触MMU,那么就会接触保护模式,建议是只需要了解概念,不要去深入,因为操作系统进入保护模式的一个不容易理解的问题(如果想要研究推荐一本书《x86汇编语言从实模式到保护模式》),我们应该从编写实模式的操作系统开始,那样更容易入门。
3.3 暂时我们就不用了解保护模式下的编程,但是我们要理解计算机的启动过程,然后自己编写MBR,自己编写实模式的简单的内核,自己编写实模式下的应用程序...,这里推荐一个工具bochs,配置好bochs之后,你就可以编写自己的MBR,编写内核,系统调用例程,用户程序,同时还可以进行C语言和汇编的混合编译(注意这整个过程在实模式下进行,你可以实现操作系统的全部功能,尽管没有保护模式,你同样可以通过C语言和汇编语言实现操作系统的全部功能)
3.4 在上面利用C语言汇编语言编写实模式的操作系统的时候,可以参考嵌入式的linux的代码,当你在实模式下能运用自如了,那么在去看《x86汇编语言从实模式到保护模式》这本书,那么整个操作系统的学习,已经操作系统的历程你也跳跃的走过了一遍了。
3.5 那么你再看linux内核的源码的时候就轻松了很多。
4,学习的路线暂时到此,后续有操作系统应用路线。
原文:http://blog.csdn.net/m47838704/article/details/44652633