博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

与时间赛跑的使者

我想成为一名与时间赛跑的巨人,因为我感到自己需要学习的太多太多,可惜以前失去了好多时间,虚度了我的大好时光!有多大的悔恨已经不能改写这过去的一切!只有把握现在,和时间比高下获得更多的东西才能改变我的命运! 本人收藏了很多好的文章,以和大家分享! 版权归属原保作者所有! “只要别人会的,我就应该会”
yfl.cublog.cn


计算机是怎么被启动(引导,boot)的?

概述 

计算机通上电后,首先会执行一段BIOS程序,这段BIOS程序是被烧在ROM(只读存储器,Read Only Memory)中的,这段程序会跟据用户指定的顺序,依次查找每一个可能的硬件,包括软盘、硬盘、光驱等,看上面是否有可引导记录。如果有,就将它们此引 导记录(其实是一小段引导程序)载入到内存的0x7C00处,然后跳转到0x7C00处执行,后面的工作就完全由引导程序完成了。因此,可以说引导程序是 各个操作系统所执行的第一个程序。引导程序通常都很小,只有一扇区(512B)大小,因此不可能容纳下整个操作系统内核。一般的操作系统所提供的引导程序 的工作都是将真正的操作系统内核读到内存中,然后跳转到操作系统内核中去执行。

  无论从软盘、硬盘还是光盘启动,基本的原理工作都类似,当然在一些细节上有些小差别。下面我们就来分别看一看这些不同之处。以便我们在编写操作系统引导程序的时候,可以使编出写的引导程序适用与各种设备上(软盘、硬盘、光盘)。

从软盘启动计算机

  从软盘启动计算机是最简单的,当然也是最基础的。在下面的章节中,我们都可以看到软盘启动计算机的方式严重的影响了从硬盘、光盘启动计算机,几 乎都很类似,这也不奇怪,毕境最早出现在计算机上的就是软驱,而任何技术的发展都是以前面的技术为基础,这样一步步发展而来的。

  我们熟悉的1.44M软盘有两面,每一面有80个磁道,每个磁道有18个扇区,每个扇区有512字节(2 * 80 * 18 * 512 = 1474560 = 1.44 MB)。引导记录是放在这张磁盘的第一个扇区上,也就是0面0磁道1扇区(这里扇区号从1开始编号)。而且引导记录有个一标志,就是最后两个字节(511 字节及512字节)是“55AA”。当BIOS读取第一个扇区时,它会检查最后两个字节是不是“55AA”。若是,BIOS就认为这是一个引导记录,然后 就跳到此扇区开始处开始执行,否则,认为此软盘没有引导记录,而开始查找下一个驱动器是否含有引导记录。

从硬盘启动计算机

MBR

  MBR全称是Master Boot Record,硬盘主引导记录,它存在于硬盘的第一个物理扇区,也就是0面0磁道1扇区(其实硬盘的结果在逻辑上可以看为与软盘一样,也有面、磁道、扇 区,只不过面更多,每面的磁道数更多,每磁道上的扇区数更多罢了)。还记得在软盘时,0面0磁道1扇区也是主导扇区么?不过这里称之为主引导扇区,自然与 软盘上的引导扇区不同。

  软盘上的引导扇区的作用是把软盘上存放的真正的操作系统内核读到内存中,然后跳到内核去执行。而MBR的作用却是找到硬盘上的活动分区,然后把 活动分区上的引导记录读到内存中,然后再跳到此引导记录中去执行,后面的过程就与从软盘启动计算机一致了。这里,你可以把硬盘上的活动分区都看成一是个软 盘。我们知道一个硬盘可以分成多个分区,也就是说一个硬盘可以视为由多个软盘组成,每一个分区都可以有自己的引导记录,这就如每个软盘上都有自己的引导记 录一样。那么哪一个分区(软盘)用来真正引导计算机呢?这就由MBR来完成,MBR查看每个分区记录,当找到一个活动分区时,就把此活动分区的引导记录载 入。显然,必须有一个地方来存放硬盘的分区记录,这就是所谓的硬盘分区表。这个硬盘分区表也在MBR中,不过MBR只有一个扇区大小,既要有用来查找硬盘 分区表的代码,还要包含硬盘分区表,所以这个硬盘分区表不可能很大。实际上,这个表只有四个表项,也就是说在一块硬盘里,最多有4个分区能用来引导电脑。

  再来完整的看看MBR的流程,首先MBR被BIOS载入到0x7C00处,然后BIOS跳转到0x7C00处执行,MBR先把自己搬移到0×0600 处(因为以后活动分区的引导记录要放在0x7C00处),随后MBR开始查找内部的硬盘分区表表项。每个硬盘分区表表项的第一个字节只能是0×80或者0 ×00。如果是0×80表示这是一个活动分区,然后MBR再从这个表项中读出此分区在硬盘上的位置,将此分区的第一个扇区(含有此分区的引导记录)读入 0x7C00处,然后跳到0x7C00处执行。如果表项的第一个字节是0×00,则查找下一个表项,直到四个表项都找完为止。如果此第一个字节既不是0× 80又不是0×00,则打印一条错误信息。

  MBR的整个结构如图所示1)

地址 说明 长度(Byte)
0×000 MBR中的执行代码 440
0x1B8 磁盘商标(可选) 4
0x1BE 分区表(共4项,每项16字节) 64
0x1FE 引导记录标志(55AA) 2

分区表表项

  分区表表项结构如图所示:

偏移量 说明 长度
0×0 状态码,0×80表示此为活动分区,0×00表示此为非活动分区,其它值无效 1
0×1 分区的第一个扇区的CHS地址 3
0×4 分区类型(FAT、NTFS、ext2、ext3等) 1
0×5 分区的最后一个扇区的CHS地址 3
0×8 分区的第一个扇区的LBA地址 4
0xC 分区的长度(多少个扇区) 4

从光盘记动计算机

其它资料


发表于: 2007-10-22 ,修改于: 2007-10-22 18:25,已浏览253次,有评论0条 推荐 投诉


网友评论

发表评论