zoukankan      html  css  js  c++  java
  • 操作系统之文件管理

    1.文件系统

           文件是具有文件名的一组关联信息的集合,通常文件由若干个记录组成。文件系统是操作系统与管理文件有关的软件和数据集合。从用户的角度看,文件系统实现“按名存取”。从系统的角度看,文件系统是对文件存储器的存储空间进行组织、分配负责文件的存储并对存入的文件实施保护、检索的一组软件集合。

           文件系统模型可以分为三个层次:底层是对象及其属性(文件、目录和磁盘存储空间);中间层是对对象的进行操作和管理的软件集合(核心部分);最高层是文件系统提供给用户的接口。

           为使用户能灵活方便地使用和控制文件,文件系统提供了一组进行文件操作的系统调用:建立文件、删除文件、打开文件、关闭文件、读文件和写文件。

    2.文件的逻辑结构

           文件结构是指文件的组织形式,文件的组织分为文件的逻辑结构(即逻辑结构)和文件的物理组织(即物理结构)。文件的逻辑结构是从用户的角度出发所看到的文件组织形式,文件的物理结构是从系统的角度看到物理存储的形式。

           文件的逻辑结构分为:记录式的有结构文件,另一种是字符流式的无结构文件。有结构文件又称为记录式文件,记录式文件又分为定长记录和变长记录。根据用户需要可以用多种方式来组织这些记录,形成如下几种文件:

         (1)顺序文件:由一些列记录按某种顺序排列所形成的文件,通常是定长记录。文件中的记录可以是任意顺序的,可以按照不同的顺序进行排列。增加或删除一个记录比较困难。

         (2)索引文件:记录为可变长度时,通常建立一张索引表,并为每个记录设置一个表项。索引表中的表项包括该记录的索引号、记录长度以及指向该记录的逻辑地址指针。

         (3)索引顺序文件:两种文件的结合。它为文件建立一张索引表,为每一组记录中的第一个记录设置一个表项。将记录中所有记录分为若干组(例如50个记录为一组),为顺序文件建立一张索引表,在索引表中的第一个记录建立一个索引项,包括该记录的键值和指向该记录的指针。

           无结构文件是一种流式文件,其长度以字节为单位。对流式文件的访问是采用读写指针来指出下一个要访问的字节。可以把记录文件看作流式文件的一个特例。

    3.文件的物理结构

           文件的物理结构指在外存上的存储组织形式,由逻辑地址到物理地址的映射是和物理结构相关的。文件存储设备通常划分为大小相等的物理块,物理块是分配及传输信息的基本单位。同时,文件信息划分为物理存储块大小相等的逻辑块。有以下几种物理结构:

         (1)顺序结构:一种简单的物理结构,将一个逻辑文件存储在外存连续的物理块中。这种方式保证了逻辑文件中的记录顺序与存储中文件占用盘块顺序一致。为了能找到文件必须记录第一个记录所在的盘块号以及文件的长度(以盘块号的方式进行统计)。这种方式容易造成外碎片,即有些小的盘块无法在满足文件分配需求,可以通过紧凑的方法使盘上所有的空闲盘块集中在一起,存有文件的盘块集中在一起。这种方式还有一个缺点就是必须事先知道文件的长度。

        (2)链接结构:将逻辑上连续的文件存放在外存不连续的区域上。通过链表的方式将同一个文件串成一个链表。这种方式消除了外碎片,显著提高了外存空间的利用率。文件可动态增长、删除,十分方便。

           分为隐式连接和显示连接。隐式连接,文件目录包含了一个指向第一个盘块的指针和最后一个盘块的指针,其余指针在盘块中。显示连接:把用于连接各文件物理块指针,显示地存放在一张表中。查文件的时候只需要去这张表,由于查表的过程是在内存中完成,这种方式降低了磁盘的访问次数(FAT采用了这种方式)。整个系统有一张分配表FAT,在FAT中每个表项存储了存放一个盘块的块号。每个文件的第一个块号存储在自己的FCB中。这种方式就是FAT占用内存空间太大,每次查找一个文件需要将整个FAT调入内存。

        (3)索引结构:索引结构将一个逻辑文件的信息存放在外存的若干个物理块中,并为每个文件建立一个索引表,索引表中的每个表目存放文件信息所在的逻辑块号中和与之对应信息存放在的逻辑结构和与之对应的物理块号中,以索引结构存放的文件称为索引文件。在存取文件时至少需要两次访问存储器,第一次访问索引表,第二次根据索引表提供的信息访问文件信息。索引分配方式又分为单级索引、多级索引和混合索引。单级索引为每个文件只分配一个索引块,再把分配给文件的所有盘块号记录在该索引块中。建立文件时,为之分配一个索引块,然后该文件的所有盘块号记录在其中。当文件较大时,需要分配多个索引块。索引块太多时,查找效率太低,于是就为索引块建立索引块,这样查找速率的提高很多。混合索引将上两种方式结合起来。

    4.文件的目录

           文件目录是一种数据结构,用于表识系统中的文件及其物理地址,供检索时使用。文件包含文件体和文件说明(描述和控制文件的数据结构,称为文件控制块FCB)。文件管理程序借助FCB,对文件施以各种操作,人们把文件控制块的有序集合称为文件目录,即一个文件控制块就是一个目录项。

           文件控制块包括文件名、文件的物理位置、文件的物理结构(上面讲过)和文件的逻辑结构(上面讲过),存储控制信息(权限)和使用信息(建立日期等)。

            文件目录较多时,如果查找某个文件,需要将文件目录调用内存,查找指定文件名的文件目录,这样比较慢。因为文件目录是由FCB组成,但是在检索文件的时候,只有用到了文件名这样,需要再建立一张表,包括文件名到索引节点的映射。(unix这么干的)

            文件目录可以按照单级目录、二级目录和多级目录结构组织。

            目录查询技术:当用户提供文件名时,对目录进行查询,找出该文件的文件控制块或对应索引节点。然后根据FCB或者索引节点中所记录的物理地址(盘块号),换算出文件在磁盘上的物理地址;最后通过磁盘驱动程序,将所需文件读入内存。目前对目录的查询方式有线性检索和hash方法。

    5.文件存储空间管理

    空闲表和空闲链表:空闲表为每个文件分配连续的存储空间。系统为外存上的所有空闲区建立一张空闲表,每个空闲区对应一个空闲表项。空闲链表是将所有空闲盘区拉成一条空闲链,分为空闲盘块链和空闲盘区链。

            位示图:利用二进制记录盘中一个盘块的使用情况。

    6.文件共享

            三种方法:绕道法、链接法和基本文件目录。绕道法从文件当前目录向上返回到与所要共享文件所在路径的交叉点,再顺序向下访问到共享文件。链接法直接将一个目录的链接指针指向共享目录。

  • 相关阅读:
    python 的基础 学习 第六天 基础数据类型的操作方法 字典
    python 的基础 学习 第五天 基础数据类型的操作方法
    python 的基础 学习 第四天 基础数据类型
    ASP.NET MVC 入门8、ModelState与数据验证
    ASP.NET MVC 入门7、Hellper与数据的提交与绑定
    ASP.NET MVC 入门6、TempData
    ASP.NET MVC 入门5、View与ViewData
    ASP.NET MVC 入门4、Controller与Action
    ASP.NET MVC 入门3、Routing
    ASP.NET MVC 入门2、项目的目录结构与核心的DLL
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3153163.html
Copyright © 2011-2022 走看看