Hard Disk Drive(MBR)
这里讲的主要是网上所谓的老式磁盘,它是由一个个盘片组成的,我们先从个盘片结构讲起。如图1所示,图中的一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区(图践绿色部分)。扇区是磁盘的最小组成单元,通常是512字节。
图1 老式磁盘一个盘片的结构
图2展示了由一个个盘片组成的磁盘立体结构,一个盘片上下两面都是可读写的,图中蓝色部分叫柱面(cylinder)。
图2 老式磁盘的整体结构
简简单介绍了磁盘结构后,下面我们将对磁盘的参数进行讲解。磁盘的常见参数如下:
- 磁头(head)
- 磁道(track)
- 柱面(cylinder)
- 扇区(sector)
- 圆盘(platter)
图2中磁盘是一个 3个圆盘6个磁头,7个柱面(每个盘片7个磁道) 的磁盘,图2中每条磁道有12个扇区,所以此磁盘的容量为6*7*12*512字节。
即:
存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
磁盘的寻址概念
数据读写是按照柱面进行,即磁头读写数据时首先在同一柱面从0磁道开始操作,依次向下在同一柱面的不同盘面进行操作
柱面(Cylinder),磁头(Header)和扇区(Sector),即C/H/S地址
每个扇区可以存放512个字节和一些其他信息:即数据存储的数据段和数据存储地点的标示符号(就是记录自己的物理坐标),磁头读取扇区头标即可获得当前CHS位置.
下面讲一下现代磁盘,在老式磁盘中,尽管磁道周长不同,但每个磁道上的扇区数是相等的,越往圆心扇区弧段越短,但其存储密度越高。不过这种方式显然比较浪费空间,因此现代磁盘则改为等密度结构(扇区等长),这意味着外围磁道上的扇区数量要大于内圈的磁道,寻址方式也改为以扇区为单位的线性寻址。为了兼容老式的3D寻址方式,现代磁盘控制器中都有一个地址翻译器将 3D 寻址参数翻译为线性参数。实际磁头磁头,柱面,扇区信息都保存在硬盘控制电路的ROM芯片中,在访问磁盘时候将这种逻辑地址转换为物理地址,此种方式记为LBA寻址.
要点: (1)以柱面/磁头/扇区表示的为绝对扇区又称物理磁盘地址
(2)单一数字表示的为相对扇区或DOS扇区,又称逻辑扇区号
(3)相对扇区与绝对扇区的转换公式
MBR(Master Boot Record): 硬盘主引导记录
位于硬盘 0磁头,0柱面,1扇区(512MB)
MBR的组成
0000-0088
|
Master Boot Record
主引导程序
|
主引导
程序
|
0089-01BD
|
出错信息数据区
|
数据区
|
01BE-01CD
|
分区项1(16字节)
|
分区表
|
01CE-01DD
|
分区项2(16字节)
|
|
01DE-01ED
|
分区项3(16字节)
|
|
01EE-01FD
|
分区项4(16字节)
|
|
01FE
|
55
|
结束标志
|
01FF
|
AA
|
MBR中的分区信息结构
存贮字节位
|
内容及含义
|
第1字节
|
引导标志。若值为80H表示活动分区,若值为00H表示非活动分区。
|
第2、3、4字节
|
本分区的起始磁头号、扇区号、柱面号。其中:
磁头号——第2字节;
扇区号——第3字节的低6位;
柱面号——为第3字节高2位+第4字节8位。
|
第5字节
|
分区类型符。
00H——表示该分区未用(即没有指定);
06H——FAT16基本分区;
0BH——FAT32基本分区;
05H——扩展分区;
07H——NTFS分区;
0FH——(LBA模式)扩展分区(83H为Linux分区等)。
|
第6、7、8字节
|
本分区的结束磁头号、扇区号、柱面号。其中:
磁头号——第6字节;
扇区号——第7字节的低6位;
柱面号——第7字节的高2位+第8字节。
|
第9、10、11、12字节
|
本分区之前已用了的扇区数。
|
第13、14、15、16字节
|
本分区的总扇区数。
|
MBR的主要功能及工作流程
从主引导扇区的结构可以知道,它仅仅包含一个64个字节的硬盘分区表。由于每个分区信息需要16个字节,所以对于采用MBR型分区结构的硬盘(其磁盘卷标类型为MS-DOS),最多只能识别4个主要分区。所以对于一个采用此种分区结构的硬盘来说,想要得到4个以上的主要分区是不可能的。这里就需要引出扩展分区了。扩展分区也是Primary
partition的一种,但它与主分区的不同在于可以划分为无数个逻辑分区。(逻辑分区与扩展分区,主分区的关系自行百度)
(小贴士:分区的最小单元是磁柱)
扩展分区中逻辑驱动器的引导记录是链式的。每一个逻辑分区都有一个和MBR的分区表结构类似的扩展引导记录(EBR),其分区表的第一项指向该逻辑分区本身的引导扇区,第二项指向下一个逻辑驱动器的EBR。对于Windows系统而言,一般都是只划分一个主分区给系统,剩余的部分全部划为扩展分区。

扩展分区表项:第一个项 包括数据的开始地址在内的与扩展分区中当前逻辑驱动器有关的信息
第二个项 有关扩展分区中的下一个逻辑驱动器的信息,包括包含下一个逻辑驱动器的EBR的扇区的地址。如果不存在进一步的逻辑驱动器的话,该字段不会被使用
第三个项 未用
第四个项 未用.
https://www.cnblogs.com/april30138/p/3924930.html
http://www.blogfshare.com/mbr-dpt-ebr.html
Hard Disk Drive(MBR)的更多相关文章
- [Ubuntu] Error: The disk drive for /media/sda2 is not ready yet or not present
After updated Ubuntu, and reboot, I got these error The disk drive for /media/sda2 is not ready yet ...
- HDU 4788 Hard Disk Drive (2013成都H,水题)
Hard Disk Drive Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- HDUOJ----(4788)Hard Disk Drive
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...
- go语言 os.Rename() cannot move the file to a different disk drive 怎么办
时值我小病在家休养生息,喜欢跳广场舞的外公来寻求我的帮助,他们跳广场舞是将存有歌曲的U盘插到音响上面,而音响大部分都是只能显示歌曲的索引index,不能直接显示歌曲名,所以为了方便他们会在U盘里面对歌 ...
- HDU - 4788 Hard Disk Drive (成都邀请赛H 水题)
HDU - 4788 Hard Disk Drive Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I ...
- HDU 4788 Hard Disk Drive (2013成都H,水题) 进位换算
#include <stdio.h> #include <algorithm> #include <string.h> #include<cmath> ...
- HDU4788_Hard Disk Drive
水题. 但是我写挫了一个地方,Wa了三发.好吧,不能忍了. 还有,本屌不知道如何用printf输出%,哪位学过C++的大仙知道这是什么情况? 告诉我一声啊. #include <iostrea ...
- hdu 4788 Hard Disk Drive (水题)
题意: Input The first line contains an integer T, which indicates the number of test cases. For each t ...
- Linux 磁盘介绍(磁盘、分区、MBR、GPT)
原文:https://www.linuxidc.com/Linux/2013-06/85717.htm 1. CHS(Cylinder-Head-Sector): was an early metho ...
随机推荐
- [CISCN2019 华北赛区 Day1 Web5]CyberPunk
0x00 知识点 PHP伪协议直接读取源码 http://xxx.xxx/index.php?file=php://filter/convert.base64-encode/resource=inde ...
- HTML元素 和 CSS (9.23 第十天)
HTML元素分类:块级元素和内联元素块级元素:标签元素会以新行开始或结束<h1><p><table>等内联元素:显示数据不会以新行开始<a><im ...
- POJ 1185:炮兵阵地
炮兵阵地 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 21366 Accepted: 8280 Description ...
- Kubernetes-基于helm安装部署高可用的Redis及其形态探索
首先是一些关于redis的介绍和其在K8S上的安装过程:https://www.kubernetes.org.cn/3974.html 1.1部署形态 通过上述地址的教程,可以完成redis 的安装和 ...
- cf 730J. Bottles
搞一个背包,233 要求用的瓶数最少,那么就业瓶数为第一关键,当瓶数相当后再以a[i] #include<bits/stdc++.h> #define N 100005 #define L ...
- UVA 11235 RMQ算法
上次的湘潭赛的C题,用线段树敲了下还是WA,不知道为何,我已经注意了处理相同数据,然后他们当时用的RMQ. 所以学了下RMQ,感觉算法思想是一样的,RMQ用了DP或者是递推,由单个数到2^k往上推,虽 ...
- Vue组件template模板字符串几种写法
在定义Vue组件时,组件的模板template选项需要的是一个字符串,当其内容较复杂需要换行时,需要简单处理一下,具体有五种方式: 方式一:使用 \ 转义换行符 <!DOCTYPE html&g ...
- 模块化CommonJs规范 part1
CommonJS规范 来自<JavaScript 标准参考教程(alpha)>,by 阮一峰 1.概述 Node 应用由模块组成,采用 CommonJS 模块规范. 每个文件就是一个模块, ...
- POJ 1836:Alignment
Alignment Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14492 Accepted: 4698 Descri ...
- POJ 3970:Party
Party Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Submit Status ...