Linux核心 之 (第一章)
第1章 硬件基础
一个操作系统必需紧密地和其支撑--硬件系统结合在一起。操作系统需要一些只能由硬件提供的一些服务。为了很好的理解Linux操作系统,读者需要明白一些低层的硬件知识。本章对当代PC系统的一些硬件作一个介绍。
1975年的1月,当“Popular Electronics”杂志在其封面上给出Altair 8080的照片后,一场革命就开始了。 Altair 8080当时的价格是非397美金。对于今天而言,其Intel 8080的处理器,256字节的内存,没有屏幕和键盘的配置是微不足道的。它的发明者Ed Roberts将其新的发明称之为 “个人计算机”。 计算机爱好者看见了Altair得潜力并开始为它写软件和在其上为它配置硬件。对这些先驱者来说,这是一种摆脱呆版的基于批处理的大型机的自由。一些退学的在校生通过这些个人计算机一夜之间获得了巨大的财富。
市场上出现了大量的硬件设备。软件hackers们非常高兴地为这些新机器编写软件。有趣的是,是IBM公司在1981年制造了当代PC--IBM PC并在1982年交给用户使用。当时IBM PC的配置是Intel 8088处理器, 64K内存(可扩展到 256K),两个软磁盘和一个80字符,25行的CGA显示适配器。1983年,IBM推出了IBM PC-XT,含有一个10M的硬盘。不久之后,许多公司,如compaq,推出了IBM PC的兼容机。 PC的体系结构变成了一个工业标准。这个工业标准使得大量的硬件公司在一个基础上进行竞争。从而使的PC价格变得越来越便宜。早期PC的许多结构特徵被现代PC所继承。例如,即使先进的Intel Pentium Pro系统在开始时也运行在Intel 8086的地址模式下。当Linus Torvalds 开始写Linux时,他选择了当时最多的,价格也较合理的Intel 80386 PC。
图1.1 一个典型的PC主板
从外面看一个PC,最明显的部件是一个系统主机,键盘,鼠标器和 一个显示器。大多数系统还有CD ROM。如果你想要保护数据,还可以有一个磁带驱动器用来做数据备份。这些设备通称为外设。 虽然CPU是系统的主要控制部件,它不是系统中唯一具有智能的。所有的外设控制器,例如,IDE控制器,都有一定的智能成份。在一个PC的内部(如图1.1所示),读者可以看见一个含有CPU的主板,内存和一些ISA或PCI外设控制器插槽。有些控制器,如IDE磁盘控制器,有可能被直接作在系统板上。
1.1 CPU
CPU,或微处理器,是任何一个计算机系统的心脏。CPU通过读取并执行内存中的指令来进行计算,执行逻辑运算和管理数量流。 (以下略去关于CPU的介绍,有兴趣的读者请参考有关书籍)
1.2 存储器
所有的系统都有一个存储器的层次结构。每一层的速度和大小不一样。最快的存储器是缓冲(cache)存储器,用来暂时存放主存储器的内容。这种存储器非常快但价格很贵,因此大多数处理器在芯片中只含有较少的cache存储器。更多的则在系统板上。有些处理器在cache中混合存放数据和指令;有些则分开存放。一个cache为指令;其他一个 cache为数据。Alpha处理器中含有两个内部存储cache;D-cache为存放数据;I-cache为存放指令。外部的cache(B-cache)混合存放数据。最后,存储体系结构中的是主存储器。相对于外部cache,主存比较慢。如果与CPU内部的cache比较,主存的速度就象爬一样。 缓冲与主存之间必须保持一致性(coherent)。换句话说,如果主存中的一个字在cache中的一个或多个地方,系统必须保证cache中的内容与主存中的一致。cache一致性的工作一部份是有硬件完成的,一部份是有操作系统完成的。这一点对于大多数系统都是一样的。系统中的软硬件必须互相合作完成功能。
1.3 总线
系统板上的部件通过总线相连。系统总线份外三个逻辑功能部份:地址总线,数据总线和控制总线。地址总线指定数据传送的地址。数据总线负责运送要传送的数据. 数据总线是双向的。允许数据读进CPU和从 CPU写出。控制总线包含一些信号线用来控制时序和系统中的其他控制信号。
1.4 控制器和外设
外设是真实的设备,例如显示卡或磁盘。外设都由系统主板上的控制器所控制。IDE磁盘由IDE控制器芯片控制;SCSI磁盘被SCSI磁盘控制器所控制。控制器之间,控制器与CPU通过总线相连。大多数系统通过PCI和ISA总线将系统的部件相连。控制器与CPU一样是一种处理器,可以看作是CPU的智能助手。 CPU是系统的控制中心。 所有的控制器都不相同。但通常它们都有一些用来控制作用的寄存器。在CPU之上运行的软件必须能够读和写这些控制寄存器。一个寄存器可能包含一个用来描述错误的状态;另一个寄存器可能被用来作为控制,例如改变控制器的模式。总线上的每个控制器都可以分别地被CPU所访问。从而设备驱动程序软件可以写上述寄存器以控制这些控制器。
1.5 地址空间
系统总线将CPU与主存相连,这与将CPU与系统硬件外设相连的总线是分开的。总的来说,硬件外设所占据的存储空间叫做I/O空间。CPU可以既可以存取系统存储空间,也可以存取I/O空间。然而控制器只能在CPU的帮助下间接地访问系统主存。从设备的观点看,例如软盘控制器,它只能看见其控制寄存器所在的ISA空间的地址。一般而言,CPU使用不同的指令系统来存取系统存储器和 I/O空间。例如,可能存在一个指令“从I/O地址0x3f0读一个字节到寄存器x”。CPU就是这样通过读和写来控制系统的硬件外设的。在I/O空间中,一些常用的硬件外设(IDE控制器,串行口,软盘驱动器等)的寄存器地址已经被固定下来。例如0x3f0正好是串口一(com1)的一个控制寄存器。 有时候,控制器需要在系统主存之间传送大量的数据。例如将数据写入磁盘。这种情况下,直接储存存取(DMA)控制器被用来使得硬件外设直接存取系统内存。但是这个过程是在CPU的严格控制和监督之下。
1.6 定时器
所有的操作系统都需要知道时间。所以PC中含有一个特殊的设备叫做实时时钟(Real Time Clock)。 RTC提供两种功能:每天的时间和准确的时间脉冲。RTC有其自己的电平。因此即使PC没开电源, RTC也在运行。这就是为什么你的PC的时间一直在更新的原因。RTC提供的时间脉冲使得操作系统可以准确的调度必须的工作。发布人:netbull 来自:Linuxeden