<自已动手写操作系统> 学习扎记让操作系统走进保护模式

        这一章的比较简短,没有太多的东东,不过内容感觉稍稍有些货不对版,标题是让操作系统走进保护模式,其实大部分内容是在讲述怎么样加载操作系统的Loader到内存.不过思路还是值得记录一下,  引导扇区只有512byte,如果同时加载内核并初始化环境可能不够用,作者中间增加了一个Loader模块,引导扇区负责把Loader加载进内存并把控制权交给它,Loader负责加载内核初始化保护模式环境,并把控制权交给内核,内核开始启动.Loader是个com文件,同时也便于调试.

 

 背景知识点:

CHS模式和LBA模式的转换

CHS模式 (cylinder,head,sector)  是初始的硬盘寻址方法,你要如果要在硬盘上寻找一个扇区,必需要提供柱面号,磁头号和扇区号,如果你了解硬盘的物理结构,这种寻址方法理解还不是太困难。

LBA模式(Logic Block Address) 是一种逻辑寻址,把所有的扇区在逻辑上看成是一个一维数组,顺序编号,这简单多了,现在的硬盘都支持。

CHS到LBA转换公式

 #lba = (#c*H + #h) *S + #s -1

#c 是柱面号

#h 是磁头号

#s 是扇区号

H 是每个柱面的磁头数

S 是每个磁道的扇区数

-1 是因为lba 从0开始

 

LBA到CHS转换通过纯数学都可以推导出来了,

#c = #lba / (S * H)  

#h = (#lba/S)% H  

#s = #lba % S + 1

 书上计算磁头号是公式是 #h = (#lba /S)  & 1,这是因为磁头数已知是2, mod 2的结果只可能是0或1,也是就是取决于数二进制的最后一位是0或1,因此只要&1就可以得到磁头数,这算是一种优化了吧。 

 

 参考

http://zh.wikipedia.org/wiki/LBA 

 

 

posted @ 2011-04-21 23:26  十三  阅读(245)  评论(0编辑  收藏  举报