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

filex的文件系统看的云里雾里,还是先总结下FAT的一些基本知识吧。

硬盘结构
硬盘有很多盘片组成,每个盘片的每个面都有一个读写磁头。如果有N个盘片。就有2N个面,对应2N个磁头(Heads),从0、1、2开始编号。每个盘片的半径均为固定值R的同心圆再逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0、1、2……。每个盘片上的每个磁道又被划分为几十个扇区(Sector),通常的容量是512byte,并按照一定规则编号为1、2、3……形成Cylinders×Heads×Sector个扇区。
ebfb9a399fc1ef1cba998f7b.jpg


主引导扇区
主引导扇区位于整个硬盘的0柱面0磁头1扇区{(柱面,磁头,扇区)|(0,0,1)},bios在执行自己固有的程序以后就会jump到MBR中的第一条指令。将系统的控制权交由mbr来执行。主引导扇区主要由三部分组成:主引导记录 MBR(Master Boot Record或者Main Boot Record)、硬盘分区表 DPT(Disk Partition Table)和结束标志字三大部分组成。
41b86312270c843a58af534d.jpg

对于硬盘而言,一个扇区可能的字节数为128×2n (n=0,1,2,3)。大多情况下,取n=2,即一个扇区(sector)的大小为512字节。在总共512byte的主引导记录中,MBR的引导程序占了其中的前446个字节(偏移0H~偏移1BDH),随后的64个字节(偏移1BEH~偏移1FDH)为DPT(Disk PartitionTable,硬盘分区表),最后的两个字节“55 AA”(偏移1FEH~偏移1FFH)是分区有效结束标志。

主引导记录MBR(master boot record)
主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统,并将控制权交给启动程序。MBR是由分区程序(如Fdisk)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的,从而能够实现多系统引导。

硬盘分区表DPT(Disk Partition Table)
硬盘分区表占据MBR扇区的64个字节(偏移01BEH--偏移01FDH),可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节。具体每个字节的定义可以参见硬盘分区结构信息。
11ecf3358d2e3776241f1435.jpg


结束标志字
结束标志字55,AA(偏移1FEH- 偏移1FFH)是MBR扇区的最后两个字节,是检验主引导记录是否有效的标志。


电脑启动过程
  • 系统开机或者重启。
  • BIOS 加电自检 ( Power On Self Test -- POST )。BIOS执行内存地址为 FFFF:0000H 处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。
  • 读取主引导记录(MBR)扇区。当BIOS检查到硬件正常并与 CMOS 中的设置相符后,按照 CMOS 中对启动设备的设置顺序检测可用的启动设备。BIOS将相应启动设备的第一个扇区(也就是MBR扇区)读入内存地址为0000:7C00H 处。
  • 检查0000:7DFEH-0000:7DFFH(MBR的结束标志位)是否等于 AA55H,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则显示"NO ROM BASIC"然后死机。
  • 当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备。启动设备的MBR将自己复制到0000:0600H处, 然后继续执行。
  • 在主分区表中搜索标志为活动的分区,也就是检验磁盘分区表DPT的首字节是不是80H。如果检测到80H,则表示该分区为活动分区,将该活动分区的第一个扇区(操作系统引导记录区,Dos Boot Recorder,DBR)读入内存地址 0000:7C00H 处。
  • 检查0000:7DFEH-0000:7DFFH(DBR的结束标志位)是否等于 AA55H, 若不等于则显示 : "Missing Operating System" 然后停止。
  • 当检测到有分区满足要求后,MBR将控制权交给相应的活动分区。
for short:
BIOS -> 硬盘MBR -> 活动分区DBR -> 操作系统

主引导扇区与硬盘分区

从主引导扇区的结构可以知道,它仅仅包含一个64个字节的硬盘分区表。由于每个分区信息需要16个字节,所以对于采用MBR型分区结构的硬盘(其磁盘卷标类型为MS-DOS),最多只能识别4个主要分区。所以对于一个采用此种分区结构的硬盘来说,想要得到4个以上的主要分区是不可能的。这里就需要引出扩展分区了。扩展分区也是Primary partition的一种,但它与主分区的不同在于可以划分为无数个逻辑分区。

扩展分区中逻辑驱动器的引导记录是链式的。每一个逻辑分区都有一个和MBR的分区表结构类似的扩展引导记录(EBR),其分区表的第一项指向该逻辑分区本身的引导扇区,第二项指向下一个逻辑驱动器的EBR。对于Windows系统而言,一般都是只划分一个主分区给系统,剩余的部分全部划为扩展分区。

da8968b53e6c294b8ad4b2cb.jpg
蓝色是主分区;绿、红、紫是逻辑分区;灰色包含着逻辑分区是扩展分区;

9f0330030f0da3374afb51ab.jpg

cdcc0a0f9f1d53df34d1227b.jpg

0be222ee8635a0d7cc1b3e45.jpg

 扩展分区表项的内容

扩展分区表项 分区表项的内容 第一个项 包括数据的开始地址在内的与扩展分区中当前逻辑驱动器有关的信息 第二个项 有关扩展分区中的下一个逻辑驱动器的信息,包括包含下一个逻辑驱动器的EBR的扇区的地址。如果不存在进一步的逻辑驱动器的话,该字段不会被使用 第三个项 未用 第四个项 未用
reference:
http://zh.wikipedia.org/zh-cn/%E4%B8%BB%E5%BC%95%E5%AF%BC%E6%89%87%E5%8C%BA
www.raid-recovery.org/Article/sjhfdoc/200404/1.htmlwww.pcguide.com/ref/hdd/file/structPartitions-c.html
www.msexchange.org/tutorials/Disk-Geometry.html

转载于:https://www.cnblogs.com/phyking/archive/2012/10/07/4456654.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最全面 Nginx 入门教程 + 常用配置解析

转自 http://blog.csdn.net/shootyou/article/details/6093562 Nginx介绍和安装 一个简单的配置文件 模块介绍 常用场景配置 进阶内容 参考资料 Nginx介绍和安装 Nginx是一个自由、开源、高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器…

linux 客户机中不支持 unity_婚姻中的不理解,来源于夫妻双方情感支持的不同

很多女性在婚姻中往往觉得无法得到丈夫的理解,当遇到一些生活或者工作上的问题的时候,她们想要在情感上得到丈夫的支持和理解。但是很多丈夫对此可能并不了解和理解,更倾向于用理性帮助妻子解决问题。而女性所需要的帮助可能并不是解决问题的…

Linux中使用crontab命令启用自定义定时任务

一 简介Linux下的任务调度分为两类,系统任务调度和用户任务调度系统任务调度:系统需要定期执行的任务,比如重启、日志清理等,其配置文件是:/etc/crontab用户任务调度:某个用户需要定期执行的任务。用户可以…

java 循环标记_深入浅析Java 循环中标签的作用

continue和break可以改变循环的执行流程,但在多重循环中,这两条语句无法直接从内层循环跳转到外层循环。在C语言中,可以通过goto语句实现多重循环的跳转,但在非循环结构中使用goto语句会使程序的结构紊乱,可读性变差。…

JS,Jquery 调用 C#WebService

1&#xff0c;需要在服务下面把代码的注释去掉 // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务&#xff0c;请取消对下行的注释。   //[System.Web.Script.Services.ScriptService] 2,JS 调用方法如下 var request <?xml version"1.0" encoding"…

iOS tabview 适配问题

ios7的UITableView实现ios6的圆角效果 iOS7 UITableView做成类似iOS6风格 在iOS7的时候我们会发现cell的默认线条会向右偏移&#xff0c;使左边空出了一些位置&#xff0c;这时候我们可以调用如下的方法来解决。这样我们的cell就会和iOS6前的一样铺满整个宽度了。 if ([tableVi…

PHP学习总结(14)——PHP入门篇之常用运算符

一、什么是运算符什么是运算符&#xff1f;运算符是告诉PHP做相关运算的标识符号。例如&#xff0c;你需要计算123乘以456等于多少&#xff0c;这时候就需要一个符号&#xff0c;告诉服务器&#xff0c;你需要做乘法运算。PHP中的运算符有哪些&#xff1f;PHP运算符一般分为算术…

百度时间显示_文章的发布时间对百度优化网站重要吗

文章的发布时间对百度优化网站重要吗&#xff1f;这个问题&#xff0c;相信很多初做网站优化的萌新朋友都会问到&#xff0c;以小匠个人的经历来分享这个问题的经验&#xff0c;小匠认为&#xff0c;文章的发布时间对优化网站是非常重要的&#xff0c;下面小匠将从实际经历来给…

循环链表解决约瑟夫环问题

约瑟夫环问题可以简单的使用数组的方式实现&#xff0c;但是现在我使用循环链表的方法来实现&#xff0c;因为上午看到一道面试题规定使用循环链表解决约瑟夫环问题。 什么是约瑟夫环&#xff1f; “约瑟夫环是一个数学的应用问题&#xff1a;已知n个人&#xff08;以编号1&…

java 什么时候进行垃圾回收_java什么时候进行垃圾回收,垃圾回收的执行流程

java的垃圾回收分为三个区域新生代 老年代 永久代一个对象实例化时 先去看伊甸园有没有足够的空间如果有 不进行垃圾回收 ,对象直接在伊甸园存储.如果伊甸园内存已满,会进行一次minor gc然后再进行判断伊甸园中的内存是否足够如果不足 则去看存活区的内存是否足够.如果内存足够…

常用的webservice接口

商业和贸易&#xff1a; 1、股票行情数据 WEB 服务&#xff08;支持香港、深圳、上海基金、债券和股票&#xff1b;支持多股票同时查询&#xff09; Endpoint: http://webservice.webxml.com.cn/WebServices/StockInfoWS.asmx Disco: http://webservice.webxml.com.cn/WebServ…

基于HTML5 Canvas 实现矢量工控风机叶轮旋转

之前在拓扑上的应用都是些静态的图元&#xff0c;今天我们将在拓扑上设计一个会动的图元——叶轮旋转。 先看看最后我们实现的效果&#xff1a;http://www.hightopo.com/demo/fan/index.html 我们先来看下这个叶轮模型长什么样 从模型上看&#xff0c;这个叶轮模型有三个叶片&a…

java 并发模型总类_java并发编程系列-内存模型基础

java线程之间的通信对程序开发人员是完全透明的&#xff0c;内存的可见性问题很容易困扰很多开发人员。本篇博文将揭开java内存模型的神秘面纱&#xff0c;来看看内存模型到底是怎样的。并发编程模型的分类并发编程中需要处理的两个关键问题&#xff1a;线程之间如何通信线程之…

python调用java的jar包_python调用java的jar包报错127

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼最近在弄python需要调用到Java的jar包&#xff0c;按照网上的教程走&#xff0c;最后总是报错No matching overloads found for [init in find. at native\common\jp_method.cpp:127Java&#xff1a;package aes;import com.sun.cr…

iphone、Android接收System.Net.Mail发的邮件标题乱码

参考地址&#xff1a;http://blog.csdn.net/whowhen21/article/details/5959225 在做项目时候&#xff0c;用到.Net的System.Net.Mail发送邮件&#xff0c;经测试&#xff0c;发现如果标题过长&#xff0c;收到的就会是乱码了(那种Base64格式的数据)&#xff0c;几经测试&#…

数据仓库与数据挖掘的一些基本概念

下面内容摘自互联网并作了整理。 名词&#xff1a; BI(Business Intelligence)&#xff1a;商业智能&#xff0c; DW(Data Warehouse)&#xff1a;数据仓库&#xff0c;详见正文Q1部分。 OLTP(On-Line Transaction Processing)&#xff1a;联机事务处理 也称为面向交易的处理系…

ATS读小文件(内存命中)

一个资源根据其大小可能会存在多个存储对象中。如果足够小&#xff08;连同doc结构的大小小于一个fragment的size&#xff09;&#xff0c;连同这个资源的meta信息一起存储在一个doc中。如果比较大&#xff0c;第一个存储对象保存资源的meta信息&#xff0c;后面跟着若干个frag…

python 加密解密_python加密解密

EncodeFile(python2.7加密)# -*- coding: utf8 -*-import base64import sysreload(sys)sys.setdefaultencoding(utf8)inFilesys.argv[1]try:fin open(inFile, "rb")fout open(inFile".txt", "w")base64.encode(fin, fout)passexcept Exception…

java double 两位_java double 保留两位小数

java保留两位小数问题&#xff1a;方式一&#xff1a;四舍五入double f 111231.5585;BigDecimal b new BigDecimal(f);double f1 b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();保留两位小数---------------------------------------------…

fatal error C1902: 程序数据库管理器不匹配;请检查安装解决

终于找到原因了&#xff0c;原来是我安装的字体渲染&#xff0c;并且采用注册表的加载方式&#xff01;改掉就好了&#xff01;上天哪&#xff0c;这是怎么影响到的 卸载MacType程序后&#xff0c;进行尝试&#xff01; VS2008 和 VS2010 又能用了&#xff01; 我想求教育。。。…