继上一篇<<linux内核原理剖析——内存寻址(一)>>之后,发现大家
对底层技术关注度比较高之后,今天继上一篇的内存寻址一文后,补
充一篇关于更为底层的——磁盘寻址,让我们更清楚的了解计算机在
硬盘上是如何寻址的。
磁盘模型
上图显示了计算机系统中磁盘的形态。其中磁盘会在主轴上通过机械摇臂旋转,一个磁盘上下会有2个磁头(图中为了方便,只画了一个),当旋转时,磁头在磁盘上画出磁道(一个磁盘上有多个磁道),每个磁道的立面称为柱面,两个磁道之间会分割成一小块一笑块区域,称为扇区。
寻址方式
数据是存储在计算机的磁盘上的,那么cpu是如何通过内存在磁盘上找到需要找的数据呢?答案当然也是需要寻址的,即为磁盘寻址。磁盘寻址分为CHS和LBA。
CHS
最开始我们的磁盘有8个磁片,每个磁片上有2个磁头,每个磁片上有21024个磁道,每个磁道有63个扇区,每个扇区大小相等,为512byte。即整个磁盘大小:82102463*512byte = 500M。但是我们会发现个问题,如果每个磁道都是63个扇区,那么外层磁道分的每个扇区一定是要比内层磁道分的每个扇区要大,所有为了保证每个扇区大小相等,外层扇区采用稀疏的存储方式存储,但是这样浪费了存储空间,所有产生了LBA。在聊LBA之前,我们先看下CHS是如何寻址的。
磁道是有编号的,最外层磁道编号为0,然后依次为1、2、3…越靠近圆心的磁道编号越大。
扇区:每个磁道的扇区也是从0开始编号,0、1、2、3…
CHS是柱面 磁道 扇区的缩写,用CHS方式表示的地址为0/0/1,那么表示当前的物理地址所对应的是第0个柱面第0个磁道上的第一个扇区,那么即定位到了寻址0/0/1所对应的