磁盘管理

367 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第34天,点击查看活动详情

磁盘是计算机系统中重要的外部存储设备。磁盘容量大,访问速度快,是计算机系统中软件资源的重要保存场所,操作系统自身也保存在磁盘上。操作系统的发展和完善与大容量磁盘的问世密不可分。

磁盘结构

磁盘由若干个涂有磁性介质的圆形盘面构成,经过低级格式化,每个盘面(包括正反两面)被划分成一系列同心圆,每个同心圆称为一个磁道,每个磁道再划分为若干等份,称为扇区,数据以扇区为存储单位保存在磁盘上。每个扇区的容量通常为512B。扇区是磁盘访问的基本单位,访问扇区的某些字节意味着访问整个扇区。所有盘面上同等大小的磁道构成柱面。

磁盘工作时,一方面,整个盘片沿着主轴旋转,磁头下方磁道上的各个扇区依次通过磁头,其中的数据可以依次被磁头读取,或者将数据依次写入磁头下方经过的扇区;另一方面,磁臂沿径向移动,磁头能够到达目标磁道位置,对该磁道进行读写访问。 访问磁盘上的数据时需要给出物理块(扇区)的物理存储地址,该地址是三维的,采用(柱面号,磁头号,扇区号)表示。磁盘物理块(扇区)的逻辑地址是一维线性的,称为逻辑块号(扇区号)。所有扇区依次排列,从0开始连续编号。扇区编排顺序是自外向里对各个柱面内的扇区进行排序的,同一柱面内的各个扇区先按磁道顺序、再按磁道内扇区顺序排列,扇区0是最外面柱面的第一个磁道的第一个扇区。访问扇区时,可以给出扇区号,即逻辑块号,系统自动将逻辑块号转换为(柱面号,磁头号,扇区号)构成的三维物理地址。

在老式磁盘上,各个磁道上的扇区数都是相同的。因此,外侧磁道上的存储密度小于内侧磁道。现代磁盘使外侧磁道拥有比内侧磁道更多的扇区数,磁道扇区划分的这种物理细节称为磁盘物理几何规格,该规格对操作系统及其他软件一般是隐藏的,因为磁盘控制器会将磁盘物理几何规格映射为各个磁道扇区数看似相同的虚拟几何规格,该规格被公开给操作系统。

在连续访问相邻的两个磁道上的扇区时,磁盘的旋转动作和磁头寻道动作是同时进行的,磁头的相对移动方向是倾斜的,既沿径向移动,又做圆周运动。当磁头从一个磁道移动到下一个磁道时,磁头所在扇区位置与访问过的上一个磁道的最后一个扇区位置、第0扇区位置已经相错若干扇区。为了能够连续读取相邻两个磁道上的扇区,相邻两个磁道的第0扇区并不沿盘面半径方向相邻,而是偏移若干扇区,这称为柱面斜进。偏移的具体扇区数取决于磁头移动一个磁道需要花费的时间和读取一个扇区需要花费的时间之比。 序,该程序再从磁盘读入和执行一个引导程序加载器,操作系统内核就由引导程序加载器加载到内存中并执行,完成操作系统的启动过程。 例如,一个10000rpm的驱动器每6ms旋转一周,如果一个磁道包含300个扇区,则每20s就有一个扇区通过磁头。如果磁头从一个磁道移动到相邻磁道的时间(即寻道时间)是800s,则在寻道期间将有40个扇区通过磁头。如果希望移动到相邻磁道的磁头立即读取该磁道的第0扇区,则相邻两个磁道的第0扇区位置应该沿盘面半径方向偏移40个扇区位置。

扇区的编号方式还需考虑数据在磁盘控制器与内存之间传输的时间对扇区访问连续性的影响。当扇区从磁头下方通过时,扇区中的数据需要连续地读出来并暂存在磁盘控制器缓冲区中,然后传送到内存中。在传送期间,与上一个扇区相邻的另一个扇区开始从磁头下方通过。由于缓冲区中的数据尚未传输完毕,立即读取该扇区中的数据将无处缓存,控制器只得等待磁盘旋转一周,到第2个扇区再次回来。为了解决这一问题,对磁道扇区交错编号,编号相邻的两个扇区中间间隔若干个扇区,使下个访问扇区适当延迟到来。

许多现代磁盘控制器可以对整个磁道进行缓存,磁盘扇区因此不再需要交错编号。 在存放数据之前,一般需要对磁盘进行分区,每个分区在逻辑上视为一个独立的磁盘。在多数计算机上,0扇区包含引导代码和分区表。分区表给出每个分区的起始扇区和大小。对分区执行高级格式化,设置引导块、空闲盘块信息表、根目录和空文件系统,并安装操作系统到磁盘分区上。

启动计算机时,主板芯片上的ROM-BIOS程序首先运行,经过一些自检工作后,读入并执行磁盘0扇区的引导程序,该程序再从磁盘读入和执行一个引导程序加载器,操作系统内核就由引导程序加载器加载到内存中并执行,完成操作系统的启动过程。