没有合适的资源?快使用搜索试试~ 我知道了~
Linux_Kernel核心中文手册(内核图解).pdf
需积分: 21 26 下载量 189 浏览量
2011-12-10
20:44:48
上传
评论 1
收藏 1.41MB PDF 举报
温馨提示
试读
212页
Linux_Kernel核心中Linux_Kernel核心中文手册(内核图解).pdf 文手册(内核图解).pdf
资源推荐
资源详情
资源评论
Linux Kernel核心中文手册
Unix/Linux作坊
Chapter 1
Hardware Basic(硬件基础知识)
一个操作系统必须和作为它的基础的硬件系统紧密配合。操作系统需要使用一些只有硬件才能
提供的功能。为了完整的了解Linux,你需要了解底层硬件的基础知识。本章对于现代PC的硬件
进行了。
1975年1月“Popular Electronics”杂志封面上印出了Altair 8080的图片,一场革命开始了。
Altair 8080,跟随早期的“Star Trek epsode”命名,只需要$397,就可由个人电子爱好者自己
组装。它拥有Intel 8080处理器和256字节内存,但是没有屏幕和键盘。以今天的标准来衡量,
它太简陋了。它的发明者,Ed Roberts,制造了名词“personal computer“来命名他的发明,但
现在,PC这个名词已经用来命名几乎所有你可以不依靠帮助就可以自己运行起来的计算机。用
这个定义,甚至一些十分强大的Alpha AXP系统也是PC。
爱好者们看到了Altair的潜力,开始为它写软件,制造硬件。对于这些早期的先驱来讲,它代表
着自由:从被神职人员控制和运行的大型批处理的主机系统中逃脱出来的自由。你可以在自己
家里甚至厨桌上拥有计算机,这使学院的退学生为此着迷并通宵达旦。与此同时出现大量硬
件,在一 定程 度上各 自不 同,而软件专 家则乐于为 这些新机器 撰写软件。 有讽刺意味的
是,IBM在1981年发布了IBM PC并于1982年早期供货,从此定义了现代PC的模型。它拥有Intel
8088处理器,64K内存(可以扩充到256K),两个软驱和一个80x25的彩色图卡(CGA),用今
天的标准衡量,它功能不算很强,但是它销售的不错。1983年,紧接着推出的IBM PC-XT,则
拥有一个豪华的10M硬盘。不久大批公司如Compaq开始制造IBM PC的复制品,PC的结构成为
了事实的标准。这个事实的标准使大批硬件公司可以在这个不断增长的市场上一起竞争,反过
来,可以遏制价格,让用户满意。现代PC承袭了早期PC的许多系统体系特征。甚至基于最强大
的Intel Pentium Pro的系统也可以运行Intel 8086的寻址模式。当Linus Torvalds开始开发后来的
Linux时,他选择了当时最常见和价格最合理的硬件平台:一台Intel 80386 PC。
从PC的外面看,最明显的部件就是机箱、键盘、鼠标和显示器。在机箱的前面有一些按钮,一
个小屏幕显示一些数字,还有一个软驱。现在的大多数系统还有一个CD-ROM期、驱动器。如
果你需要保护你的数据,那么还会有一个备份用的磁带机。这些设备一律被看作外设。
虽然CPU管理整个系统,但它并不是唯一的智能设备。所有的外设控制器,例如IDE控制器,也
都拥有一定程度的智能。在PC内部(图1.1),你可以看到一个主板,包括CPU或微处理器、内
Linux Kernel核心中文手册 file:///media/7C88B4DC88B495DC/redbatzero/linux内核图...
1 of 212 04/21/2011 11:34 AM
存和一些ISA或PCI外设控制卡的槽位。其中一些控制器,如IDE磁盘控制器可能内置在系统主板
上。
CPU1.
CPU,或者说微处理器,是所有计算机系统的心脏。微处理器进行数学运算,逻辑
操作并从内存中读取指令并执行指令,进而控制数据流向。计算机发展的早期,微
处理器的各种功能模块是由相互分离(并且尺寸上十分巨大)的单元构成。这也是
名词“中央处理单元”的起源。现代的微处理器将这些功能模块集中在一块非常小
的硅晶片制造的集成电路上。在本书,名词CPU、微处理器和处理器交替使用。
微处理器处理二进制数据:这些数据由1和0组成。这些1和0对应电气开关的开或
关。就好像42代表4个10和2个单元,二进制数字由一系列代表2的幂数的数字组
成。这里,幂数意味着一个数字用自身相乘的次数。10 的一次幂是10,10的2次幂
是10x10,10的3次幂是10x10x10,依此类推。二进制0001是十进制1,二进制数
0010是十进制2,二进制0011是十进制3,二进制0100是十进制4,等等。所以,
十进制42是二进制101010或者(2+8+32或2
1
+2
3
+2
5
)。在计算机程序除了使用二
进制表示数字之外,另一种基数,16进制,也经常用到。在这种进制中,每一位数
字表示16的幂数。因为十进制数字只是从0到9,在十六进制中10到15分别用字母
A,B,C,D,E,F表示。例如,十六进制的E是十进制的14,而十六进制的2A是十
进制的42(2个16+10)。用C语言的表示法(本书一直使用),十六进制数字使用
前缀“0x”:十六进制的2A写做0x2A。
Linux Kernel核心中文手册 file:///media/7C88B4DC88B495DC/redbatzero/linux内核图...
2 of 212 04/21/2011 11:34 AM
微处理器可以执行算术运算如加、乘和除,也可以执行逻辑操作例如“X是否大于
Y”。
处理器的执行由外部时钟控制。这个时钟,即系统时钟,对处理器产生稳定的时钟
脉冲,在每一个时钟脉冲里,处理器执行一些工作。例如,处理器可以在每一个时
钟脉冲里执行一条指令。处理器的速度用系统时钟的频率来描述。一个100Mhz的处
理器每秒钟接受到100,000,000次时钟脉冲。用时钟频率来描述CPU的能力是一
种误解,因为不同的处理器在每一次时钟脉冲中执行的工作量不同。虽然如此,如
果所有的条件同等,越快的时钟频率表示处理器的能力越强。处理器执行的指令非
常简单,例如:“把内存位置X的内容读到寄存器Y中“。寄存器是微处理器的内部
存储空间,用来存储数据并进行操作。执行的操作可能使处理器停止当前操作而转
去执行内存中其他地方的指令。正是这些微小的指令集合在一起,赋予现代的微处
理器几乎无限的能力,因为它每秒可以执行数百万甚至数十亿的指令。
执行指令时必须从内存中提取指令,指令自身也可能引用内存中的数据,这些数据
也必须提取到内存中并在需要的时候保存到内存中去。
Linux Kernel核心中文手册 file:///media/7C88B4DC88B495DC/redbatzero/linux内核图...
3 of 212 04/21/2011 11:34 AM
一个微处理器内部寄存器的大小、数量和类型完全决定于它的类型。一个Intel
80486处理器和一个Alpha AXP处理器的寄存器组完全不同。另外,Intel是32位宽而
Alpha AXP是64位宽。但是,一般来讲,所有特定的处理器都会有一些通用目的的寄
存器和少量专用的寄存器。大多数处理器拥有以下特殊用途的专用的寄存器:
Program Counter(PC)程序计数器
这个寄存器记录了下一条要执行的指令的地址。PC的内容在每次取指令的时候自动
增加。
Stack Pointer(SP)堆栈指针
处理 器 必 须 能 够 存 取 用 于 临 时 存 储 数 据 的 大 容 量 的 外 部 读 写 随 机 存 取 内存
(RAM)。堆栈是一种用于在外部内存中存放和恢复临时数据的方法。通常,处理
器提供了特殊的指令用于将数据压在堆栈中,并在以后需要是取出来。堆栈使用
LIFO(后进先出)的方式。换句话说,如果你压入两个值x和y到堆栈中,然后从堆
栈中弹出一个值,那么你会得到y的值。
一些处理器的堆栈向内存顶部增长,而另一些向内存的底部增长。还有一些处理器
两种方式都可以支持,例如:ARM。
Processor Status(PS)
指令可能产生结果。例如:“X寄存器的内容是否大于Y寄存器的内容?“可能产生
真或假的结果。PS寄存器保留这些结果以及处理器当前状态的其他信息。多数处理
器至少有两种模式:kernel(核心态)和user(用户态),PS寄存器会纪录能够确定
当前模式的那些信息。
Memory(
2.
内存)
所有系统都具有分级的内存结构,由位于不同级别的速度和容量不同的内存组成。
最快的内存是高速缓存存储器,就象它的名字暗示的一样-用于临时存放或缓存主内
存的内容。这种内存非常快但是比较昂贵,因此多数处理器芯片上内置有少量的高
速缓冲存储器,而大多数高速缓存存储器放在系统主板上。一些处理器用一块缓存
内存同时缓存指令和数据,而另一些处理器有两块缓存内存-一个用于指令,另一个
Linux Kernel核心中文手册 file:///media/7C88B4DC88B495DC/redbatzero/linux内核图...
4 of 212 04/21/2011 11:34 AM
用于数据。Alpha AXP处理器有两个内置的内存高速缓存存储器:一个用于数据(D-
Cache),另一个用于指令(I-Cache)。它的外部高速缓冲存储器(或B-Cache)将
两者混在一起。
最后一种内存是主内存。相对于外部高速缓存存储器而言速度非常慢,对于CPU内
置的高速缓存存储器,主内存简直是在爬。
高速缓存存储器和主内存必须保持同步(一致)。换句话说,如果主内存中的一个
字保存在高速缓存存储器的一个或多个位置,那么系统必须保证高速缓存存储器和
主内存的内容一样。使高速缓冲存储器同步的工作一部分是由硬件完成,另一部分
则是由操作系统完成的。对于其它一些系统的主要任务,硬件和软件也必须紧密配
合。
Buses
3.
(总线)
系统板的各个组成部分由被称为总线的连接系统互连在一起。系统总线分为三种逻
辑功能:地址总线、数据总线和控制总线。地址总线指定了数据传输的内存位置
(地址),数据总线保存了传输的数据。数据总线是双向的,它允许CPU读取,也
允许CPU写。控制总线包含了各种信号线用于在系统中发送时钟和控制信号。有许
多种不同的总线类型,ISA和PCI总线是系统用于连接外设的常用方式。
Controllers and Peripherals4.
(控制器和外设)
外设指实在的设备,如由系统板或系统板插卡上的控制芯片所控制的图形卡或磁
盘。IDE控制芯片控制IDE磁盘,而SCSI控制芯片控制SCSI磁盘。这些控制器通过不
同的总线连接到CPU并相互连接。现在制造的大多数系统都是用PCI或ISA总线将系
统的主要部件连接在一起。控制器本身也是象CPU一样的处理器,它们可以看作
CPU的智能助手,CPU拥有系统的最高控制权。
所有的控制器都是不同的,但是通常它们都有用于控制它们的寄存器。CPU上运行
的软件必须能够读写这些控制寄存器。一个寄存器可能包含描述错误的状态码,另
一个寄存器可能用于控制用途,改变控制器的模式。一个总线上的每一个控制器都
可以分别被CPU寻址,这样软件设备驱动程序就可以读写它的寄存器进而控制它。
IDE电缆是一个好例子,它给了你分别存取总线上每一个驱动器的能力。另一个好例
子是PCI总线,允许每一个设备(如图形卡)被独立存取。
Linux Kernel核心中文手册 file:///media/7C88B4DC88B495DC/redbatzero/linux内核图...
5 of 212 04/21/2011 11:34 AM
剩余211页未读,继续阅读
资源评论
lai237052648
- 粉丝: 0
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功