磁盘构造浅析

一个新的磁盘其实就是一个空白板,它只是一些含有磁性记录材料的盘子,在磁盘能存储数据之前,它必须分成扇区以便磁盘控制器的读和写。这个过程称为低级格式化(下面会有详细介绍),每个磁盘片都是扁平圆盘和CD一样,每个磁盘片的两面都涂着磁质材料,通过磁片上进行磁记录就可以保存信息了。

磁头位于每个磁盘片的表面上,磁头与磁臂相连,磁臂能将所有磁头作为一个整体而一起移动,磁盘片的表面被逻辑地划分成圆形磁道(track),磁道再进一步划分为扇区。位于同一磁臂位置的磁道集合形成了柱面(cylinder),每个磁盘驱动器都有数千个同心柱面,每个磁道可能包括数百个扇区。常用磁盘驱动器的存储容量是按GB来计算的

简单来说磁道仅仅是一个圆形的磁化轨迹,磁化轨迹是磁化区域,是看不见的,而扇区就是盘面由圆心向四周画直线,不同的磁道被直线分成许多扇区的区域,每个弧形的区域叫做扇区,每个扇区的大小一般为512字节,柱面就是不同的盘片相同半径的磁道轨迹从上到下组成的圆柱型区域就叫做柱面

磁盘构造浅析_第1张图片

磁盘构造浅析_第2张图片

驱动器马达会高速旋转磁盘,大多数驱动器每秒可以转动60~200圈,影响磁盘的读写效率的有磁盘的寻道时间(移动磁盘到所要柱面所需的时间)以及旋转等待时间(等待所要的扇区旋转到磁臂所需要的时间),我们需要自己去设置算法的就是磁盘的寻道算法

磁头读取数据是从0磁道开始的,做的是径向运动,当我们要读取的数据太大了,一个磁道读完了,没有读完数据,会进行切换磁道,这个切换的过程叫做寻道,有多个盘面的话,它就会去读取相同磁道的下一个盘面

现代磁盘驱动器可以看做一个一维的逻辑块的数组,逻辑块是最小的传输单位。通常称为扇区, 大小为 512 B或 1024B,一维逻辑块数组按顺序映射到磁盘的扇区扇区 0 是最外面柱面的第一个磁道第一个扇区,数据映射是先按磁道内扇区顺序,再按柱面内磁道顺序,然后再按照从外向里的顺序映射到其余的柱面。当然这种转换是很难进行的

由于磁头是在很薄(数微米)的空气层上的,所以磁头是有和磁盘表面接触的危险,虽然磁盘片上涂了一层薄的保护层,磁头还是可能会损坏磁盘表面,这种现象就称为是磁头碰撞,磁头碰撞是不能修复的,整个硬盘必须要去替换

可移动磁盘通常只有一个磁盘片,它是被保存在塑料盒当中的,这样可以防止被磨损,软盘是比较便宜的可移动磁盘,它有一个软磁盘盒以保存柔软的磁盘片,软盘驱动器的磁头通常是直接与磁盘片接触的,所以和硬盘驱动器相比,该驱动器的旋转速度较慢,软磁盘的存储容量通常为1.44MB左右

在此再介绍一下磁盘的低级格式化和高级格式化

  • 低级格式化就是将磁盘内容重新清空,恢复出厂时的状态,划分出的柱面和磁道,再将磁道划分为若干个扇区,每个扇区又划分出标识部分ID、间隔区GAP和数据区DATA等。可见,低级格式化是高级格式化之前的一件工作,它不仅能在DOS环境来完成,也能在Windows NT系统下完成。而且低级格式化只能针对一块硬盘而不能支持单独的某一个分区。每块硬盘在出厂时,已由硬盘生产商进行低级格式化,因此通常使用者无需再进行低级格式化操作。低级格式化为磁盘的每个扇区采用特别的数据结构。每个扇区的数据结构通常由头、数据区域(通常为512B大小)和尾部组成。头部和尾部包含了一些磁盘控制器所使用的信息,如扇区号码和纠错代码
  • 高级格式化,又称逻辑格式化,它是指根据用户选定的文件系统(如FAT12、FAT16、FAT32、NTFS、EXT2、EXT3等),在磁盘的特定区域写入特定数据,以达到初始化磁盘或磁盘分区、清除原磁盘或磁盘分区中所有文件的一个操作。

下面再简单的介绍下纠错代码的作用

当控制器正常写入一个扇区的数据的时候,ECC会保存一个根据磁盘数据计算出来的值,当读入一个扇区的时候ECC会重新计算这个值,和原来存储的值进行比较,如果两个值不一样的话,那么就可能表示扇区的数据区可能已损坏,如果只有少量的数据损坏了,那么磁盘控制器可以利用ECC计算出哪些数据已改变并计算出它们的正确值

磁盘带宽,是用传输的总位数,除以第一个服务请求与最后传输完成之间的总时间,所以磁盘带宽越大越好

所以关于磁盘调度是一个很大的问题,需要有专门的算法来调度它,下面简单介绍几种算法

  • SSTF调度算法即最短寻道时间优先算法:选择从当前磁头位置所需寻道时间最短的请求,有可能引起某些请求的饥饿
  • SCAN调度算法磁头从磁盘的一端开始向另一端移动,沿途响应访问请求,直到到达了磁盘的另一端,此时磁头反向移动并继续响应服务请求,需知道磁头的当前位置,及磁头的移动方向,有时也称为电梯算法
  • Circular SCAN(C-SCAN):磁头从磁盘的一端向另一端移动,沿途响应请求。当它到了另一端,就立即回到磁盘的开始处,在返回的途中不响应任何请求,把所有柱面看成一个循环的序列,最后一个柱面接续第一个柱面
  • 对于LOOK调度其实就是SCAN和C-SCAN使磁头在整个磁盘宽度内进行移动,事实上,这两个算法都不是这样实现的,通常是磁头只移动到一个方向上最远的请求为止,接着就马上回头了,而不是继续到磁盘的尽头,所以这种形式的SCAN和C-SCAN称为LOOK和C-LOOK调度,之所以这样取名是因为它们在朝着一个方向移动会看是否有请求

你可能感兴趣的:(操作系统概念)