磁盘分区也是隐含了技巧的!

2020-04-27  本文已影响0人  yanfeizhang

在前文《磁盘开篇:扒开机械硬盘坚硬的外衣!》中,我们了解了机械硬盘的物理构造,是由磁盘面,磁道、扇区等更小的单位组成的,如下图:

机械硬盘结构

分区是操作系统对磁盘进行管理的第一步,这也是我们任何一个计算机使用者都非常熟悉的概念。例如Windows下的C、D、E、F盘。那么请思考一下,如果你是操作系统的设计者,让你把整块磁盘分成C、D等分区,你会怎么分呢?

为了方便讨论,我们这里你要分的硬盘是有50个盘面,3000个柱面。我们给出两种方案

接下来我们来讨论下那种方案更优秀,这得从磁盘的读写延时角度说起。读写原理说起来也简单,就是磁头要找到指定的磁道,指定的扇区,进而把数据读取出来或者写入进去的过程。这个过程分成如下三步:

到此为止,单次磁盘IO时间 = 寻道时间 + 旋转延迟 + 存取时间

分区上采用哪一种方案,最主要看的是那种方式性能更快。在磁盘分区的使用中,存在一个基本事实,那就是同一分区下的数据经常会一起读取。两种方案的对于旋转延迟、和存取时间上表现的性能是一样的,主要区别是在寻道时间的表现上:

假如采用第一种,那么这样磁头就需要在3000多个磁道间不停地跳来跳去,这样磁盘的寻道时间就降不下来。而对于方案二,假如对于磁盘C,只需要在磁头在1-1000个磁道间移动就可以了,大大降低了寻道时间。

所以所有的操作系统采用的都是方案二,没有用方案一的。如果你在Linux下使用过fdisk进行过分区的话可以注意到以下信息。

分区的过程就是你输入起始柱面号和截至柱面号的过程。不过在实际中,分区并不能从0号柱面开始的,因为磁盘的第一个磁道对应的柱面会被用来安装引导加载程序以及磁盘分区表。

所以,操作系统通过按磁道对应的柱面划分分区,来降低磁盘IO所花费的的寻道时间 ,最终提高磁盘的读写性能。

欢迎搜索微信公众号:开发内功修炼

上一篇下一篇

猜你喜欢

热点阅读