Linux 核心--2.硬件基础
Linux 核心--2.硬件基础,Linux 核心--2.硬件基础
操作系统必须与基本硬件系统密切协作。它需要那些仅仅能够由硬件提供的服务。为了全面理解Linux操作系统,你必须要懂得一些有关硬件的知识。本章将对硬件:现代PC做一个简要的介绍。 当1975年一月的"Popular Electronics"杂志以Altair 8080的图片作为封面时,一场革命开始了。 家用电器爱好者能独立组装出来的Altair 8080,当时价格仅仅为397美圆。这种带有256字节内存的8080处理器还没有显示器与键盘,以今天的标准来看,它是微不足道的。它的创造者, Ed Roberts,发明了"personal computer"来描叙他的新发明。但现在PC这一术语已被用来称呼那些自己就可以携带的计算机。在这个定义上,非常强劲的计算机如Alpha AXP 也可称为PC。 狂热的HACKER们看到了Altair的巨大潜力,于是他们开始为它编写软件和设计硬件。对早期的先驱来说这意味者某种自由;一种从顽固的超级批处理主机中解放出来的自由。滚滚而来的财富让许多着迷于此(一台可以放在厨房餐桌上的计算机)的大学生纷纷退学。许多五花八门的硬件开始出现,软件 HACKER们忙着为这些新机器编写软件。有意思的是IBM首先坚定的进行现代PC的设计和制造并于1982 年推出产品。该产品的构造是:8080 CPU、64K字节主存、两个软盘驱动器以及25行80列的彩色CGA 显示器。虽然以现在观点看那些都不是多么先进的东西但当时销售情况却很好。紧接着,1983年,带有昂贵的10MB硬盘驱动器的IBM PC-XT出现了。在IBM PC体系结构成为事实上的标准不久之后,大量仿制者如COMPAQ公司出现了。由于这种事实标准的存在,多个硬件公司在这一快速增长的市场上进行了激烈竞争。 但用户却从低价中获益。许多早期PC中的结构特征还保留在现代PC系统中。比如Intel公司最先进的Pentium Pro处理器还保留着Intel 8086的寻址模式。当Linus Torvalds开始写Linux时,他选择了当时最广泛使用同时价格合理的Intel 80386 PC。 图1.1 典型的PC主板示意图。 从PC的外部来看,最引人注目的是机箱,键盘,鼠标以及显示器。在机箱前部有一些按钮,一个微型显示器显示着一些数字,此外还有一个软驱。今天的大多数机器还包含一个CD ROM,另外,如果想保护你的数据,还可以添加一个磁带机作为备份用。这些设备统称为外部设备。 尽管CPU是系统的总管,但是它仅仅是一个智能设备。所有的这些外设控制器都具有某种层度的智能,如IDE控制器。在PC内部,你可以看到一个包括CPU或者微处理器,主存和许多ISA或PCI外设控制器插槽的主板(图1.1)。有些控制器,如IDE磁盘控制器必须建立在系统板上。
图 1.1: 典型的PC主板.
1.1 CPU
CPU,或者微处理器,是计算机系统的核心。微处理器进行计算或者逻辑操作并且管理来自主存的指令并执行它。在计算机的早期时代,微处理器的功能部件使用的是分立元件(外型很大)。 这就是中央处理单元这一名词的由来。现代微处理器将部件结合到小型硅片上的集成电路中。在本书中CPU和微处理器及处理器有相同的意义。 微处理器的操作对象是二进制数据;数据由0和1组成。 1和0对应着电子开关的开路与断路状态。正如十进制的42表示有4个10和一个2一样,一个二进制数是一系列表示2的次幂的二进制数字组成。二进制0001对应十进制的1,二进制的0010对应十进制 的2,二进制的0011表示3,而0100对应4。十进制42的二进制表示为101010。但是在计算机程序中, 人们常用十进制来表示数而不是直接使用二进制。 在需要使用二进制数时,人们往往使用16进制数。如十进制数只能从0到9一样,16进制数可以从 0疏导15,其中10到15分别用字母A、B、C、D、E及F来表示。这样16进制的2A的十进制表示为42- 2*16+10=42。在C程序语言中,16进制数的前缀为"0x";16进制的2A写成0x2A。 微处理器可以执行如加、乘和除以及象"X是否比Y大"这种逻辑运算。 处理器的执行由外部时钟来监控。这个时钟称为系统时钟,它每隔相同的时间间隔就向CPU发送一个脉冲。在每个时钟脉冲上,处理器都会做一些工作。比如,处理器每个时钟脉冲上执行一条指令。处理器的速度一般以系统时钟的速率来描叙。一个100MHz的处理器每秒将接收100,000,000 个时钟滴答。但是用CPU的时钟频率来描叙CPU的工作能力是不正确的,因为它们执行的指令不相同。 然而,快速的时钟可以在某种程度上代表高性能的CPU。处理器执行的指令是非常简单的;例如"将内存X处的内容读入寄存器Y"。寄存器是微处理器的内部存储部件,用来存储数据并对数据执行某些指令。有些指令有可能使处理器停止当前的工作而跳转到内存中另外一条指令执行。现代微处理器的紧凑设计使得它有可能每秒执行上百万甚至亿条指令。 指令执行前必须从内存中取出来。指令自身要使用的数据也必须从内存中取出来并放置在适当的地方。 微处理器中寄存器的大小、数量以及类型都取决于微处理器的类型。Intel 80486处理器和Alpha AXP 有迥然不同的寄存器,最明显的区别在于Intel 寄存器为32位而Alpha AXP为64位。一般来说,任何处理器都有许多通用寄存器和