磁盘存储管理,如何为文件分配内存

注:本文为本人读书总结,内容仅供参考。

一、实物图

在这里插入图片描述

二、原理图

  • 磁头(head):每个盘片一般有上下两面,分别对应1个磁头,共2个磁头;
  • 磁道(track):磁道是从盘片外圈往内圈编号0磁道,1磁道…
  • 扇区(sector)数:每个磁道都别切分成很多扇形区域,每道的扇区数量相同;
  • 所有的盘片(一般硬盘里有多个盘片,盘片之间平行)都固定在一个主轴上。在每个盘片的存储面上都有一个磁头,磁头与盘片之间的距离很小(所以剧烈震动容易损坏),磁头连在一个磁头控制器上,统一控制各个磁头的运动。磁头沿盘片的半径方向动作,而盘片则按照指定方向高速旋转,这样磁头就可以到达盘片上的任意位置了。

在这里插入图片描述

三、读取数据的流程

  1. 操作系统发送指令:取0柱面(最外层的所有磁道组成的一个圆柱面),0磁头(第1个磁头),1扇区(第一个扇区)的数据
  2. 第1个磁头移动到第一个柱面(锁定了一个磁道的数据)
  3. 主轴转动,转动到第一个扇区的时候,将数据取出

四、硬盘空间的组织方式(如何为文件分配内存)

详细见:磁盘文件管理程序
可以想象,一块较大的磁盘空间其实是由无数个盘块组成的,那么这些盘块如何组装成一块较大的内存来分配给一个文件呢?

  1. 连续:为每个文件分配一块连续的空间,各个盘块相邻接,第一个盘块的地址为a,第二个就是a+1,第三个是a+2 ……
    优点:知道文件的起点和长度便可以像数组一样随机存取数据;连续的盘块基本都在同一个磁道,效率极高;
    缺点:需要事先知道存储的文件的大小来决定分配哪些连续空间、插入删除会产生许多碎片化的文件,
  2. 链式:属于一个文件的盘块通过链接成为一体,每个链条的首地址作为文件地址记录在相应文件的FCB的“物理地址”字段中。记录盘块链接的指针显示地记录为一张链接表,所有已分配的盘块号都记录在其中,称文件分配表(FAT),为了提高文件系统访问速度,FAT一般常驻内存
    缺点:FAT过大,太占内存,需要遍历FAT
  3. 索引:每个文件都建一张索引表记录分配的内存盘块的信息;
    例如一个索引表定义为13个地址项:iaddr(0)~iaddr(12),总的来说分为两种:直接地址、间接地址
    小文件:
    iaddr(0)~iaddr(9)存放直接地址,即存文件数据的盘块号;
    中文件:
    iaddr(10)存放单级索引的索引盘块号;
    大文件:
    iaddr(11)存放二级索引的主索引盘块号
    iaddr(12)存放三级索引的主索引盘块号

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/peanutwzk/article/details/105412699