跟我一起写操作系统

    返回首页    发表留言
本文作者:李德强
          第二节 引导程序与0x7c00
 
 

        对于主流的BIOS程序来说,可识别的引导设备有硬盘、光盘、U盘、软盘和网络等。无论采用哪一种引导方式,其原理都是大同小异。早期在写操作系统内核时常常使用软盘来引导计算机。 硬盘与软盘的物理存储方式类似,只不过是在各个层面上与软盘有不同的数量分别和性能差异。下面介绍一下软盘的存储结构。


        一张3.5英寸的软盘分只有一个磁片,磁片的正反两面叫作柱面。每个柱面又有80个同心圆环区域,叫作磁道。而每个磁道又被分为18个扇区,如下图所示:


        当CPU加电或被复位时,CS:IP为0xffff:0x0000,这时CPU要执行的指定被赋值为一个长跳转,载入BIOS程序并运行BISO程序。当引导设备是软盘或硬盘时,BIOS程序会执行int 0x19中断,并在此中断里将软盘或硬盘的0号柱面、0号磁道、1号扇区读入(一共512个字节,并以0xaa55结束),并放入地址为0x7c00的内存中,如下图所示:

        读入了引导程序之后,BIOS程序会将CPU的CS寄存器和IP寄存器置为0x0000:0x7c00,于是CPU开始执行0x7c00处的程序,也就是说我们的操作系统程序在此时正式开始执行。

    返回首页    返回顶部
#1楼  匿名  于 2019年10月14日22:51:08 发表
 
这里柱面解释应该是错误的,一个磁盘有两个磁面。磁盘上磁道的那个圆应该叫做柱面,柱面编号从0开始,有多少个磁道,就有多少个柱面,一个磁盘大概有几十个柱面。一张磁盘上下有两个磁头。柱面/磁头/扇区来定位磁盘上的唯一区域。
  看不清?点击刷新

 

  Copyright © 2015-2023 问渠网 辽ICP备15013245号