彻底搞懂硬盘相关的概念

以下内容源于网络资源的学习与整理,如有侵权请告知删除。

参考博客

硬盘结构(机械硬盘和固态硬盘)详解

简单理解磁盘结构_Guanngxu的博客-CSDN博客_磁盘的结构

硬盘基础知识_Forskamse的博客-CSDN博客

硬盘知识笔记整理_落子摘星的博客-CSDN博客

MBR分区表详解_zt_xcyk的博客-CSDN博客_mbr分区

硬盘分区、寻址和系统启动过程 - 走看看

目录

一、前言

二、机械硬盘

1、物理结构

2、逻辑结构

(1)磁道(track)

(2)扇区(sector)

(3)柱面(cylinder)

3、磁盘容量

4、磁盘的读写

(1)读写的方式

(2)读写的时间

5、机械硬盘的接口

(1)IDE 硬盘接口

(2)SATA 接口

(3)SCSI 接口

三、固态硬盘

1、固态硬盘简介

2、固态硬盘vs机械硬盘

四、概念厘清

1、块(block)、簇(cluster)

2、页(page)

3、磁盘块大小为何是扇区大小的整数倍?

五、 分区表

1、MBR分区表

2、GPT分区表

 

一、前言

(1)硬盘是计算机的主要外部存储设备,如果从存储数据的介质上来区分,硬盘可分为机械硬盘(Hard Disk Drive, HDD)和固态硬盘(Solid State Disk, SSD)。

(2)机械硬盘采用磁性碟片来存储数据,而固态硬盘通过闪存颗粒来存储数据。

二、机械硬盘

1、物理结构

(1)机械硬盘的内部主要由盘片、磁头、主轴与传动轴等组成,每个盘片包含上下两个盘面,每个盘面都对应着一个读/写磁头。

(2)盘片是承载数据存储的介质,它上面附着有磁粉,磁粉的S/N极分别代表着二进制中的0和1,利用磁头的磁力控制一些磁粉的方向,就存储了特定的信息。

(3)受到硬盘体积和成本的限制,盘片数量一般控制在5片以内。盘面的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘片编号为2面和3面。

(4)机械硬盘工作时,盘片的旋转速度很快(常见转速是 7200 r/min),因此在读取或写入数据时非常害怕晃动和磕碰;另外如果硬盘内部有灰尘则会造成磁头或盘片的损坏,所以机械硬盘内部是封闭的,如果不是在无尘环境下,则禁止拆开机械硬盘。

2、逻辑结构

机械硬盘的逻辑结构主要分为磁道、扇区和柱面。

(1)磁道(track

1、每个盘片在逻辑上有很多同心圆,我们将每个同心圆称作磁道。

2、盘面的磁道密度非常高,通常一个盘面就有上千个磁道。

3、相邻的磁道之间并不是紧挨着的,因为磁化单元相隔太近会相互影响。

4、最外面的同心圆就是0磁道。


(2)扇区(sector

1、从圆心向外画直线,将每个磁道等分为若干弧段,每条磁道上的一个弧段就是一个扇区。

2、扇区是磁盘的最小存储单元。

3、扇区的大小一般是 512Byte,但部分厂商设定每个扇区的大小是4096字节。

4、外侧磁道的扇区面积大,内侧磁道的扇区面积小。

5、以前的磁盘,每条磁道的扇区数目是一样的,每条磁道可以存储的数据量是一样的,因此外侧的磁道数据密度小,内侧磁道数据密度大。现在的磁盘,每条磁道的数据密度都是一样的,因此越外侧的磁道,其扇区数目就越多,能够存储的数据量就越大。


(3)柱面(cylinder

1、硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的“0”向内进行磁道编号,具有相同编号的磁道会形成一个圆柱,称之为磁盘的柱面。

2、从柱面含义中得知,磁盘的柱面数与一个盘面上的磁道数是相等的。

3、磁盘容量

(1)磁盘容量计算公式如下,其中磁头数(heads)表示磁盘一共有多少个盘面(因为一个盘面对应一个磁头);柱面数(cylinders)表示一个盘面有几条磁道。

磁盘容量= 磁头数(盘面数) x 柱面数(磁道数) x 每条磁道的扇区数 x 每个扇区的字节数

(2)比如下面是使用“fdisk -l”列出的磁盘分区情形,从中可以看出,磁盘共有255个盘面,每个盘面有2610条磁道,每条磁道有63个扇区(setcors/track表示每磁道多少扇区),每个扇区大小是512字节,按理有255*63*2610=419299650个扇区,但为何与显示的不一致?

root@ubuntu:/# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 sectors
Units = 扇区 of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000bf9a1设备 启动      起点          终点     块数   Id  系统
/dev/sda1   *        2048    37750783    18874368   83  Linux
/dev/sda2        37752830    41940991     2094081    5  扩展
/dev/sda5        37752832    41940991     2094080   82  Linux 交换 / Solaris
root@ubuntu:/# 

4、磁盘的读写

(1)读写的方式

磁盘读写数据时,是按柱面进行的。首先从盘面0(磁头0)开始进行操作,依次往上在同一柱面的不同盘面(磁头上)进行操作,同一柱面的所有磁头全部读写完毕后,全部磁头才转移到下一个柱面。这是因为全部的磁头都连接在同一个磁臂上,因此只能“共进退”。

(2)读写的时间

1、读写一次磁盘信息所需的时间可分解为:寻道时间、延迟时间、传输时间。

2、寻道时间,表示磁头移动到数据所在磁道所需要的时间。目前磁盘的平均寻道时间一般在3至15ms,一般都在10ms左右。

3、延迟时间,表示盘片将数据所在的扇区旋转到读写磁头下方所需要的时间。旋转延迟取决于磁盘转速,普通硬盘一般都是7200rpm,慢的5400rpm。

4、传输时间,表示完成数据传输所需要的时间。

5、为提高磁盘传输效率,软件应着重考虑减少寻道时间和延迟时间。

5、机械硬盘的接口

机械硬盘通过接口与计算机主板进行连接。硬盘的读取和写入速度与接口有很大关系。大家都见过大礼堂吧,大礼堂中可以容纳很多人,但是如果只有一扇很小的门,那么人是很难进入或出来的,这样会造成拥堵,甚至会出现事故。机械硬盘的读取和写入也是一样的,如果接口的性能很差,则同样会影响机械硬盘的性能。

目前,常见的机械硬盘接口有以下几种:

(1)IDE 硬盘接口

Integrated Drive Eectronics,并口,即电子集成驱动器,也称作 "ATA硬盘" 或 "PATA硬盘",是早期机械硬盘的主要接口,ATA133 硬盘的理论速度可以达到 133MB/s(此速度为理论平均值),IDE 硬盘接口如图所示。


(2)SATA 接口

Serial ATA,是速度更高的硬盘标准,具备了更高的传输速度,并具备了更强的纠错能力。目前已经是 SATA 三代,理论传输速度达到 600MB/s(此速度为理论平均值),如图所示。


(3)SCSI 接口

Small Computer System Interface,小型计算机系统接口,广泛应用在服务器上,具有应用范围广、多任务、带宽大、CPU 占用率低及热插拔等优点,理论传输速度达到 320MB/s,如图所示。

三、固态硬盘

1、固态硬盘简介

(1)与机械硬盘采用盘片存储数据不同,固态硬盘采用存储芯片进行数据存储。

(2)固态硬盘的存储芯片主要分为两种,即闪存与DRAM。

(3)目前市场主要采用闪存作为存储介质的固态硬盘,如图所示。固态硬盘内主体其实就是一块PCB板,PCB板上最基本的配件就是控制芯片,缓存芯片(低端硬盘无缓存芯片)和用于存储数据的闪存芯片。

2、固态硬盘vs机械硬盘

固态硬盘和机械硬盘对比如下所示。

由此可以看出,固态硬盘因为丟弃了机械硬盘的物理结构,所以相比机械硬盘具有了低能耗、无噪声、抗震动、低散热、体积小和速度快的优势;不过价格相比机械硬盘更高,而且使用寿命有限。

四、概念厘清

1、块(block)、簇(cluster)

(1)关于块的概述

1、磁盘块,简称“块”,是虚拟出来的概念。它是操作系统中最小的逻辑存储单位,或者说操作系统与磁盘打交道的最小单位是磁盘块,或者说块是操作系统针对硬盘读写的最小单元。

2、块与簇其实是同一个概念,只是不同文件系统下的叫法不同。在Windows下如NTFS等文件系统中就叫做簇(cluster),在Linux下如Ext4等文件系统中就叫做块(block)。

3、既然磁盘块是一个虚拟概念,是操作系统规定的软件的概念,不是真实的,那么其大小可以由操作系统决定与配置。每个块包括2的n次方个扇区,这个的n是可以修改的。下图是每个块包括2个扇区的示意图。

4、在window的命令行中输入“fsutil fsinfo ntfsinfo F:”显示如下, 可知这里的一个簇是4KB,扇区大小是512B,因此这里的一个簇是由8个扇区组成的。


(2)磁盘块的意义

主要是为了读取方便。由于扇区的数量众多,在寻址时比较困难,所以操作系统就将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作。或者通俗地理解,操作系统(其实是文件系统,但文件系统是操作系统的一部分,所以这里说操作系统)不是一个扇区一个扇区地去读数据的,因为这样速度太慢了,它是一个块一个块地去读取数据的,块才是文件存取的最小单位。


(3)扇区与磁盘块的映射

1、磁盘控制器除了读取数据、控制磁头等作用外,还负责映射扇区和磁盘块的关系。

2、磁盘控制器以扇区为单位读取磁盘数据,操作系统以块为单位读取磁盘数据。

2、页(page)

为了方便操作系统和硬盘之间的交流,虚拟出了“块”这个基本单位,它是操作系统与硬盘交流的最小单位。类似的,为了方便操作系统和内存之间的交流,虚拟出了“页”这个基本单位,它是操作系统与内存交流的最小单位。

3、磁盘块大小为何是扇区大小的整数倍?

操作系统是以块为单位进行数据读取的,而磁盘控制器是以扇区为单位读取磁盘数据。一个块的大小是扇区大小的整数倍,有利于磁盘的IO,不然(比如2.5个扇区为一个块)会对扇区进行分割。

五、 分区表

(1)一块全新的硬盘,必须进行初始分区。初始分区分为MBR分区、GPT分区这两种方法,对应着MBR分区表和GPT分区表。

(2)这里的初始分区是指只进行分区,还没有进行格式化。格式化是指定这块硬盘的某个分区采用什么文件系统。分区广义的概念是包括初始分区与格式化。

1、MBR分区表

见博客MBR分区表的简介_天糊土的博客-CSDN博客。

2、GPT分区表

暂略。

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

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

相关文章

ubuntu下数据库的导入导出

2019独角兽企业重金招聘Python工程师标准>>> 一.导出远程数据库 例如 sudo mysqldump -h 172.16.1.211 -u haha -p123 -P3307 app>app.sql 二.导入.sql文件的 到数据库 1.create database xxx(创建一个名称是xxx的数据库) 2. use xxx(切换到该数据库下) 3. sou…

MBR分区表的简介

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 参考内容 (1)S5PV210 Uboot开发与移植01:Uboot概述_麦兜的学习笔记的博客-CSDN博客 (2)Linux系统下的硬盘分区、格式化与挂载_天糊土的博客-CSD…

Redis配置文件参数说明

配置文件参数说明: 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 pidfile …

movi命令(do_movi函数的源码分析)

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 一、do_movi函数分析 当执行movi相关命令时,实际执行的是do_movi函数。 x210 # help movi movi init - Initialize moviNAND and show card info movi read {u-boot | kernel} {addr} - Read …

[LeetCode]Search Insert Position

原题链接:http://oj.leetcode.com/problems/search-insert-position/ 题意描述: Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You …

如何将镜像烧写至iNand(fastboot命令的源码分析)

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 参考博客 u-boot sdfuse命令烧录分析----从SD卡加载内核_white_bugs的博客-CSDN博客 一、将镜像文件烧写至iNand的步骤 步骤1:完成准备工作。 (1)准备fastboot相关软件包…

你知道自己执行的是哪个jre吗?

多个JRE 我在做《Java日志工具之java.util.logging.Logger》的DEMO时,修改java.util.logging.Logger的配置文件,怎么修改都不起作用,因此打印了系统属性"java.home",才知道自己使用的是 C:\Program Files\Java\jre7 &am…

无需写try/catch,也能正常处理异常

对于企业应用的开发者来说,异常处理是一件既简单又复杂的事情。说其简单,是因为相关的编程无外乎try/catch/finallythrow而已;说其复杂,是因为我们往往很难按照我们真正需要的策略来处理异常。我一直有这样的想法,理想…

vs2010插件

转载于:https://www.cnblogs.com/tinytiny/p/3608030.html

leetcode1——两数之和

一、提出问题 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按…

如何脱离SDK,使用DW5.5和phonegap以及JQMobile搭建开发环境

也许有些人是学C出身,对于Java几乎不了解。一时心血来潮想学学android开发,于是下载了Eclipse,安装了SDK,有模有样的学习起来。也许是懒惰了,对于java一直总是提不起精神。于是确定使用DreamweaverJquery mobilePhoneg…

leetcode2——两数相加

一、提出问题 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以…

32为Linux安卓AVD启动报错

2019独角兽企业重金招聘Python工程师标准>>> 当使用android的AVD时提示以下错误:Starting emulator for AVD NexusOne ERROR: 32-bit Linux Android emulator binaries are DEPRECATED, to use them you will have to do at least one of the following:…

填问卷,得《2015中国呼叫中心知识库现状与问题报告》

为了解中国呼叫中心知识库运营现状和存在的主要问题,掌握呼叫中心知识库的总体发展水平,中国知识管理中心(KMCenter)面向全国呼叫中心发起“2015中国呼叫中心知识库现状与问题调研”活动,主要通过问卷调研和典型用户访…

ARM汇编的特点

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 一、LDR/STR架构 ARM采用RISC架构,CPU本身不能直接读取内存,需要先将内存中的内容加载到CPU的通用寄存器中才能被CPU处理。换言之,寄存器是CPU和内存进行数据交换的中介。…

持久代是方法区还是堆中的?

2019独角兽企业重金招聘Python工程师标准>>> 昨天跟一哥们讨论,持久代在方法区,属不属于堆中的? 它的意思是持久代不属于堆,属于方法区,而我则认为持久代属于方法区也属于堆。 结果今天上网一查,还真的是。下面是解释: 持久代”仅…

Web 前端攻防(2014版)-baidu ux前端研发部

http://fex.baidu.com/articles/page2/ Web 前端攻防(2014版) zjcqoo | 20 Jun 2014禁止一切外链资源 外链会产生站外请求,因此可以被利用实施 CSRF 攻击。 目前国内有大量路由器存在 CSRF 漏洞,其中相当部分用户使用默认的管理账…

Silverlight动态设置WCF服务Endpoint

2013-02-02 05:57 by jv9, 1763 阅读, 3 评论, 收藏, 编辑 去年12月收到一位朋友的邮件,咨询Silverlight使用WCF服务,应用部署后一直无法访问的问题,通过几次交流,才发现在他的项目中,全部使用静态URL作为WCF服务的End…

第4季3:Hi3518e的sensor接口引脚复用设置(load3518e文件)

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 在第2、3季的内容中,在板载系统的配置脚本即/etc/profile文件中,都有如下这句代码: ./load3518e -i -sensor ar0130 -osmem 32 -total 64 在第4季1&#xff1a…

iOS游戏开发 几个有利工具

2019独角兽企业重金招聘Python工程师标准>>> iOS游戏开发 几个有利工具 本文介绍的是iOS游戏开发 几个有利工具,为友们介绍几款开发工具,游戏爱好者记住了!先来看内容。 AD: iOS游戏开发 几个有利工具是本文要介绍的内…