是很了解, 甚至从来没有想到过一个Hello World 还能引出这么多值得思考的问题,而你又
想了解它们,那么恭#你,这本书就是为你准备的。随着各个章节的逐步展开,我们会从最
基本的编译、静态链接到操作系统如何装载程序、动态链接及运行库和标准库的实现,甚至
—些操作系统的机制. 力争深入浅出地将这些问题层层剥开,最终使得这些程序运行背后的
机制形成一个非常沾晰而流畅的脉络。
在开始进入庞大而又繁琐的系统软件之前,让我们先进行热身活动,那就是一起来回顾
计算机系统的一些基本而又重要的概念。整个计算机系统冋顾过稃将分为两个部分,分别是
硬件部分和软件部分。本书的主要的+ 足介绍计算机系统结构,第1 送的回顾只是巩固和
总结计算机软硬件体系M 面几个重要的概念,这些概念在我们后而的章节中将时时伴随右我
们,失去了它们的支掸,后面的章节将会M得繁琐而又_ 涩。如果你自认为这些基本概念很
简申,那么你可以大概地浏览一遍几个知识点的标题,然后直接跳到第2 章;反之,如果你
觉得有些概念还不是很清楚,甚至从来没听说过这些概念,那么请你仔细阅读相关章节,相
信这个过程对你阅读本书甚至对你深入了解计算机大有裨益。
1.2 万变不离其宗
汁算机是个非常广泛的概念. 人到占用数层楼的用于科学计算的超级计算机,小到手机
上的嵌入式芯片都可以被称为计算机。虽然它们的外形、结构和性能都丁•差万别,但至少它
们都有“ 计算” 这个概念。在本书里面. 我们将计算机的范围限定在最为流行、使用最广泛
的PC 机,更具体地讲是采用兼容X 86 指令集的32 位CPU 的个人计算机。原因很简单:因
为笔者手上目前只有这种类型的计算机可供操作和实验, 不过相信90%以上的读者也是,
所以在这一点上我们很快能达成共识。其实选择具体哪种平台并不是S关键的,虽然各种平
台的软硬件差别很多,但是本质上它们的基本概念和T.作原理都是一样的,只要我们能够掌
握一种平台上的技术,那么其他的平台都是大同小异的,很轻松地可以举一反三。所以我们
相信,只有你能够深刻地理解x86 平台下的系统软件背后的机理,当有一天你需要在MIPS
指令集的嵌入式平台上做开发,或者需要为64 位的Windows 或Linux 开发应用程序的时候,
你很快就能找到它们之间的相通之处。
撇开计算机硬件中纷繁复杂的各种设备、芯片及外围接口等,站在软件开发者的角度看,
我们只须抓住硬件的几个关键部件。对于系统程序开发者来说,计算机多如牛毛的硬件设备
中,有三个部件最为关键,它们分别是中央处理器CPU、内存和I/O 控制芯片,这三个部件
几乎就是计算机的核心了;对于普通应用程序开发者来说,他们似乎除了要关心CPU 以外,
其他的硬件细节基本不用关心,对于一•些高级平台的开发者来说(如Java、.NET 或脚本语
B 开发者),连CPU 都不需要关心,因为这些平台为它们提供了一个通用的抽象的计算机
网友评论