如果你刚学完磁盘的基本结构,了解完柱面、磁道、扇区(盘块)、磁头等概念后
根据上图我们知道:
磁道就是一个盘面上以转轴为圆心,半径不同的“圆环”。且每个磁道之间有一定的距离,避免两个磁道距离过近产生磁感应相互作用丢失信息。
扇区(又称盘块)是每个磁道上划分的若干个区域,且每个磁道的扇区数量相等。
柱面则是以转轴为形心,不同盘片上半径相同的磁道组成的一个圆柱体。
磁头则为每一个盘面上都配有的一个器件(注意是“盘面”,与上面的“盘片”有别,盘片有正反两面,一般来说正反两面都可以使用),它用于磁盘寻道时定位磁道。
了解了上面的基本概念后(即做过所谓定性分析后),我们再来看定量的分析。
首先我们假设只有一个磁盘的情况下,可以得到如下的推论:
1、一个盘面上有若干个磁道,可以规定位于盘面最外围的磁道编号为0,位于最接近转轴的磁道编号为n-1。
2、一个磁道上有若干个扇区,可以以某个扇区为开始编号为0,最后一个扇区编号为k-1。
3、整个磁盘上的柱面数等于一个盘面上的磁道数,其编号方式可与一个盘面上的磁道数一致。
4、整个磁盘有若干个盘面,一个盘面对应一个磁头,因此可规定位于最上面的磁头编号为0,位于最下面的磁头编号为s-1。
因此,由于对磁盘的读写操作最小是以块为单位的。那么对于只有一个磁盘的情况下,我们可用磁头号/柱面号(或磁道号)/扇区号(或盘块号)定位一个磁盘上的一个盘块。
我们的个人计算机往往也就使用一个磁盘,因此对于研究个人计算机基本的磁盘结构,以上所说基本上是够用了的。
但在实际情况中,例如服务器中,往往会用到磁盘阵列(RAID:即一个由很多块独立的磁盘,组合成一个容量巨大的磁盘组)。那么问题来了:对于磁盘组,我们如何精确定位某个磁盘上的一个盘块?
考虑到由于一个磁盘组内通常含有若干个磁盘,从逻辑上来说定位时需描述磁盘的编号信息更为准确,但这显然增加了开销。
那为了节省开销,有没有什么更好的办法呢?
——此时柱面的作用此时便体现了出来。
由上图我们知道,若干个磁盘组成的磁盘阵列可看做一个整体的大磁盘,而其中的某个磁盘可以看做一个磁盘中的盘片。
因此,由柱面的定义可以得知,以旋转轴为中心的所有盘片半径相同的磁道都在一个柱面上。那么在整体的“大磁盘上”以旋转轴为中心的每一个磁盘的柱面仍旧在一个柱面上。所以我们可以规定以一个柱面为参考系下,磁道的编号从上到下为0,1,2,…,n-1。而柱面号和扇区号的编号规则不变。
由此,仅由柱面号/磁道号/扇区号便可定位磁盘组上的一个盘块,节省了系统开销,提升了系统利用率。
其实,以上都只是个人基于学习的经验和做题的总结推测出来的,并没有经过太过严格的论证,但应该算有一点科学的推导吧。
有这个想法的缘由是刚开始学习磁盘的基本结构的时候搞不懂柱面的含义和作用,总感觉柱面的存在像是多余的…
可做题时才发现,题目中往往给的是磁盘组的信息,而不单单是一个磁盘的信息。而且一开始我其实还好奇,为什么不给磁盘组中磁盘的数量,磁盘盘块的具体编号方式,上来就直接“每个柱面有xxx个磁道”。
当时便一脸黑脸问号地感叹道:"???磁道数量不是和柱面数量相等么???怎么还跑出一个柱面上有多个磁道的说法来了。”
不过好在那段时间刚看完《天才》第一季,想起了我们大科学家爱因斯坦著名相对论的相对思想。在爱大爷看来:连时间都不是绝对的,考量任何物理量时应建立一个相对的参考系。
于是我当时就在想:是不是我把问题看得太死,盘块的定位方式想得太绝对了?
之后便重新梳理了一遍概念,便有了以上的推断。
最后,好像我漏了一个概念,那就是簇,何谓簇?看下面这张图便可知晓。
简言之就是簇通常包含若干个扇区,且通常为扇区数量的2次方幂,可能是因为簇是数据分配的基本单位吧。
且在绝大多数的操作系统中,为改善磁盘的访问时间,皆以簇为单位进行空间分配。