首页 > 代码库 > 磁盘调度-01
磁盘调度-01
磁盘调度,简单的讲就是让磁盘工作,并且符合我们的要求的工作!
很多初学者可能多磁盘调度和文件系统弄混,其实他们是两个完全不相同的概念。
磁盘调度可以说是一个磁盘的驱动系统,由磁盘厂商设计和开发。而文件系统属于操作系统的一部分,它比磁盘调度系统更高一级,他直接面向上层用户。
那就说说磁盘的调度过程吧,上图。
如图,我们知道,文件系统的存取是按簇的读取的,簇的大小一般和内存块的大小一样,或者整数倍。windows簇的概念等价于linux的块的概念。而磁盘的最小读写单位是扇区(当然不是位),显然我们可以推理得到簇(块)一定是扇区大小的整数倍。扇区大小一般是512字节,簇(块)大小一般是4096字节。
我们可以认为图中两块有色区域为两个扇区(因为画图的原因,不可能画出512个小块,所以用4个暂且表示一个扇区)。
我们知道,磁盘数据的读取靠的是磁头(上图中未画出),如下图
读取过程就是摇臂先摇到指定磁道上,当磁盘旋转到指定扇区时,磁头依次读取扇区中的位,并缓存到磁盘缓冲区中。显然,磁盘转的越快,磁头读取的速度就越快。、
写数据的过程类似,磁盘先将内存的数据缓存到自己的缓冲区中,然后依据上述过程,磁头将缓冲区的数据修改到指定扇区中。
初学者可能会好奇,系统怎么确定磁头摇到哪儿读写的?
其实跟内存寻址一样,磁盘也是靠寻址来确定扇区的。(文件系统就不必关系这些问题了,它提供了更高一层的抽象)
对于普通单片单磁头磁盘,一般有两个参数来确定寻址:磁道和扇区(注意,扇区是一块扇形区域,他上边的每一条道都是512字节)。跟内存寻址略微不同。
当然,现在磁盘技术已经飞速发展了,现代主流磁盘一般都是如下结构:
这样的磁盘一般有多个盘片,每个盘片都有正反两个磁头,磁头和盘片都被序号标记。这里用柱面代替磁道这个概念。
显然,现在要确定某个512字节扇区就需要 磁片号,磁头号(上或者下),柱面号,扇区号。注意顺序不可颠倒。
我们熟知的操作系统的主引导记录MBR就在 0磁片0磁头0柱面1扇区的512字节中。
对于扇面中的靠近圆心的扇区和边远的扇区,他们的存取速度其实是一样的,因为角速度一样。