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 ...
随机推荐
- 安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)
VM tools:方便我们虚拟机和宿主机之间复制数据或移动文件等 安装VMtools 1.菜单栏-虚拟机-安装VM tools 将其选中 2.进入系统,在桌面位置里面有VM tools的光盘,双击进入 ...
- 几道简单的线段树入门题 POJ3264&&POJ3468&&POJ2777
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 40687 Accepted: 19137 ...
- 关于RxJS 处理多个Http请求 串行与并行方法
mergeMap mergeMap 操作符用于从内部的 Observable 对象中获取值,然后返回给父级流对象. 合并 Observable 对象 123456 import { of } from ...
- idea的简单使用
1.新建项目 (1)点击 file -->new project ,选择java(创建普通java项目) ,点next (2)不选择create project from template (不 ...
- java课程课后作业190612之Beta版总结会议
1.每个成员在beta 阶段的实践和alpha 阶段有何改进? 陈阳:在编程的时候学习广播知识,了解了Android的广播机制完成了上课静音以及课前提醒的功能,在代码的美观上也有了一定的提升 2. 团 ...
- MySQL授权用户登录访问指定数据库
使用Navicat等客户端工具,选中需要共享的数据库,点击查询>新建查询 1.写SQL语句:GRANT ALL PRIVILEGES ON * TO 'test'@'%'IDENTIFIED B ...
- PAT Advanced 1076 Forwards on Weibo (30) [图的遍历,BFS,DFS]
题目 Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and ...
- map构造同时初始化
Map<String, Object> mtest = new HashMap<String, Object>(){{put("test","M ...
- vue移动端点击一个元素缩小,松手的时候元素恢复正常
active伪类解决 HTML代码 <div class='box'> </div> CSS代码 .box { width: 100px; height: 100px; bac ...
- .NET Core开发实战(第11课:文件配置提供程序)--学习笔记
11 | 文件配置提供程序:自由选择配置的格式 文件配置提供程序 Microsoft.Extensions.Configuration.Ini Microsoft.Extensions.Configu ...