minix3系统引导过程.pdfVIP

  • 3
  • 0
  • 约4.05千字
  • 约 11页
  • 2024-03-18 发布于山西
  • 举报

MINIX3操作系统引导过程

•BIOS系统首先会加电自检,判断计算机硬件能否

满足运行的基本条件,如果硬件出现问题,主板

会发出不同含义的蜂鸣,启动中止。在一系列的

检测工作后,将会按照BIOS中设置的启动顺序,

依次检测每一个启动设备的第一个扇区,如果该

扇区是以“0xAA55”结束的,表明这个设备可

以用于启动,则BIOS会认为这是一个引导扇区,

并将这个扇区的内容装载到内存中0000:7c00处,

并将cpu的控制权跳转到这里,并执行这里的代

码。代码masterboot.s文件存放在源代码树的

boot目录中,其编译好的二进制代码会被放置在

硬盘的MBR中,在系统引导时执行以下操作:如

果是通过硬盘引导,且该硬盘的一个分区被设置

成为活动分区,则从该活动分区引导;否则,查

找下一块硬盘,直到成功。

MBR

•由于MBR除了代码还包含了硬盘的分区信息,则计算机

可根据这些分区信息找到需要导入的操作系统。MINIX中,

启动可以从软盘或者硬盘完成;如果启动从软盘完成,则

软盘上的MBR指明了硬盘的分区信息;计算机首先将软

盘中的MBR导入内存,之后按照此MBR的指示将相应硬

盘分区中的系统导入内存;如果从硬盘启动,则系统首先

导入第一块硬盘的MBR(因为它在最前面),之后按照这个

MBR的信息导入相应硬盘分区的系统;如果此MBR指示

系统存在于另一个硬盘的某分区,则还需继续导入此硬盘

的分区表。可见MBR记录了硬盘分区的信息,并提供给

系统活动分区的位置;MBR的代码根据分区表提供的活

动分区的位置,进而将活动分区的首扇区导入,之后将活

动权交给这段首扇区的代码,完成操作系统的导入。下面

让我们看看MBR的代码部分

masterboot.s

•LOADOFF=0x7C00!本段代码被加载的地址

•BUFFER=0x0600!第一块空闲内存空间

•PART_TABLE=446!分区表位置

•PENTRYSIZE=16!分区表项大小

•MAGIC=510!标识数0xAA55的位置

•bootind=0

•sysind=4

•lowsec=8

•.text

•!寻找活动分区,载入其第一个分区并运行之

•master:

•!将ax、ds、es、ss置0,将LOADOFF载入sp

•xorax,ax

•movds,ax

•moves,ax

•cli!关中断

•movss,ax

•movsp,#LOADOFF

•sti!开中断

•!将从ds:si(0x0000:0x7C00)开始的512个字节拷贝到es:di

(0x0000:0x0600)

•movsi,sp!将0x7C00装入si

•pushsi!将si(即0x7C00)压栈

•movdi,#BUFFER

•movcx,#512/2

•cld

•repmovs

•jmpfBUFFER+migrate,0!远跳转到拷贝后的migrate处开始执

•migrate:

•!查找活动分区

•findactive:

•testbdl,dl!如果dl最高位为0(即不存在引导分区)

•jnsnextdisk!则跳转到nextdisk

•movsi,#BUFFER+PART_TABLE!将分区表地址保存到si中

•find:cmpbsysind(si),#0!如果该分区未使用则跳转到nextpart

•jznextpart

•testbbootind(si),#0x80!如果不是引导分区则跳转到nextpart

文档评论(0)

1亿VIP精品文档

相关文档