最近学FreeBSD的时候,在分区方面遇到一些疑问,顺便就了解了一下主分区,逻辑分区,以及磁盘存储的一些概念,发现了一篇好文章,在此转载

一、系统引导过程简介

  系统引导过程主要由以下几个步骤组成(以硬盘启动为例)

  1、 开机;

  2、 BIOS加电自检(POST——Power On Self Test),内存地址为0fff:0000;

  3、 将硬盘第一个扇区(0头0道1扇区,也就是Boot Sector)读入内存地址0000:7c00处;

  4、 检查(WORD)0000:7dfe是否等于0xaa55.若不等于则转去尝试其他介质;如果没有其他启动介质,则显示 “No ROM BASIC” ,然后死机;

  5、 跳转到0000:7c00处执行MBR中的程序;

  6、 MBR先将自己复制到0000:0600处,然后继续执行;

  7、 在主分区表中搜索标志为活动的分区。如果发现没有活动分区或者不止一个活动分区,则停止;

  8、 将活动分区的第一个扇区读入内存地址0000:7c00处;

  9、 检查(WORD)0000:7dfe是否等于0xaa55,若不等于则显示 “Missing Operating System”,然后停止,或尝试软盘启动;

  10、 跳转到0000:7c00处继续执行特定系统的启动程序;

  11、 启动系统。

  以上步骤中(2),(3),(4),(5)步由BIOS的引导程序完成;(6),(7),(8),(9),(10)步由MBR中的引导程序完成。

  一般多系统引导程序(如Smart Boot Manager, BootStar, PQBoot等)都是将标准主引导记录替换成自己的引导程序,在运行系统启动程序之前让用户选择想要启动的分区。而某些系统自带的多系统引导程序(如 LILO,NT Loader等)则可以将自己的引导程序放在系统所处分区的第一个扇区中,在Linux中即为两个扇区的SuperBlock.

  注:以上步骤中使用的是标准的MBR,多系统引导程序的引导过程与此不同。

二、硬盘结构及参数

  3D参数(Disk Geometry):CHS(Cylinder/Head/Sector) C-Cylinder柱面数表示硬盘每面盘片上有几条磁道,最大为1024(用10个二进制位存储);H-Head磁头数表示硬盘总共有几个磁头,也就是几面盘片,最大为256(用8个二进制位存储);S-Sector扇区数表示每条磁道上有几个扇区,最大为63(用6个二进制位存储)。

  1、引导扇区

  Boot Sector组成

  Boot Sector也就是硬盘的第一个扇区,它由MBR(Master Boot Record), DPT(Disk Partition Table) 和 Boot Record ID三部分组成。 MBR又称为主引导记录,占用Boot Sector的前446个字节(0~0x1BD),存放系统主引导程序(它负责从活动分区中装载并且运行系统引导程序)。 DPT即主分区表占用64个字节(0x1BE~0x1FD),记录磁盘的基本分区信息。主分区表分为四个分区项,每项16个字节,分别记录每个主分区的信息(因此最多可以有四个主分区)。 Boot Record ID即引导区标记占用两个字节(0x1FE~0x1FF),对于合法引导区,它等于0xaa55,这是判别引导区是否合法的标志)。

  Boot Secor具体结构如图:

  2、分区表结构简介

  分区表由四个分区项构成,每一项结构如下:

  BYTE State:分区状态,0=未激活,0x80=激活(注意此项);

  BYTE StartHead:分区起始磁头号;

  WORD StartSC:分区起始扇区和柱面号,底字节的底6位为扇区号,高2位为柱面号的第9,10位,高字节为柱面号的低8位;

  BYTE Type:分区类型,如0x0B=FAT32,0x83=Linux等,00表示此项未用;

  BYTE EndHead:分区结束磁头号;

  WORD EndSC:分区结束扇区和柱面号,定义同前;

  DWORD Relative:在线性寻址方式下的分区相对扇区地址(对于基本分区即为绝对地址);

  DWORD Sectors:分区大小(总扇区数)。

  在DOS或Windows系统下,基本分区必须以柱面为单位划分(Sectors*Heads个扇区),如对于CHS为764/256/63的硬盘,分区的最小尺寸为256*63*512/1048576=7.875MB.

  由于硬盘的第一个扇区已经被引导扇区占用,所以一般来说,硬盘的第一个磁道(0头0道)的其余62个扇区是不会被分区占用的。某些分区软件甚至将第一个柱面全部空出来。

  扩展分区结构如图:

三. 系统启动过程简介

系统启动过程主要由一下几步组成(以硬盘启动为例):

1. 开机 :-)
    2. BIOS 加电自检 ( Power On Self Test -- POST )内存地址为 0ffff:0000
    3. 将硬盘第一个扇区 (0头0道1扇区, 也就是Boot Sector)读入内存地址 0000:7c00 处.
    4. 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于则转去尝试其他启动介质, 如果没有其他启动介质则显示"No ROM BASIC" 然后死机.
    5. 跳转到 0000:7c00 处执行 MBR 中的程序.
    6. MBR 首先将自己复制到 0000:0600 处, 然后继续执行.
    7. 在主分区表中搜索标志为活动的分区. 如果发现没有活动分区或有不止一个活动分区, 则转停止.
    8. 将活动分区的第一个扇区读入内存地址 0000:7c00 处.
    9. 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于则显示 "Missing Operating System" 然后停止, 或尝试软盘启动.
    10. 跳转到 0000:7c00 处继续执行特定系统的启动程序.
    11. 启动系统 ...

以上步骤中 2,3,4,5 步是由 BIOS 的引导程序完成. 6,7,8,9,10步由MBR中的引导程序完成.

一般多系统引导程序 (如 SmartFDISK, BootStar, PQBoot 等)都是将标准主引导记录替换成自己的引导程序, 在运行系统启动程序之前让用户选择要启动的分区.
    而某些系统自带的多系统引导程序 (如 lilo, NT Loader 等)则可以将自己的引导程序放在系统所处分区的第一个扇区中, 在 Linux中即为 SuperBlock (其实 SuperBlock 是两个扇区).

注: 以上各步骤中使用的是标准 MBR, 其他多系统引导程序的引导过程与此不同.

请参见原文
http://blog.sina.com.cn/s/blog_56f9f1600100090x.html

http://hi.baidu.com/noname2236/blog/item/56f1be1ccaed478886d6b672.html

转载于:https://www.cnblogs.com/hopeworld/archive/2011/03/27/1997298.html

转:硬盘结构简介的好文(转)---MBR、分区表、CHS等概念相关推荐

  1. 硬盘结构详解;详解MBR和GPT分区结构;详解raid磁盘阵列

    目录 思维导图 硬盘的物理结构 硬盘读写过程 寻址方式 CHS寻址 LBA寻址 硬盘的分区结构 MBR分区结构 0号扇区内容 扩展分区 GPT分区结构 文件系统 文件系统的定义 文件系统的结构 rai ...

  2. html文档基本结构由哪三对,第3章 网页制作及HTML语言基本结构简介.ppt

    第三章 网页制作与HTML语言基本结构简介 本章提要 静态网页与动态网页 Dreamweaver MX制作网页 HTML语言的基本结构 3.1网页制作概述 3.1.1静态网页与动态网页 1.静态网页 ...

  3. ORACLE内存结构简介

    ORACLE数据库作为世界上一款功能强大的数据库管理软件,功能体系特别庞大.我们有必要对它的每一部分学习了解,然后才从全局的角度进行有效把握.我们会着重从理论基础体系角度再逐步到实战应用.实际上,如果 ...

  4. UE4-目录结构简介

    UE4-目录结构简介 Time: 2020年10月15日17:16:30 Author: Yblackd UE4-目录结构简介 1. 关联账户 2. 通用目录 4. 引擎特有的目录 5. 游戏项目目录 ...

  5. html语言简介 ppt,网页制作与HTML语言基本结构简介.ppt

    网页制作与HTML语言基本结构简介.ppt 第三章网页制作与HTML语言基本结构简介 本章提要静态网页与动态网页DreamweaverMX制作网页HTML语言的基本结构 3 1网页制作概述 3 1 1 ...

  6. Chromium源码目录结构简介

    Chromium源码目录结构简介入门必备. High-level overview 高级概述 Chromium is separated into two main parts (excluding ...

  7. .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二)

    .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二) 原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二) 先上项目解决方案图 ...

  8. Laravel 文件夹结构简介

    表 1.1:Laravel 文件夹结构简介 文件夹名称 简介 app 应用程序的业务逻辑代码存放文件夹 app/Console 存放自定义 Artisian 命令文件 app/Http/Control ...

  9. 硬盘结构,主引导记录MBR,硬盘分区表DPT,主分区、扩展分区和逻辑分区,电脑启动过程...

    filex的文件系统看的云里雾里,还是先总结下FAT的一些基本知识吧. 硬盘结构 硬盘有很多盘片组成,每个盘片的每个面都有一个读写磁头.如果有N个盘片.就有2N个面,对应2N个磁头(Heads),从0 ...

最新文章

  1. Installation error: INSTALL_FAILED_CONTAINER_ERROR
  2. 源码包部署tomcat
  3. MySQL Administrator
  4. Kali忘记登录密码——修改root密码
  5. JWT/JJWT JSON WEB TOKEN介绍和使用
  6. ArcEngine 9.3.1与64位操作系统 80040154
  7. pytorch——张量操作与线性回归
  8. CentOS 系列安装 Docker
  9. Centos定时备份 MySQL数据库
  10. class文件的加载过程
  11. Windows窗口消息大全
  12. 今天我又发现一个宝藏应用:时光序-个人日程管理应用,记录生活的方方面面!
  13. 计算机分数转化成小数,分数换算成小数的方法(分数转换小数必背表)
  14. USB过压过流保护芯片,可调限流4A,6V过压关闭
  15. js中利用prompt和parseFloat来实现用户体温华氏和摄氏的提取(18)
  16. 关于数据驱动消费金融业务的几点看法
  17. 大数据方面的核心技术
  18. python的内置字典数据类型_python 数据类型元组与字典内置方法
  19. Node.js学习日记3
  20. [导入]微软.net精简框架常见问题及回答(中文版)

热门文章

  1. 数据科学即将迎来“无代码”时代
  2. 12.1 动态内存与智能指针(2)
  3. 以对象的方式来访问xml数据表(二)
  4. 比较JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket
  5. 【To Debug】牛客网--华为机试在线训练3:明明的随机数
  6. Vue模板,数据和指令
  7. C++基础之返回数组
  8. torch.nn.Module.eval
  9. 从王者荣耀看设计模式(六.状态模式)
  10. C# 构造函数base()实例演示