这不是由几万行代码简单罗列成的一本书,也不是由各种技术文档堆积成的一本书,当你在学习计算机操作系统原理时迷失了方向,它会为你点亮一盏灯,照亮前方的路。

什么是操作系统?计算机相关专业的读者们在大学时候都学过《操作系统》这门课程,但是在课上老师讲的大多数内容都是一些理论性的概念,比如:什么是进程?什么是线程?文件系统结构、内存管理单元、进程调度、为什么要空间换时间?当时对这些问题也只是一知半解,想知道这些问题,但是又无从下手。就算有一些思路,也因为学艺不精,半途而废了。问老师也只是理论性的解答,无法得到一个清晰的答案。我想,正在读此书的你也不一定能把这些问题全部都细细道来,就更别提具体到代码级了。

可能有些人觉得这些问题没有必要弄得非常清楚,当时我也是这么觉得。等到了工作中,有幸做了几年Linux内核级的开发工作,对这些问题渐渐的有了比较直观深刻的理解。在工作过程中也慢慢发现了,操作系统的重要性,有些问题在不了解操作系统原理的时候,是很难解决的,就更别提具体到某一款操作系统了。

由于中国在计算机的发展方面还是落后于发达国家的,师资力量不足是在所难免的,有的学校甚至将微机原理、汇编语言、计算机组成原理等基础课程讲的很概括不够深入。当时觉得这些课程不重要,没有细心认真的学习。但是,等到工作了以后,你才会发现你能在计算机行业中走多远,往往都是由这些基础知识决定的,这些问题已经渐渐的影响了我们一代人。而且,中国目前的软件行业环境也主要是以外包为主,能够独立自主进行开发的公司少之又少,大部分还是以盈利为主,能够静下心来做技术储备,培训这些基础知识的公司就更屈指可数了。

目前网络上或者书店里也会有一些关于操作系统实现的书籍,如果读者拿来作为入门学习是很不错的选择。但是,这些书籍的一个通病是采用Intel 32位处理器进行开发的。虽然学起来简单,但是真正拿到工作和生活中举一反三的话,还是有一定差距的。比较典型的例子就是多核处理器间的通信机制,高级中断控制器的设置,先进的64位处理器体系结构,这些问题都会造成理论与实践脱节,遇到问题无法正确推理及解决。

处于这些原因作者想通过一系列书籍,把现代操作系统的真实面目展示给读者。并希望通过这套书籍寻找有能力和有兴趣的朋友一起开发这款操作系统。考虑到对操作系统感兴趣的读者不在少数,基础知识也肯定会参差不齐。为了照顾到各个方面,本书尽量做到,既适合在校学习理论知识的初学者,又适合在职工作的软件工程师或有一定基础的爱好者。

这是一个基于Intel IA32e架构的操作系统雏形,对于IA32e可以简单理解成大家口中经常说的X64架构,读过Intel技术文档的人可能会知道,X64是在原有X86系统的基础上进行的扩展。它对于32位操作系统来说,在执行速度、数据带宽以及执行时候的简便性、安全性上面都进行了优化和升级。所以,64位操作系统比32位操作系统快是有原因的,而且不是一句话就能表述明白的。

本书从电脑上电启动开始,循序渐进的完成了一个64位操作系统的雏形。至今我还记得当初写这个操作系统时候遇到的困难,饱受一次次的挫败与崩溃,今天读者看到这本书的时候,说明这些困难已经是历史了。失败不可怕,害怕失败才真正可怕,当你意识到失败只是弯路,那么你就已经走在成功的直道上了。(出自电影《中国合伙人》)希望这句话可以与读者互勉。

好了,言归正传。介绍一下硬件环境,作者使用的物理平台是Lenovo ThinkPad X220T笔记本电脑,处理器是Intel (R) Core (TM) i7-2620M CPU @ 2.70GHz(这串字符会在以后的章节中,通过程序从处理器中获得到)。如果条件允许的话,还可以准备一台电脑作为编译环境,不然在一台电脑里经常重启电脑的话会影响效率。除此之外呢,还应该准备一个U盘,U盘容量不需要太大,16MB或者8MB基本就够了,作者目前使用的是16MB的U盘。说好的嘛,要用物理平台在真实的电脑上运行,怎么能少得了U盘引导呢!

结伴冒险即将开始,希望读者能和作者痛快的走一遭。

PS:由于是在创作初期,文章可能会有错误、内容遗漏、阐述的不到位或者读者想看而我没有写到的内容,希望大家多指点(留言或者发信息给我都可以)。
考虑到以上原因,希望大家能够关注或者推荐本书,让更多的人学习到,并避免错过之前内容的更新与补充