Linux内核注释-第4节 系统初始化.pdf

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4 章 系统初始化 第4 章 系统初始化 当你想要运行程序时,你需要把程序的文件名敲入 shell ――或者更为流行的,在如 GNOME 或者 KDE 等之类桌面环境中点击相应的图标――这样就能将其装载进内核并运 行。但是,首先必须有其它的软件来装载并运行内核;这通常是诸如LOADLIN 或者LILO 之类的内核引导程序。更进一步,我们还需要其它的软件来装载运行内核引导程序――称之 “内核引导程序的引导程序”――而且看起来似乎运行内核引导程序的引导程序也需要内核 引导程序的引导程序的引导程序,等等,这个过程是无限的。 这个无限循环的过程必然最终在某个地方终止,这就是硬件。因此,在最低的层次上, 启动系统的第一步是从硬件中获得帮助。该硬件总是运行一些短小的内置程序――软件,但 是这些软件是被固化在只读存储器中,存储在已知地址中。因此,在这种情况下就不需要软 件引导程序了――它能够运行更大更复杂的程序,直到内核自身装载成功为止。按照这种方 式,系统自己的引导过程(bootstrap )会引发系统的启动,当然这只是术语“系统引导 (booting )”的一个比喻。虽然不同体系结构的引导过程的具体细节差异很大,但是它们的 原则都基本相同。 前面的工作都完成以后,内核就已经成功装载了。随后内核可以初始化自身以及系统的 其它部分。 本章首先将简单介绍基于x86 PC 机的典型自启动方式,接着回顾一下每一步工作在什 么时机发生,最后我们还要介绍的是内核的相应部分。 引导PC机 本节简要介绍x86 PC 是如何引导的。本节的目的不是让你精通PC 是怎样引导的―― 这超出了本书的范围――而是向你展示特定体系结构一般的引导方式,为下文中的内核初始 化进行铺垫。 首先,机器中的每个CPU 都要自行初始化,接着可能要用几分之一秒的时间来执行自 测试。在多处理器的系统中,这个过程会更复杂些――但是实际上也并不多。在双处理器的 Pentium 系统中,一个CPU 总是作为主CPU 存在,另外一个CPU 则是辅CPU 。主CPU 执 行启动过程中的剩余工作,随后内核才会激活辅CPU 。在多处理器的Pentium Pro 系统中, CPU 必须根据Intel 定义的算法“抢夺标志”――来动态决定由哪个CPU 启动系统。取得标 志的CPU 启动系统,随后内核激活其它的CPU 。无论是哪种情况,启动程序的剩余部分只 与一个CPU 有关。这样,在随后的一段时间内,我们可以认为该系统中只有一个CPU 是可 用的,而不考虑其它的CPU,或者说这些CPU 被暂时隐藏了。另一方面,内核还需要明确 的激活所有其它的CPU ――这一点你可以在本章后续部分看到。 接下来, CPU 从0xfffffff0 单元中取得指令并执行,这个地址非常接近于32 位CPU 的 最后可用的地址。因为大多数PC 都没有4GB 的RAM ,所以通常在这个地址上并没有实际 内存的。内存硬件可以虚拟使用它。对那些确实有4GB 内存的机器来说,它们也只是仅仅 损失了供BIOS 使用的顶端地址空间末尾的少量内存(实际上BIOS 在这里只保留了64K 的 空间――这种损失在4GB 的机器中是可以忽略的)。 该地址单元中存储的指令是一条跳转指令,这条指令跳转到基本输入输出(BIOS )代 码的首部。BIOS 内置在主板中,它主要负责控制系统的启动。请注意CPU 实际上并不真正 关心BIOS 是否存在,这样就使得在诸如用户定制的嵌入系统之类的非PC 体系结构的计算 - 34 - 第4 章 系统初始化 机中使用Intel 的CPU 成为可能。CPU 执行在目标地址中发现的任何指令,在这里使用跳转 指令转移到BIOS 只是PC 体系结构的一部分。(实际上,跳转指令自己是BIOS 的一部分, 但是这不是考虑这个问题的最方便的方法。) BIOS 使用内置的规则来选择启动设备。通常情况下,这些规则是可以改变的,方法是 在启动过程开始时按下一个键(例如,在我的系统中是 Delete 键)并通过一些菜单选项浏 览选择。但是,通常的过程是BIOS 首先试图从软盘启动,如果失败了,就再试图从主硬盘 上启动。如果又失败了,就再试图从CD-ROM 上启动。为了使问题更具体,这里讨论的情 况假定是最普通的,

文档评论(0)

0520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档