admin 管理员组

文章数量: 887021

文件管理

操作系统文件管理

操作系统中对软件的管理就是对文件的管理(基本单位)

  • 逻辑结构:主要是概念当中的一些结构层次,主要有流式文件和记录式文件;
  • 物理结构:
    • 顺序文件结构:按照文件的逻辑顺序存储到物理结构当中,相当于给文件分配一个连续的存储空间,逻辑上是什么形式,物理上就是什么形式;
    • 链式文件结构:在存储空间分配时上不考虑连续空间,将文件和存储空间分成相同大小的物理块(页),在存储相应文件信息时,存储逻辑关系,上一个节点存储指向下一个节点的指针;
    • 索引文件结构:将所有文件划分成数据存储,并把它们存储的位置记录下来,类似于用一张表来记录文件存储所在的位置,线索式结构。

  • 索引文件在unix系统中,默认有13个索引结点,一般都不会多于13个索引结点;
  • 直接索引:索引结点(线索)---->地址指向----->物理块号,结点编号的直接指向物理块,物理块里存储的是文件本身(文件的逻辑页,文件的数据),在直接索引中索引编号是连续的,对应物理块中的逻辑页也是连续的,例如:0号索引编号对应物理块中0号逻辑页,1号对应1号…,直到9号直接索引结束;
  • 一级间接索引:索引结点(线索)---->一级间接索引表----->物理块号,结点编号不直接指向物理块,而是指向遗迹间接索引表,由一级间接索引表编号指向物理块;
  • 二级间接索引:索引结点(线索)---->一级间接索引表----->二级间接索引表----->物理块号,结点编号不直接指向物理块,而是指向两次间接索引表,经过两次间接索引表编号最后指向物理块;
  • 三级间接索引:索引结点(线索)---->一级间接索引表----->二级间接索引表----->三级间接索引表----->物理块号,结点编号不直接指向物理块,而是指向三次间接索引表,经过三次间接索引表编号最后指向物理块;

  • 文件在逻辑上一定是连续的,如图0—9,10—n+9,n+10…;在物理上可以是分散的,如图108、11、16、141、21、33、19、12、51…
  • 无论是索引块还是数据块大小一般都是固定的,如图上编号93就是索引块,对应的141到21也是索引块,数据块10号,根据不同的机器存在区别;而141、6、21、这种叫做地址项除一级索引外,一个索引块或者数据块存在多个地址项
  • 例如:上图,一个索引块、数据块是1KB,一个地址项是1B,那么一级索引指向的最后一个物理块是多少号,1KB/1B = 256;一级间接索引的物理块号从10开始,一级索引项有256个,一级间接索引的物理块号最后一个编号为:256+10-1=265,二级间接索引有2个索引盘,所以有256^2个索引项,编号从266开始到266 - 1 + 256^2;三级间接索引有3个索引盘,所以有 256^3 个索引项;
  • 直接索引访问一次磁盘(直接访问数据盘)就可以获取数据,一级间接索引访问二次磁盘(一次索引盘,一次数据盘)才可以获取到数据,二级间接索引访问三次磁盘(二次索引盘,一次数据盘)才可以获取到数据,三级间接索引访问四次磁盘(三次索引盘,一次数据盘)才可以获取到数据;
  • 索引结构表示的单个文件长度:所有物理块相加,


位示图

针对不同的文件,会把文件切割成多块后,分散分布存储在不同的物理块磁盘块中,而这些物理块、磁盘块中哪一些是空闲的可以用来分配存储的?对这些物理块、磁盘块的空间管理由多种方式:

  • 空闲区表法(空闲文件目录)
    将所有空闲空间按目录用一个表进行记录;
  • 空闲链表法
    以指针的方式,上一个节点保存着指向下一个节点指针;
  • 位示图法
    位指的是bit位,1位二进制,将磁盘上的存储空间罗列出来,用1位二进制(0、1)来表示它们是否空闲,0:空闲,1:已被占用;空闲空间被分配使用则改为1,回收被使用的磁盘块则把1改为0;
  • 成组链接法
    用成组链接的方式,将空闲的空间组合出来。

  • 位示图按字进行分组,根据不同的计算机,具体一个字多长,一个字占多少bit位也不同;
  • 位示图的分组,按字长多少,一个字占多少bit位进行分组;


如图所示:
图中有16个字,每个字占16位,且磁盘序号是从0开始的,如果要分配15号、32号磁盘,它们在第几个字的第几位了?

解题思路:

  • 首先判断磁盘块从第几号字的第几号位开始,且一字占几位,要分配的磁盘块是几号,磁盘号所在的实际位置;
  • 用1-开始的磁盘号就是磁盘号相差的实际存的位置,例如:从0号开始,那么1-0 = 1,那么15号实际上在16的位置,32号实际上在33号的位置,15和32只是按从0开始排的序号;
  • 如果要分配的磁盘块号 < 一字占位长,实际存在的位置:磁盘号+相差的实际存的位置 ,则从开始序号数到实际存在的位置查看所在字号和位号;(实际上是从0数数到16所排的序号15);
    如果要分配的磁盘块号 > 一字占位长,实际存在的位置:磁盘号+相差的实际存的位置 ,则该磁盘块号实际存在位置 / 一字占位长 = 商 和 余数;

15号磁盘块:因为磁盘块从第0号字的第0号位开始,序号和实际位置相差:1 - 0 ,实际位置:16,且一个字占16位,15<16,从0数到16所在的序号是15,所以在第0号字的第15位上;
32号磁盘块:因为磁盘块从第0号字的第0号位开始,序号和实际位置相差:1 - 0 ,实际位置:33,且一个字占16位,32>16,33/16 = 2 余 1,所以在2号字的1号位上;



第2048号磁盘块在几号字的几位上?
2048号磁盘块:因为磁盘块从第0号字的第0号位开始,序号和实际位置相差:1 - 0 ,实际位置:2049,且一个字占32位,2048>32,2049/32 = 64 余 1,所以在64号字的1号位上;

树形目录结构


树形目录结构(多级目录结构):

  • 主节点(根目录/),在unix系统中根目录用/表示且只有一个根目录,在window系统中理解为盘符D盘、E盘等等,中间节点和末尾的节点(叶子节点);
  • 绝对路径:从根目录开始,直到找到目标节点的路径
  • 相对路径:从当前所在节点的下一级节点开始,直到找到目标节点的路径
  • 相对路径打开文件的效率比绝对路径的高
  • 在系统中,整个文件完整的文件名:该文件的绝对路径 + 扩展名,如:/D1/W2/F2.txt;D:/D1/W2/F2.txt;
  • 树形目录结构允许文件在不同路径下同名,在相同路径下不允许同名,如图上的f1节点,

本文标签: 文件管理