🎀 关于博主👇🏻👇🏻👇🏻
🥇 作者简介: 热衷于知识探索和分享的技术博主。
💂 csdn主页::【奇妙之二进制】
✍️ 微信公众号:【Linux 世界】🎉精彩专栏:
🎓 【面向工作git基础教程】
🧡 【C++11新特性深入剖析】
📚【shell脚本编程基础与实战】
🌎【Linux网络编程面试演练】
…💂关于作者: 曾就职于国内知名安防上市公司,现就职于国内知名AMR机器人公司,担任高级系统软件工程师。2020年至今保持CSDN博客专家,CSDN C/C++领域优质创作者头衔。全网5万+粉丝。十载寒冰,难凉热血;多年过去,历经变迁,物是人非。 然而,对于技术的探索和追求从未停歇。 💪坚持创作,热衷分享,初心未改,继往开来!
文章目录
- 🎀 关于博主👇🏻👇🏻👇🏻
- 1、盘片
- 2、磁道、扇区
- 3、柱面
- 4、磁盘容量计算
- 5、磁盘的物理地址
- 6、磁盘读取响应时间
- 7、块/簇
我们今天来认识下磁盘的结构。
1、盘片
一个磁盘(如一个 1T 的机械硬盘)由多个盘片(如下图中的 0 号盘片)叠加而成。
盘片的表面涂有磁性物质,这些磁性物质用来记录二进制数据。因为正反两面都可涂上磁性物质,故一个盘片可能会有两个盘面。
2、磁道、扇区
每个盘片被划分为一个个磁道(一个一个半径不同的同心圆环),每个磁道又划分为一个个扇区(磁道上的一个弧段)。扇区是磁盘的最小组成单元,通常是512字节。如下图:
其中,最内侧磁道上的扇区面积最小,因此数据密度最大。
3、柱面
每个盘面对应一个磁头。所有的磁头都是连在同一个磁臂上的,因此所有磁头只能“共进退”。
所有盘面中半径相同的磁道组成柱面。如下图:
4、磁盘容量计算
存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
上图中磁盘是一个 3个圆盘6个磁头,7个柱面(每个盘片7个磁道) 的磁盘,图3中每条磁道有12个扇区,所以此磁盘的容量为:
存储容量 6 * 7 * 12 * 512 = 258048
5、磁盘的物理地址
由上,可用(柱面号,盘面号,扇区号)来定位任意一个“磁盘块”。
可根据该地址读取一个“块”,操作如下:
① 根据“柱面号”前后移动磁臂,让磁头指向指定柱面;
② 旋转磁盘,让磁头抵达待读的起始扇区。
③ 激活指定盘面对应的磁头;
④ 旋转磁盘,指定的扇区会从磁头下面划过,这样就完成了对指定扇区的读/写。
6、磁盘读取响应时间
- 寻道时间:磁头从接收到指令开始,移动到数据所在磁道(柱面)所需要的时间,寻道时间越短,I/O操作越快。目前磁盘的平均寻道时间一般在3-15ms,一般都在10ms左右。
- 旋转延迟:盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间,旋转延迟取决于磁盘转速。普通硬盘一般都是7200rpm,慢的5400rpm。
- 数据传输时间:完成传输所请求的数据所需要的时间。
所以读写一次磁盘信息所需的时间可分解为:寻道时间、延迟时间、传输时间。
7、块/簇
磁盘块/簇(虚拟出来的)。 块是操作系统中最小的逻辑存储单位。操作系统与磁盘打交道的最小单位是磁盘块。
通俗的来讲,在Windows下如NTFS等文件系统中叫做簇;在Linux下如Ext4等文件系统中叫做块(block)。每个簇或者块可以包括2、4、8、16、32、64…2的n次方个扇区。