首页 > 其他分享 >9.文件管理

9.文件管理

时间:2023-12-24 19:55:24浏览次数:15  
标签:文件 文件目录 管理 目录 索引 盘块 空闲

文件结构

image
  • 数据项:

​ (1) 基本数据项:用于描述一个对象的某种属性的字符集,是数据组织中可以命名的最小逻辑数据单位, 即原子数据,又称为数据元素或字段。(学号、年龄)

​ (2) 组合数据项:它是由若干个基本数据项组成的,简称组项。(工资、地址)

  • 记录:记录是一种相关数据项的集合,用于描述一个对象某方面的属性。其中关键字是能唯一标识一个记录的数据项。
  • 文件:文件是指由创建者所定义的、 具有文件名的一组相关元素的集合,可分为有结构文件无结构文件两种。 在有结构的文件中,文件由若干个相关记录组成;而无结构文件则被看成是一个字符流。文件在文件系统中是一个最大的数据单位,它描述了一个对象集

文件系统的管理对象

  1. 文件

  2. 目录

  3. 磁盘存储空间

文件控制块(FCB)

  • 描述和控制文件的数据结构

  • 与文件一一对应

  • 文件控制块的有序集合——文件目录

索引结点(i结点,inode)

  • 将FCB拆解,目录文件中只保留文件名,除文件名外其他文件描述信息形成单独的数据结构,称为索引结点
  • 拆解原因:原来的FCB信息太多,查询文件需要将目录文件调入内存,导致内存消耗过大。
  • 引入索引节点后,文件目录项只需包含文件名指向索引节点的指针降低在文件目录中查找文件系统开销
  • 磁盘索引结点、内存索引结点

文件的逻辑结构(-----数据如何组织起来?)

  1. 无结构文件(流式文件):以字节byte为单位,因为没有结构,就没有特征,只能穷举遍历文件。
  2. 有结构文件(记录式文件)
    • 顺序文件:①串结构(时间顺序排序) ②顺序结构(关键字排序)【只有顺序文件能保存在磁带上,定长记录比变长记录查找快】
    • 索引文件: 将变长记录文件进行改进,使之能够直接访问(索引表[定长记录])(特点:具有较高的检索速度, 但增加了存储空间)
    • 索引顺序文件: 索引顺序文件是顺序文件索引文件结合的产物,它将顺序文件的记录分为若干组,并为顺序文件建立一张索引表,表中为每组的第一个记录建立一个索引项,其中包含记录的键值指向该记录的指针,对于较大的文件可建立多级索引。(特点:同组无序,组间有序)
    • 直接文件(Hash文件、散列文件):对于直接文件,则可根据给定的记录键值,直接获得指定记录的物理地址。换言之,记录键值本身就决定了记录的物理地址

文件的实现(物理结构)

文件物理结构逻辑图

image

文件分配方式

  1. 连续分配

    为每一个文件分配一组连续的磁盘物理块

    一般情况下,这些盘块都集中于一个(或有限几个)磁道上,访问时一般无需移动(或无需频繁移动)磁头(寻道数和寻道时间最小

    image

    特点:

    • 顺序访问,直接访问,实现简单,存取速度快
    • 外部碎片多,内部碎片少
    • 适用于长度固定的文件
  2. 链接分配

    离散分配,消除外部碎片,提高磁盘利用率,动态为文件分配盘块

    1. 隐式链接:

      image

      文件目录中的每个目录项包含指向链接文件第一个盘块和最后一个盘块的指针

      • 缺点:只适合顺序访问,对随机访问是极其低效的;稳定性不好
    2. 显式链接:

      把用于链接文件各物理块的指针,显式地存放在内存的一张链表中,即整个磁盘仅有一张表,称为文件分配表(FAT)

      image
      • 优点:查找过程在内存中进行,因而速度很快,并且大大减少了访问磁盘的次数

      • 缺点:

        • 不能支持高效的直接存储
        • FAT需要占用较大的内存空间
      • FAT16、FAT32(表项的位数为16、32位)

  3. 索引分配

    1. 单级索引:为每个文件分配一个索引块(表),把分配给该文件的所有盘块号都记录在该索引块中。因而该索引块就是一个包含许多盘块号的数组,建立文件时,就在文件的目录项中填上指向该索引块的指针

      image
      • 特点:
        • 支持直接访问
        • 不产生外部碎片
        • 外存空间浪费
    2. 多级索引: 当文件规模较大时,为它分配的索引块就不止一个,因而就可以建立多级索引

      image
    3. 混合索引:将多种分配方式相结合而形成的一种分配方式。既可采用直接分配又可采用索引分配。UNIX系统中就是如此。

      image

文件存储空间管理

  1. 空闲表法:

    image
    序号 第一空闲盘块号 空闲盘块数
    1 2 3
    2 9 1
    3 15 4
    4
    • 分配算法(内存动态分配算法):首次适应算法、循环首次适应算法

    • 回收(删除):考虑回收区是否与空闲表中插入点的前区和后区相邻接,对相邻接者应予以合并

  2. 空闲链表法:

    1. 空闲盘块链:盘块号、下一结点指针
    2. 空闲盘区链:首个盘块号、盘区大小、下一盘区指针
  3. 位示图法:

    用二进制位表示磁盘块是否使用过(0:未使用;1:已经使用)

  4. 成组链表法:

    UNIX系统中,将空闲块分成若干组,每100个空闲块为一组,每组的第一空闲块登记了下一组空闲块的物理盘块号和空闲块总数

    image

文件目录

  • FCB的有序集合称为文件目录
  • 一个FCB就是一个文件目录项

文件目录管理的要求:

  1. 允许文件重名

  2. 提高对目录的检索速度

  3. 实现“按名存取”

  4. 文件共享

目录文件的逻辑结构(----FCB如何组织起来?)

  1. 单级目录结构

    在整个系统中只建立一张目录表,每个文件占一个目录项。

    • 优缺点:
      • 简单且可实现按名存取,不允许重名
      • 查找文件速度慢
      • 不便于实现文件共享
      • 只适用于单用户环境,多用户不适用
  2. 两级目录结构

    为每个用户建立一个文件目录,此外系统中再建立一个主文件目录,每个用户文件目录在主文件目录中占一个目录项,其目录项包括用户名指向该用户目录文件的指针

    • 优点:

      • 提高了检索目录的速度
      • 不同的文件目录中可以使用相同的文件名
      • 不同用户可用不同的文件名访问同一个共享文件
    • 缺点:

      • 灵活性不够,不能对文件分类
  3. 多级目录结构

    image
    • 从主目录开始把全部目录文件名与数据文件名依次用“/”连接起来便构成该文件的路径名,此路径名又叫绝对路径名

    • 当前目录又叫工作目录,从当前目录出发的路径名叫相对路径名

    • 优点:更好的对文件进行分类管理,层次清晰,能够有效进行文件管理与保护

    • 缺点:需要按路径名逐级访问中间结点,增加了磁盘访问次数

  4. 无环图目录结构

    树形目录结构+有向边=无环图目录

    被多条有向边指向的目录文件就是共享文件

目录的实现(物理结构)

  1. 线性列表
  2. 哈希表

文件共享

文件共享原因:节约存储空间

  1. 硬链接共享:基于索引结点共享文件

    • 文件的索引节点包括文件的物理地址及其他文件属性等信息,这些内容不放在目录项中

    • 文件目录只设置文件名和指向索引节点的指针

    • 用户对文件的添加和修改只引起索引节点内容的改变,对其它用户可见,能提供给其它用户共享

  2. 软链接共享:利用符号链实现文件共享 (Windows的创建快捷方式)

    用户想共享一个文件时,系统为其创建一个LINK类型的新文件,新文件中包含被链接文件的路径名,这种链接方式称为符号链接,新文件中的路径名叫做符号链

    • 优点:可用于计算机网络,通过网络地址及文件在机器中的路径实现文件的链接和共享
    • 缺点:每次访问共享文件都要多次读盘,系统开销较大

标签:文件,文件目录,管理,目录,索引,盘块,空闲
From: https://www.cnblogs.com/zzmxj/p/17923342.html

相关文章

  • App.Config文件复杂对象自动映射
    Nerdle.AutoConfig是什么.NetFramework使用app.configXML文件作为默认的配置文件,visualstudio也提供很方便的配置管理功能,甚至可以自动将配置项映射到Settings类,但这仅限于简单的数据类型,比如string/int等.对于复杂类型,需要我们自己写映射代码才行.Nerdle.......
  • @ConfigurationProperties(prefix = “xx.xx.xx“) 从配置文件中取值赋给类的属性
    @ConfigurationProperties(prefix=“xx.xx.xx“)从配置文件中取值赋给类的属性@ConfigurationProperties(prefix=“xx.xx.xx”)该注解的作用是从配置文件中取值赋给类的属性,当然也可以为方法的变量赋值/***服务访问URL*/@Component@ConfigurationProperties(value......
  • gRPC .proto文件解析
    .proto文件解析书接上回,创建了hello_grpc.proto文件后对其中参数进行解释,还是以上次的代码为案例syntax="proto3";optiongo_package="./;hello_grpc";packagehello_grpc;messageReq{stringmessage=1;}messageRes{stringmessage=1;}serviceHell......
  • 文件包含漏洞
    文件包含简介文件包含,Fileinclusion。本意:服务器执行PHP等脚本文件时,可通过文件包含函数加载另一个文件中的PHP等脚本,并且执行。可创建供所有网页引用的标准页眉或菜单文件。当页眉需要更新时,只需更新一个包含文件即可,或者当向网站添加一张新页面时,仅仅需要修改一下菜单文件(而......
  • 【江鸟中原】鸿蒙——数据管理
    1 概述在移动互联网蓬勃发展的今天,移动应用给我们生活带来了极大的便利,这些便利的本质在于数据的互联互通。因此在应用的开发中数据存储占据了非常重要的位置,HarmonyOS应用开发也不例外。本文将为您介绍HarmonyOS提供的数据管理能力之一首选项。2 什么是首选项首选项为应用提供Ke......
  • 极速搭建Nginx文件服务器攻略
    目录本地系统安装搭建配置文件有效示例如下注意配置nginx本地认证参考文档问题百宝箱在selinux开启时,访问显示403Forbiden利用Docker容器搭建Nginx文件服务器debian12的apt仓库配置如下在容器内执行如下命令其他本地系统安装搭建Nginx安装包一般都存在于系......
  • 运维管理软件:全面保障IT系统稳定运行
        随着企业信息化的不断推进,IT系统的稳定运行已成为企业运营的关键因素。一旦IT系统出现故障或性能问题,将会对企业的业务造成严重影响。因此,选择一款功能全面、稳定性高、可扩展性强的运维管理软件至关重要。本文将介绍一款运维管理软件,以其全面保障IT系统稳定运行的优势......
  • 运维管理软件解决方案:空间、设备及网络管理的智能化革命
        随着信息技术的飞速发展,企业的运营越来越依赖于复杂的IT系统。这些系统不仅包括了大量的硬件设备,还包括了各种软件和网络资源。因此,对于企业来说,如何高效地管理和维护这些资源变得至关重要。本文将介绍一种运维管理软件解决方案,该方案具有在地图上快速建立或找到建筑、......
  • 配置Samba文件共享
    一、Samba简介Samba文件共享服务是一种开源的软件,用于在Linux和Windows操作系统之间共享文件和打印机。它允许Windows客户端通过SMB/CIFS协议访问和共享Linux主机上的文件和打印机。Samba可以作为文件服务器运行,让Windows用户能够像访问本地文件夹一样访问Linux主机上的文件夹。此......
  • 如何通过蛋壳Uploader把ipa文件上传到App Store教程步骤
    在移动应用开发的过程中,将ipa文件上传至AppStore是非常关键的一环。对于那些没有Mac电脑的开发者来说,这一步骤可能会成为一个挑战。幸运的是,有一个名为“蛋壳Uploader”的在线工具,可以帮助开发者在没有Mac的情况下,轻松上传ipa文件到AppStore。一、准备工作在使用蛋壳Uploader......