首页 > 其他分享 >文件

文件

时间:2023-02-21 19:24:34浏览次数:20  
标签:文件 记录 用户 目录 索引 分配

文件

一组有意义的信息集合


文件的属性:

  • 文件名
  • 标识符
  • 类型
  • 位置
  • 大小
  • 保护信息

文件结构

  • 有结构文件/流式文件:由一组相似的记录组成

    根据记录长度分为定长记录变长记录

    • 顺序文件:

      • 顺序存储:

        • 定长记录:可实现随机存取

          • 串结构:记录之间的顺序与关键字无关(通常按照时间顺序 ,无法快速找到某关键字对应的记录)

          • 顺序结构:记录之间的顺序按照关键字顺序排列

            (可以快速找到某关键字对应的记录)

        • 可变长记录 :无法实现随机存取

      • 链式存储:无法实现随机存取

    • 索引文件:每条记录对应一个索引表项;索引文件有很快的检索速度 ;因此主要用于对信息处理的及时性要求比较高的场合

      (索引表本身是定长记录的顺序文件)

    • 索引顺序文件:一组记录对应一个索引表项

      (索引表是本身是定长记录的串结构文件)

  • 无结构文件/记录式文件:由一些二进制或字符流组成


文件目录

用户在编程时可以轻松实现“按名存取”用文件路径找到一个文件

目录本身是一种有结构文件 ,由一条条记录组成,每条记录对应一个在该目录下的文件


目录文件中的一条记录就是一个FCB(文件内控制块)

FCB实现了文件名和文件之间的映射,使用户可以按名存取


目录结构

  • 单级目录:早起操作系统不支持多级目录,整个系统只建立一张目录表,每个文件占一个目录项

    (实现了按名存取,但不允许文件重名

  • 二级目录:

    • 主文件目录:记录用户名+相应用户文件目录存放位置

    • 用户文件目录:由该用户的文件FCB组成

    (允许不同用户的文件重名,也可以在目录结构上实现访问限制;但用户不能对自己的文件进行分类)

  • 多级目录结构/树形目录结构:

    • 绝对路径:从根目录出发

    • 相对路径:从当前目录出发

    不便实现文件的共享 ,但在树形目录基础上,增加一些指向同一节点的有向边,使整个目录成为一个有向无环图 ,可以更方便实现多个用户间的文件共享;当用户删除结点时,必须使该结点的共享计数器减为0才能删除结点)


FCB改进:(索引结点机制)

除文件名之外的文件描述信息都放进索引结点:大大提升了文件检索速度


文件分配

大部分操作系统中,磁盘块的大小与内存块、页面大小相同

内存与磁盘之间的数据交换(读写操作、磁盘I/O)都是以块为单位进行的

操作系统为文件分配存储空间都是以块为单位

文件的逻辑地址:逻辑块号+块内地址;物理块号=起始块号+逻辑块号

  • 连续分配:每个文件在磁盘上占有一组连续的块;支持顺序访问和随机访问

    • 优:顺序读写时速度最快

    • 缺: 不便扩展 ;存储空间利用率低,会产生难以利用的磁盘碎片


  • 链接分配:

    • 隐式链接(默认)

      • 优:方便文件扩展,没有碎片问题,外存利用率高

      • 缺:

        • 只支持顺序访问,不支持随机访问

        • 查找效率低

    • 显式链接:把用于链接各物理块的指针显示存放在一张表中(FAT文件分配表)

      一个磁盘仅设置一张FAT,开机时将FAT读入内存,并常驻内存

      • 优:

        • 逻辑块号到物理块号的转化不需要读磁盘操作 ,比隐式链接快得多

        • 支持随机访问

        • 不会产生外部碎片

        • 方便扩展

      • 缺:FAT需要占用一定存储空间

  • 索引分配:一个文件对应一张索引表

    • 优:

      • 支持随机访问

      • 文件方便扩展

    • 缺:索引表需要占用一定的存储空间

    • 若索引表太大,一个索引块装不下:

      • 链接方案:将多个索引块链接起来存放(查找效率低)

      • 多层索引:建立多层索引,第一层索引块指向第二层索引块(访问目标数据块,需要3次磁盘I/O;K层索引结构,且顶级索引表未调入内存,则访问一个数据块只需要K+1次读磁盘操作)

      • 混合索引:多种索引分配方式的结合,如一个文件的顶级索引表中,既包含了直接地址索引,又包含了一级间接索引,还包含二级间接索引

文件存储空间管理

  • 空闲表法:适用于连续分配方式

  • 空闲链表法:

    连续的盘块组成一个盘区

    • 空闲盘块链 :适用于离散分配的物理结构

    • 空闲盘区链:离散分配、连续分配都适用;为一个文件分配多个盘块时效率更高

  • 位示图法:连续分配、离散分配都适用

    例:

    image

    image

    • 盘块号b=ni+j

    • 字号i=b/n

    • 位号j=b%n

文件的基本操作

操作系统向上提供的最基本功能:(系统调用)

  • 创建文件

  • 删除文件

  • 读文件

  • 写文件

  • 打开文件:将目录项中的信息复制到内存中的打开文件表中,并将打开文件表的索引号(文件描述符)返回用户

  • 关闭文件

文件管理功能

文件共享

  • 基于索引结点的共享方式(硬链接)

  • 基于符号链的共享方式(软连接):访问速度比硬链接慢,如快捷方式

文件保护

  • 口令保护:

    • 优:保存口令的空间开销不多;验证口令的时间开销也很小

    • 缺:正确的口令存放在系统内部,不够安全

  • 加密保护:访问文件时需要提供正确的密码才能对文件进行正确的解密

    • 优:保密性强,不需要在系统中存储密码

    • 缺:编码/译码,或者说加密/解密要花费一定时间

  • 访问控制:在每个文件FCB中增加一个访问控制列表(ALC),该表中记录了各个用户可以对该文件执行哪些操作

    (精简的访问控制表:以组为单位,标记各组用户可以对文件执行的操作)


标签:文件,记录,用户,目录,索引,分配
From: https://www.cnblogs.com/yuanyu610/p/17142109.html

相关文章

  • 'CScript' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
    当adroidstdio打开虚拟机时回报错误为标题时,是我们系统中的path路径缺少,仅需要使用如下方法。系统环境变量被修改了。恢复办法如下:我的电脑--属性--高级--环境变量--系统......
  • uniapp安卓本地文件读取(html5+)
    plus.io.resolveLocalFileSystemURL(                "_www/static/caise.json",//static下路径                    functi......
  • 使用插件时在.json文件中未找到引入的vant文件
      解决:1.先参照官方给的文档安装:  2.在要引入的json文件中修改引入路径,仿照ES5的格式(1)来修改。因为文档提供的(2)是ES6版本的,所以要仿照(1)来修改即可使用。 (1)对(2......
  • Powershell获取当前文件夹内所有一级子文件夹大小
    需求:查看Windows某个文件夹所有一级子文件夹大小,并按照从大到小排序 解决方案:使用Powershell脚本 脚本内容如下functionfilesize(){ [string]$filepath......
  • rsync同步文件
    1.rsync安装yum-yinstallrsync2.基本用法都是-avzp3.1将本地的文件同步到远端服务器rsync-avzpsource/username@remote_host:destination3.2将远端服务器文件同步到......
  • Gin文件上传
    Gin官方官方给出了单文件与多文件的上传方式,也就是其实gin自己就实现了文件上传的功能,只不过看下来好像只能上传到本地,转发到别的服务器的话需要自己再加一些实现,并不是很......
  • 使用autoIt 上传文件(参数化)
    1.编写autoit脚本:upload.au3ControlFocus("打开","","Edit1");用于识别windwos窗口WinWait("[CLASS:#32770]","",3);等待窗口显示ControlSetText("打开","","E......
  • QFileDialog -文件对话框
    QFileDialog继承了QDialog,具有父类的各种方法。QFileDialog提供了一个对话框,允许用户选择文件或者目录,也允许用户遍历文件系统,用以选择一个或多个文件或者目录。常用方法......
  • 如何将多张CAD图纸合并成一个图纸文件?
    在CAD设计过程中,有些时候会需要将多张CAD图纸合并成一个图纸文件,可有些新手设计师对此并不了解,所以接下来的CAD教程小编将会以浩辰CAD软件为例来给大家分享一下将多张CAD图......
  • minio设置文件访问策略
    1、设置AccessPolicy为public通过访问主机地址+文件的方式:​​http://x.x.x.x:9000/bucket/xxx.jpg​​此时的规则是2、通过MC设置存储桶或路径策略为download必须通过min......