磁盘是计算机主要的存储设备,也是计算机的主要构成硬件,一切的数据都是存储在磁盘中,因此了解磁盘的结构是非常重要的。
磁盘主要构成要素有盘片、磁头、磁道、扇区、柱面,如下图。
1、盘片
硬盘首先会有多个盘片构成,类似很多个独立的光盘合并在一起,每个盘片都有2个面,每个盘片都有一个对应的磁头,一般硬盘会有5个盘片构成,盘片盘便面自下往上顺序进行编号,如5个盘片那么编号自下而上就是10个盘面的编号。
2、扇区和磁道
每个盘片会分成若干个相同同心圆的磁道,磁道从外围开始编号,从0开始,每个磁道又会划分成若干个扇区,扇区是硬盘的最小存储单元,一般是存储512字节(byte)
3、磁头和柱面
磁头用于读取盘面中磁道内的扇区中存储的数据。一个盘片有上下2个盘面对应2个磁头。
柱面是所有盘面中相同磁道的柱面,形成的是一个立体的柱体形状,磁盘的柱面数和磁道数是相等的,盘面数等于总的磁头数。
3、磁盘容量计算
存储容量=磁头数*磁道(柱面)数*每道扇区数*每扇区的字节数
比如上图共有3个盘片6个盘面(6个磁头)、7个磁道、12个扇区、每个扇区512字节
存储容量:6*7*12*512=258148字节
4、磁盘读取响应时间
1)寻道时间:磁头从开始移动到数据所在的磁道需要的时间,寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms,一般都在10ms左右。
2)旋转延迟:盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间,旋转延迟取决于磁盘转速,普通硬盘一般是7200rpm,慢的5400rpm
3) 数据传输时间:完成传输请求的数据所需要的时间。
个人理解寻道时间和旋转应该是并发进行的,比如寻找到了目标磁道,同时盘片旋转也旋转到了该磁道的扇区
5、磁盘块
块是操作系统中最小的逻辑存储单位,操作系统与磁盘打交道最小单位是磁盘块,多个物理上存在的扇区组成了系统中所谓的逻辑块。
块的形成:由于扇区的数量比较小,数目多在寻址时比较困难,所以操作系统将相邻的扇区组合在一起形成块,在对块进行整体的读写操作。
6、page
操作系统经常与内存和硬盘这两种存储设备进行通信,类似于“块”的概念,都需要一种虚拟的基本单位。所以,与内存操作,是虚拟一个页的概念来作为最小单位。与硬盘打交道,就是以块为最小单位。
总结
- 扇区: 硬盘的最小读写单元
- 块/簇: 是操作系统针对硬盘读写的最小单元
- page: 是内存与操作系统之间操作的最小单元。
7、操作系统文件索引结构
块是操作系统对硬盘读写的最小单元实际上是一种逻辑上的存储块,最终会对应到实际的物理扇区。
操作系统实际上通过建立文件的索引结构来进去文件的存取,文件的索引结构一般如下
磁盘块通过索引结构与物理扇区进行对应,分为直接索引、一级间接索引、二级间接索引、三级间接索引。
实际就是索引编号对应的内容存储的是什么的类型的问题,比如ArrayList A数据结构,A[0]存储Arraylist B,B[0]也可能存储的是Arayylist C,也就产生直接索引、一级间接索引、二级间接索引、三级间接索引等等
附上几个题目来做个练习巩固一下:
某文件系统采用多级索引结构,若磁盘块的大小为 512 字节,每个块号需占 3 字节,那么根索引采用一级索引时的文件最大长度为 (1) K 字节;采用二级索引时的文件最大长度为 (2) K 字节。
(1)A、85
B、170
C、512
D、1024
(2)A、512
B、1024
C、14450
D、28900(1)512/3=170 ,一个磁盘块可以使用170个块。因此,170*512/1024=85,选A。
(2)二级索引=一级索引*一级索引*大小=170*170*512/1024=85*170=14450,选C。
例:某文件系统采用多级索引结构。若磁盘块的大小为1K字节,每个块号占3字节,那么采用二级索引时的文件最大长度为(26)K字节。
A.1024 B.2048 C.116281 D.232562
(1024/3)*(1024/3)*1024/1024 选C。
补充解析:就是对块存储数据进行拆分,块要么直接存储数据,要么存储的数据内容是一个索引表,索引表中每个编号都会占用空间,我自己比较容易模糊的就是,块中存储的是索引数据,还是直接的数据,直接块中存储的是具体的数据就是直接存储,块第一次存储是是索引数据就是一级所以,一级索引指向的块存储如何还是索引那就是二级索引,依次类推。