首页 > 代码库 > 磁盘调度-01

磁盘调度-01

磁盘调度,简单的讲就是让磁盘工作,并且符合我们的要求的工作!

 

很多初学者可能多磁盘调度和文件系统弄混,其实他们是两个完全不相同的概念。

 

磁盘调度可以说是一个磁盘的驱动系统,由磁盘厂商设计和开发。而文件系统属于操作系统的一部分,它比磁盘调度系统更高一级,他直接面向上层用户。

 

那就说说磁盘的调度过程吧,上图。

如图,我们知道,文件系统的存取是按簇的读取的,簇的大小一般和内存块的大小一样,或者整数倍。windows簇的概念等价于linux的块的概念。而磁盘的最小读写单位是扇区(当然不是位),显然我们可以推理得到簇(块)一定是扇区大小的整数倍。扇区大小一般是512字节,簇(块)大小一般是4096字节。

 

我们可以认为图中两块有色区域为两个扇区(因为画图的原因,不可能画出512个小块,所以用4个暂且表示一个扇区)。

 

我们知道,磁盘数据的读取靠的是磁头(上图中未画出),如下图

读取过程就是摇臂先摇到指定磁道上,当磁盘旋转到指定扇区时,磁头依次读取扇区中的位,并缓存到磁盘缓冲区中。显然,磁盘转的越快,磁头读取的速度就越快。、

写数据的过程类似,磁盘先将内存的数据缓存到自己的缓冲区中,然后依据上述过程,磁头将缓冲区的数据修改到指定扇区中。

 

初学者可能会好奇,系统怎么确定磁头摇到哪儿读写的?

其实跟内存寻址一样,磁盘也是靠寻址来确定扇区的。(文件系统就不必关系这些问题了,它提供了更高一层的抽象)

对于普通单片单磁头磁盘,一般有两个参数来确定寻址:磁道和扇区(注意,扇区是一块扇形区域,他上边的每一条道都是512字节)。跟内存寻址略微不同。

当然,现在磁盘技术已经飞速发展了,现代主流磁盘一般都是如下结构:

这样的磁盘一般有多个盘片,每个盘片都有正反两个磁头,磁头和盘片都被序号标记。这里用柱面代替磁道这个概念。

显然,现在要确定某个512字节扇区就需要  磁片号,磁头号(上或者下),柱面号,扇区号。注意顺序不可颠倒。

我们熟知的操作系统的主引导记录MBR就在 0磁片0磁头0柱面1扇区的512字节中。

 

对于扇面中的靠近圆心的扇区和边远的扇区,他们的存取速度其实是一样的,因为角速度一样。