zoukankan      html  css  js  c++  java
  • <自已动手写操作系统> 学习扎记让操作系统走进保护模式

            这一章的比较简短,没有太多的东东,不过内容感觉稍稍有些货不对版,标题是让操作系统走进保护模式,其实大部分内容是在讲述怎么样加载操作系统的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 

  • 相关阅读:
    ST的电机开发硬件套件NUCLEO-G431RB和X-NUCLEO-IHM16M1
    计算机软件世界的思维方式
    vue 动态路由配置,路由由后台返回
    element Cascader组件通过最后一级ID查找匹配的父级ID
    git push本地代码成功,远程提交未更新
    面试整理之原理问题
    JS执行环境与作用域理解
    webpack原理类型问题
    __webpack_require__(...) is not a function
    express+cors模拟解决跨域
  • 原文地址:https://www.cnblogs.com/jjyjjyjjy/p/2023260.html
Copyright © 2011-2022 走看看