zoukankan      html  css  js  c++  java
  • 磁盘引导程序原理及简介

    一、介绍

    • 系统开机或者重启
      1. BIOS 加电自检 ( Power On Self Test -- POST )。BIOS执行内存地址为 FFFF:0000H 处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。
      2. 读取主引导记录(MBR)。当BIOS检查到硬件正常并与 CMOS 中的设置相符后,按照 CMOS 中对启动设备的设置顺序检测可用的启动设备。BIOS将相应启动设备的第一个扇区(也就是MBR扇区)读入内存地址为0000:7C00H 处。
      3. 检查0000:7DFEH-0000:7DFFH(MBR的结束标志位)是否等于55AAH,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则显示"NO ROM BASIC"然后死机。
      4. 当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备。启动设备的MBR将自己复制到0000:0600H处, 然后继续执行。
      5. 根据MBR中的引导代码启动引导程序。
    引导程序

    二、几个问题

    • 为什么需要磁盘引导程序


    为什么需要磁盘引导程序而不是直接载入操作系统?或许是因为历史原因,BIOS最初是为最原始的8位PC所创,8位的PC磁盘很小,所以BIOS只能先载入磁盘引导程序然后通过磁盘引导程序导入操作系统。

    • 磁盘引导程序为什么要从1扇区,0磁头,0磁道加载到7c00H处


    “引导程序加载器--int19”。由于BIOS加载磁盘引导程序时需要调用系统中断int19来加载引导程序,而这个中断指定了将磁盘1扇区,0磁头,0磁道加载到7c00H处。

    • 磁盘引导程序为什么最大只能是512字节


    “A bootstrap must be exactly512 bytes long because of the two byte check and the one sector limitation.”
    “一个引导程序必须为512字节,因为他的大小有一个扇区的限制,最后两个字节需要设置为'0xAA55'。”

    • 磁盘引导程序为什么是16位


    因为DOS系统是16位,X86系统都向后兼容引导时的16位模式。

  • 相关阅读:
    mysql 组合聚集函数
    mysql distinct()函数 去重
    mysql sum()函数 , 计算总和
    mysql max()函数,min()函数,获取最大值以及最小值
    mysql count() 函数,对结果统计计数
    三个实例演示 Java Thread Dump 日志分析
    借助LVS+Keepalived实现负载均衡
    配置Tomcat成为系统服务
    快速理解Docker
    tomcat 启动时设置 java 参数,mark
  • 原文地址:https://www.cnblogs.com/hualiu0/p/5743864.html
Copyright © 2011-2022 走看看