2.1.3 操作系统相关课程
操作系统控制着计算机资源调度的优先级,管理着计算机的内存和输入输出设备,向计算机的用户提供文件系统和网络支持,并与形形色色的安全保护机制密切相关,堪称计算机系统的核心与基石。因此,参赛者在学习网络安全和参加 CTF 竞赛前应该了解一些关于操作系统的知识。
首先,需要学习操作系统中必不可少的几个基本模块,包括 CPU 管理、内存管理、文件系统管理、输入输出管理等,掌握不同模块之间的内在联系及操作系统的启动装载、接口调用、通信机制、死锁处理等知识,初步具备阅读及分析开源操作系统的能力。推荐阅读Abraham Silberschatz等的《操作系统概念(第9版)》。
之后,与计算机网络类似,有必要对操作系统的深层次原理、设计思路及实现细节进行更为深入的探究。尤其推荐将主流的、开放源代码的、也是 CTF 竞赛中经常使用的 Linux系统作为学习的对象,一方面熟悉Linux系统的操作与使用,另一方面了解一个真正可用的、现代的操作系统是如何实现的,又是如何稳定工作的,从而加深对操作系统核心原理和关键技术的理解。在不断深入学习的过程中,推荐阅读 Remzi H. Arpaci-Dusseau 和 Andrea C. Arpaci-Dusseau的《操作系统导论》。具体到Linux系统,也可以参考Robert Love的《Linux内核设计与实现(第3版)》。
需要说明的是,学习操作系统的主要目的在于加深对网络安全研究对象和网络安全问题本质的认识,从而在遇到逆向分析或漏洞利用等问题时能够理解得更加透彻,帮助人们更好地解决这些问题。因此在学习操作系统相关课程时应该将重点适当地偏向于对已有操作系统的分析与掌握,而不必动手实现一个完整的操作系统。要注意抓住学习的重点,以便在节约时间与精力的同时取得良好的学习效果。