万春 读《Orange’S 一个操作系统的实现》有感
本文由 “碟中碟”虚拟光驱软件开发者——万春 提供
我经常遇到一些朋友,他们熟悉8086汇编语言,并且喜欢汇编语言.(很多这样的朋友)他们在日常使用汇编语言上,一般是反汇编研究别人的二进制代码进行逆向工程,或者动态跟踪破解软件,脱壳或者外挂反外挂等。这样使用汇编当然没有错,但是这些在日常工作或者爱好中,很多是熟能生巧的,当玩到一定的程度,就会感觉其实技术也差不多就这样,再就是有些机械性重复的感觉,技术上进入了一个平台期。
前不久有朋友就给我说,他要学习win32 API 的汇编编程,来提高自己的汇编修养。我当时就建议他说如果汇编反汇编能玩到比较熟练再去学习win32 API汇编有些不值得,我建议他这时候不如去加深以下我们对处理器及操作系统的了解,毕竟win32 API用汇编来操刀感觉有点费时费力,用VC win32 api能够更容易实现同样的工作,而且理解也比较容易。(顺手.)所以我就建议他去学习以下保护模式相关的东西,这也是现代x86 CPU和操作系统的核心基础架构.因为我觉得学习保护模式可以很好的了解现代CPU与操作系统的核心细节. 我们都知道windows 上有相对于DOS神奇分段分页内存管理,可以管理大于1M的内存,可能我们在学校的时候老师也有讲述,但我估计如果不用很多人都记不得它.不知道如何用它了。像多任务,多线程,内核ring 0, ring 3等东西我想很多朋友都有兴趣,但是觉得这些东西学起来太难,不知道如何入手学习,就算了。其实学习汇编到一个层次后,转向学习这些知识从而了解操作系统的运作方式可能是提高自己的认识和技术的一个好的途径。因为保护模式相关的东西技术相当的连贯与系统化,你如果从GDT 到LDT ,IDT, TSS ,PTE,PDE,PFN,段,门,陷阱,页,等数据结构及处理器结构走一遭。你会发现,他们实际上就是现代操作系统的砖、瓦、地基。其实不管是windows 还是linux 这样差距巨大的操作系统,在这部分他们都有很多的共同相似的特性。
在windows 的ntldr和ntoskrl.exe内核中,都免不了有这些处理的,以此为基础架构出来的NT内核VMM,FS,内核调度,异常,中断处理,对象管理器等,然后又在这些系统内核的基础上架构成一个成熟的操作系统,当然我们不可能搞windows这样复杂的东西,但是我们可以通过学习保护模式了解其基本原理,这样即使针对windows 中某一个方面的东西研究的时候,也可能让我们认识得比较深刻一点,这就够了。
每当我们说起操作系统,第一个印象就是复杂,博大精深,细节难于掌握.事实也如此,现代操作系统是如此的复杂,很多有意思的东西都被广漠的细节所弥漫,让我们要学习它的难度越来越高,经常是费时间费力,效果不大或者是浅尝即止,这方面长久以来没有一本好的书籍系统介绍.有些汇编类书籍介绍的保护模式都是比较枯燥让人容易瞌睡的内容,也不容易上手学习。
最近我发现一本操作系统实现的书《Orange'S:一个操作系统的实现 》,内容将前面所说的难点解决的蛮好的,作者用实践的引导方式,从NASM,GCC开发工具,虚拟机使用等开始,用最简单只有几十行的汇编代码的方式引导读者进入保护模式的学习,其中充满了探索的好奇.作者每前进一步都加入一些新的代码进原来的代码中,跟作者一起从实模式jmp到保护模式,然后又是call/iret多任务分时切换,这些相关东西都可显示在显示器上给你最直观印象。到最后竟然基本实现了一个带基本进程调度,FS,VMM试验性操作系统,真是相当的神奇,我建议有学习兴趣的朋友,最好先看看作者的书,然后一行一行的敲入代码,即使敲的时候不理解,也没有多大关系,建议一定要自己敲,切忌拷贝图快。
在作者的带领下接触一个可能在其他地方无法体验的技术冲浪。经过这样的一个历程后,读者汇编语言的功底及炒作系统原理绝对将有一个质的提高,多年后即使其中的某些细节忘记了,但其中的方法和思路必定将长留在你的记忆中,并对你的开发编程产生相当积极的影响。
我推荐大家阅读《Orange'S:一个操作系统的实现 》!
【书名】orange's一个操作系统的实现
【作者】于渊
【出版社】电子工业出版社
【书号】978-7-121-08442-3
【出版日期】2009 年5月
【开本】 16开
【页码】 492页
【内容简介】
本书从只有二十行的引导扇区代码出 发,一步一步地向读者呈现一个操作系统框架的完成过程。书中不仅关注代码本身,同时关注完成这些代码的思路和过程。本书不同于其他的理论型书籍,而是提供 给读者一个动手实践的路线图。读者可以根据路线图逐步完成各部分的功能,从而避免了一开始就面对整个操作系统数万行代码时的迷茫和挫败感。
本书购买地址:当当网 卓越网 互动网
更多精彩活动:博文视点大讲堂 博文视点Open Party