首页 理论教育 操作系统实现之路:硬盘逻辑结构与引导扇区功能

操作系统实现之路:硬盘逻辑结构与引导扇区功能

时间:2023-10-21 理论教育 版权反馈
【摘要】:显然,这两个引导扇区是与操作系统强相关的。这时候MBR上的代码,必须能够找到Windows或Linux的引导扇区,并把它们读入内存中,完成相应操作系统的引导。与硬盘的MBR一样,逻辑分区的相关信息,被记录在扩展分区的第一个扇区上。但是与普通分区不一样的是,扩展分区上的逻辑分区是不能引导操作系统的,即操作系统不能安装在逻辑分区上。

操作系统实现之路:硬盘逻辑结构与引导扇区功能

可以在逻辑上把硬盘理解为一个线性数组,这个数组的元素就是扇区。每个扇区按照其在硬盘上的位置进行编号,第一个扇区就是大名鼎鼎的MBR(Master Boot Record,主引导区)。

为了方便管理,一个硬盘可以划分为若干个逻辑分区,每个分区占据了硬盘上的一部分连续的存储空间。一般情况下,分区在硬盘上的位置和大小,可用其在硬盘上的起始扇区号、扇区数量进行描述。目前的实现是,一个物理硬盘,最多可以分成四个分区,分区的位置、大小、属性等信息,记录在一个只有四个元素的线性表里,这个表就是分区表

分区表就存放在MBR中,且在MBR中的固定位置处。因为一般情况下,硬盘的每个扇区的容量是512B,如果分区表在MBR中的位置不固定,就无法明确读出分区表的内容。但分区表却不是MBR的唯一内容,MBR还存放了引导扇区代码。BIOS在发现一个可引导的硬盘之后,会把MBR的代码读入内存,然后跳转到开始处执行。需要说明的是MBR的代码一般是与操作系统无关的。这可能会引起一些疑惑,下面稍作解释。

操作系统是安装在硬盘分区上的,至少到目前为止,尚未见有哪个操作系统,不对硬盘进行分区(或者说把整个硬盘看做一个分区),而直接安装。而操作系统本身特定的引导代码,是放在其所在分区的第一个扇区上的。比如,一个硬盘被划分成了两个分区,一个分区的起始扇区号是2(MBR的扇区号是1),扇区数量是M。另外一个分区的起始扇区号是M+2,扇区数量是N。假设第一个分区上安装的是Windows操作系统,第二个分区上安装的是Linux操作系统。这样,Windows操作系统的引导扇区,是第2个物理扇区(第一个分区的第一个扇区),而Linux的引导扇区,则是第M+2个物理扇区。显然,这两个(第2个和第M+2个)引导扇区是与操作系统强相关的。

但BIOS最初读入的是MBR。一旦跳入MBR执行,BIOS就撒手不管了。这时候MBR上的代码,必须能够找到Windows或Linux的引导扇区,并把它们读入内存中,完成相应操作系统的引导。因此MBR的功能代码本身需要完成两个问题的决策

(1)在硬盘上有多个分区,每个分区都有可能安装操作系统的情况下,如何选择一个分区进行继续引导?

(2)如果确定了一个分区,如何得到这个分区的引导扇区的物理位置(即扇区在整个物理磁盘上的编号)?

显然,在第一个问题确定的情况下,第二个问题很容易解决。因为这时候分区编号已经确定,只要读取分区表,并找到对应的记录,就可读出该分区的第一个扇区的编号,这就是引导扇区。对于第一个问题,是通过在分区表中设置一个活动标志解决的。每个分区表项(对应一个分区)中,都有一个字节,叫做活动标志,且四个分区表项中,必须只有一个分区的活动标志被设置,这个分区就是活动分区。安装在这个分区上的操作系统会被引导。具体是由谁来设置这个标志呢?答案是操作系统。在安装操作系统的时候,会让用户选择要安装的分区(比如Windows,会列出硬盘的分区情况,用C:、D:等盘符表示)。一旦选定一个分区,Windows安装程序就会把该分区对应的分区表项的活动标志设置为1,同时清除其他分区表项的活动标志。

按照这种规则,最后安装的操作系统,往往会“压制”以前安装的操作系统,使它们无法引导。但只要知道了这个过程,就可以利用一些工具,改变这种情况。比如用户最后安装的是Windows操作系统,在启动Windows后,可以通过运行在Windows上的工具,把Linux操作系统所在分区修改为活动分区。这样在下一次启动的时候,Linux就会被引导。但是为了安全起见,操作系统都提供了对MBR的保护功能,不能直接写入MBR。这样就很麻烦了,一旦成功安装了Windows,就意味着原有的Linux(与新安装的Windows在不同分区)不能直接引导了,除非借助于Windows的引导程序进行引导。但这也不是绝对的,比如可以通过光盘引导的操作系统,来修改MBR,或者可以在Windows分区上安装Hello China,由Hello China帮用户完成修改活动分区标志的工作。

再回到原来的话题,MBR根据活动标志选择一个分区,并根据分区表中的分区起始位置确定操作系统引导扇区,然后把该扇区读入内存内的一块连续空间内,并跳转到该空间的起始位置处继续执行。由此可见,MBR本身,是与特定操作系统无任何关系的。实际上,MBR扇区的可执行代码,自从DOS开始,就一直没有改变过。(www.xing528.com)

一个物理硬盘最多有四个分区,某些软件公司,比如微软,认为这是不够的。于是又发明了一种技术,叫做扩展分区。扩展分区本质上就是一个硬盘分区(四个分区之一),但是在此基础上,又进行进一步扩展,把一个分区再进行细分,分为更小的分区(这些更小的分区叫逻辑分区),即分区套分区的结构。与硬盘的MBR一样,逻辑分区的相关信息,被记录在扩展分区的第一个扇区上。但是与普通分区不一样的是,扩展分区上的逻辑分区是不能引导操作系统的,即操作系统不能安装在逻辑分区上。既然操作系统不能安装在逻辑分区上,那么肯定也不能安装在扩展分区上了。因为扩展分区是逻辑分区的“容器”,其本身没有空间存储操作系统文件。因此要安装操作系统,必须安装在普通的磁盘分区上。为显示这种“容纳”操作系统的特性,普通分区又被冠以“主要分区”的称号。

至此,下列一些概念或原理,读者应该清楚:

●MBR和分区表。

●MBR上的代码与操作系统无关。

●操作系统特定的引导扇区,是其所安装分区的第一个扇区。

●分区活动标志。

●主要分区、扩展分区、逻辑分区。

●MBR与操作系统引导扇区的关系。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈