目录

1.1文件的基本概念

1.2文件控制块和索引结点

1.3文件的操作

1.4文件保护

1.5文件的逻辑结构

1.5.1无结构文件(流式文件)

1.5.2有结构文件(记录式文件)

1.5.2.1顺序文件

1.5.2.2索引文件

1.5.2.3索引顺序文件

1.5.2.4直接文件或散列文件(Hash File)

1.6文件的物理结构

1.6.1连续分配

1.6.2链接分配

1.6.2.1隐式链接

1.6.2.2显式链接

1.6.3索引分配

1.6.3.1大文件索引块的三种处理方案

1.6.4混合索引分配


文件管理功能是专门管理在外存上的文件,并把对文件的存取、共享和保护等手段提供给用户。这不仅方便了用户,保证了文件的安全性,还可有效地提高系统资源的利用率。

1.1文件的基本概念

文件是指具有文件名的若干相关元素的集合。元素通常是记录,而记录又是一组有意义的数据项的集合。文件可以是文本文档、图片、程序等。文件通常具有点+三个字母的文件扩展名,用于指示文件类型。在用户进行的输入、输出中,则以文件为基本单位。

可见,基于文件系统的概念,可以把数据组成分为数据项记录文件三级。

  • 数据项:是最低级的数据组织形式,数据项不可分割。
  • 记录:是一组相关的数据项的集合。组成数据的、有一定意义的基本单位,又称数据元素。
  • 文件:可分为有结构文件无结构文件。在操作系统中,通常将程序和数据组织成文件。其基本访问单元可以是字节或记录。文件可以长期存储在硬盘中,允许可控制的进程间共享访问,能够被组织成复杂的结构。

1.2文件控制块和索引结点

除了文件数据,操作系统还会保存与文件相关的信息,如所有者、创建时间等,这些附加信息称为文件属性文件元数据

文件控制块(FCB)是用来存放控制文件需要的各种信息的数据结构,以实现用户“按名存取”。FCB的有序集合称为文件目录,一个FCB就是一个文件目录项一个文件具有一个FCB

一个文件目录也被视为一个文件,称为目录文件。

FCB(File Control Block)主要包含以下信息:

  • 基本信息,如文件名、文件的物理位置、文件的逻辑结构、文件的物理结构。
  • 存取控制信息,包括文件拥有者的存取权限、核准用户的存取权限和一般用户的存取权限。
  • 使用信息,如文件创建时间、最后一次修改时间和最后一次存取时间等。

在检索目录的过程中,只需用文件名,当找到一个目录项(其中的文件名与要查找的文件名匹配)时,才需从该目录项中读出该文件的物理地址。

因此有的系统(如UNIX)便采用了文件名文件描述信息分开的方法,使文件描述信息单独形成一个称为索引结点的数据结构,简称 i 结点(inode)。这种方法可以减少查找文件的平均启动磁盘次数,节省系统开销。

在文件目录中的每个目录项仅由文件名指向该文件所对应的索引结点指针构成。

存放在外存中的索引结点称为“磁盘索引结点”,当索引结点放入内存后称为“内存索引结点”。相比之下内存索引结点中需要增加一些信息,如:文件是否被修改、此时有几个进程正在访问该文件等。

1.3文件的操作

  • create系统调用:提供所需的外存空间大小;文件路径;文件名等参数;操作系统在外存中找到文件所需的空间创建该文件的目录项
  • delete系统调用:提供文件路径文件名等参数。操作系统找到文件对应的目录项,根据其信息回收文件占用的磁盘块,最后删除文件对应的目录项
  • read系统调用:在读文件之前需要先打开文件,然后提供打开文件表中的索引号,读入多少数据,和数据放在内存中的位置。操作系统会从读指针指向的外存地址中,将指定大小的数据读入用户指定的内存区域。
  • write系统调用:在写文件之前需要先打开文件,然后提供打开文件表中的索引号,写入多少数据,和写回外存的数据放在内存中的位置等参数操作系统会从用户指定的内存区域,将指定大小的数据写回写指针指向的外存地址。
  • open系统调用:提供文件存放路径文件名;要对文件的操作类型(如:r只读;rw读写等)操作系统找到文件对应的目录项将目录项复制到内存中的打开文件表。之后用户使用打开文件表的编号来指明要打开的文件。
  • close系统调用:操作系统将进程的打开文件表相应表项删除;回收打开文件表的打开计数器count减1,若count=0,则删除对应表项。

 打开文件表的索引号也称“文件描述符”,“文件句柄”(对应UNIX和Windows)

1.4文件保护

注:访问控制表(Access Control List)是对访问矩阵按列(对象)划分而建立的。

1.5文件的逻辑结构

所谓“逻辑结构”,就是指在用户看来,文件内部的数据应该是如何组织起来的。而“物理结构”指的是在操作系统看来,文件的数据是如何存放在外存中的。

1.5.1无结构文件(流式文件)

无结构文件内部的数据就是一系列二进制流或字符流。 无结构文件将数据按顺序组织成记录并积累保存,它是有序相关信息项的集合,以字节 (Byte)为单位。 由于无结构文件没有结构,因而对记录的访问只能通过穷举搜索的方式。 但字符流的无结构文件管理简单,用户可以方便地对其进行操作。 所以,那些对基本信息单位操作不多的文件较适于釆用字符流的无结构方式,如源程序文件目标代码文件等。

1.5.2有结构文件(记录式文件)

由一组相似的记录组成,每条记录由若干个数据项组成。如:数据库表文件。通常由其中一个数据项作为主关键字可以唯一标识一个记录。根据各条记录的长度(占用存储空间)是否相等,又可分为定长记录可变长记录两种。

有结构文件按记录的组织形式可以分为:顺序文件、索引文件、索引顺序文件、直接文件或散列文件(Hash File)。

1.5.2.1顺序文件

顺序文件类似于数据结构中的线性结构(线性表),在物理上可以链式存储顺序存储

串结构:关键字排列无序,即无序线性表。顺序结构:关键字顺序排列,即有序线性表。

链式存储、顺序存储与定长记录、可变长记录与串结构、顺序结构。这三类限制理论上有八种组合。

重点关注

  • 只有顺序存储才有可能支持随机存取
  • 可变长记录不能随机存取,要查找第 m 条记录必须顺序地查找所有的前m-1条记录,从而获得相应记录的长度L,进而计算出第 m 条记录的首址。
  • 串结构即无序线性表只能顺序查找,顺序存储的定长顺序结构即有序顺序表支持折半查找。

注:考试中默认顺序文件是指顺序存储的顺序文件。

1.5.2.2索引文件

索引文件主要是为了应对可变长记录不能随机存取。索引文件有很快的检索速度,因此主要用于对信息处理的及时性要求比较高的场合。

索引表本身是定长记录的顺序文件。因此可以随机存取。可将关键字作为索引号内容,若按关键字顺序排列(顺序结构),还可支持折半查找。

1.5.2.3索引顺序文件

索引顺序文件是索引文件和顺序文件思想的结合。索引顺序文件中,同样会为文件建立一张索引表,但不同的是:并不是每个记录对应一个索引表项,而是一组记录对应一个索引表项

争议

  • 其思想和分块查找(索引顺序查找)是类似的。
  1. 分块查找的索引表必须是组内无序,组间有序,原因可能是分块查找用索引表的相邻关键字来划分出组内关键字范围。而这里索引顺序文件给出的关键字本身可以映射一种范围因而无需块间有序
  2. 索引顺序文件的索引表中同一个组中的关键字可以无序,但组与组之间的关键字必须有序。解释:就算是以姓名首字母来作为关键字检索,其底层硬件也是0/1二进制码,必须是有序的才方便划分组内关键字范围。

王道书上描述的是第二种,王道视频课如上图所述的是第一种。实际上遇见此类问题时不能在这里被坑了即可。

为进一步提高检索速度,可以为顺序文件建立多级索引表。

1.5.2.4直接文件或散列文件(Hash File)

给定记录的键值或通过散列函数转换的键值直接决定记录的物理地址。这种映射结构不同于顺序文件或索引文件,没有顺序的特性。


小结:顺序文件适用顺序查找;顺序存储、顺序结构的定长顺序文件适用折半查找;索引顺序文件适用分块查找;直接文件(散列文件)适用散列(哈希)查找。

1.6文件的物理结构

1.6.1连续分配

连续分配方式要求每个文件在磁盘上占有一组连续的块。

缺点:文件长度不宜动态增加,删除和插入记录麻烦;会产生外部碎片。

优点:作业访问磁盘时需要的寻道数寻道时间最小

1.6.2链接分配

链接分配是一种采用离散分配的方式。它消除了磁盘的外部碎片,对文件的插入、删除和修改操作也十分方便

1.6.2.1隐式链接

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

可以将几个盘块组成簇(cluster),按簇而不按块来分配,这样做增加了内部碎片,减少了磁盘访问时间。

1.6.2.2显式链接

把用于链接文件各物理块的指针显式地存放在一张表中。即文件分配表(FAT,file allocation table)

1.6.3索引分配

索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块(索引表的功能类似页表)。索引表存放的磁盘块称为索引块。文件数据存放的磁盘块称为数据块

注意:显式链接分配中一个磁盘对应一个文件分配表FAT,索引分配中一个文件对应一个索引表。两者都不需要访问磁盘。

1.6.3.1大文件索引块的三种处理方案

原理同分页管理方式中页表太长这一问题。

  • 链接方案:将多个索引块链接起来存放。访问后面的索引块必须先读入前面的索引块。
  • 多层索引:建立多层索引(原理类似于多级页表)。使第一层索引块指向第二层的索引块。还可根据文件大小的要求再建立第三层、第四层索引块。
  • 混合索引:即下面1.6.4介绍的一种文件分配方式,也能解决大文件索引块过大的问题。

1.6.4混合索引分配

是多种索引分配方式的结合。例如,一个文件的顶级索引表中,既包含直接地址索引(直接指向数据块),又包含一级间接索引(指向单层索引表)、还包含两级间接索引(指向两层索引表)

四、文件管理(一)文件系统基础相关推荐

  1. 计算机操作系统学习笔记——文件管理之文件系统基础

    文件系统基础 一.基本概念 1.文件的定义 2.数据项 1)基本数据项 2)组合数据项 3.记录 4.文件 4.1.文件的属性 5.文件类型 5.1.按用途分类 1)系统文件 2)用户文件 3)库文件 ...

  2. 数据恢复基础和进阶教程(四)---NTFS文件系统的特点及几种常用的数据恢复方法

    数据恢复基础和进阶教程(四)-NTFS文件系统的特点及几种常用的数据恢复方法 *在每逢年底必加班的大环境下,这两天单位比较忙,就连中午和晚上基本都不能按时休息,所以没及时更新最新的课程,抱歉.今天工作 ...

  3. linux系统移植篇(四)—— 根文件系统使用介绍

    linux系列目录: linux基础篇(一)--GCC和Makefile编译过程 linux基础篇(二)--静态和动态链接 ARM裸机篇(一)--i.MX6ULL介绍 ARM裸机篇(二)--i.MX6 ...

  4. 2017-2018-2 20165236 实验四《Android开发基础》实验报告

    2017-2018-2 20165236 实验四<Android开发基础>实验报告 一.实验报告封面 课程:Java程序设计       班级:1652班       姓名:郭金涛     ...

  5. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  6. 实验四 数据库SQL语言基础编程

    -- 实验四 数据库SQL语言基础编程 -- 实验目的: --  掌握数据库查询语句的编写方法 --  掌握利用查询语言完成基本查询 --  掌握利用SQL语句完成数据的添加.删除.修改操作 -- 实 ...

  7. [系统安全] 四.OllyDbg动态分析工具基础用法及Crakeme逆向破解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  8. 2018-2019-2-20175225 实验四《Android开发基础》实验报告

    一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:张元瑞 学号:20175225 指导教师:娄嘉鹏 实验日期:2019年5月14日 实验时间:13:45 - 21:00 实验序号:实验 ...

  9. 第四章信息系统安全基础考试要点及真题分布

    第四章信息系统安全基础 4.1计算机设备安全 4.2操作系统安全 4.3数据库系统安全 4.4恶意代码 4.5计算机取证 4.6嵌入式系统安全

  10. 天正多条线段长度lisp下载_四年级数学上册基础题过关检测+12套思维题,下载给孩子测试!【有电子版】...

    张老师 - 4年级(多品小学教育) 我们每天为大家整理学习资料,搭建了小学题库:www.duopin.cn (电子版过万份)本底部有老师微信,朋友圈每天分享考试资料. 本资料已制作电子版 下载码是:r ...

最新文章

  1. 6月27日任务 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志
  2. python导入csv文件-python如何导入csv
  3. 小程序---canvas画图,生成分享图片,画图文字换行
  4. 设计模式 - 创建型模式_ 单例模式 Singleton Pattern
  5. 经典C语言程序100例之五三
  6. 计算机用并行传输还是串行,网线RJ45是并行传输还是串行
  7. JavaScrip有哪些优点
  8. Jelinek-Merer与Absolute discounting 平滑方法
  9. LeetCode 145. 二叉树的后序遍历(后序遍历总结)
  10. linux系统下压缩文件,Linux系统下文件的压缩.打包与解压
  11. 局域网聊天老大——飞鸽传书
  12. Alats2种局部刷新的比较
  13. 祝贺博主新浪微博个人认证与企业微博认证通过,欢迎关注!
  14. 国仁老猫:新人怎么做好一场直播带货;首先需要明白以下几点即可。
  15. 基于k-means的大数据客户细分 - python 数据挖掘
  16. idea 重启之后 IntelliJ IDEA 一直在indexing
  17. 综合案例——手写数字图像处理算法比较
  18. Windows10 SVG转PDF
  19. XB8989AF单节锂电池保护IC放电过流18A,充电过流14A,最大持续放电电流9A
  20. VBA-EXCEL统计数据

热门文章

  1. 2014-12-16 小周的歌
  2. 【工具】阿里云网盘内测申请,更新网盘(云存储)功能需求,免费网盘需求,手机数据备份...
  3. oracle dg如何取消,Oracle DG Switchover 切换
  4. C++ assign
  5. 一文看懂25个神经网络模型
  6. 喜报 | 360安全云盘入选《中国云盘行业专题分析2021》优秀案例
  7. 未雨绸缪:理解软件配置管理(第2版)
  8. C++学生选修课程系统设计
  9. 浅析领导力和执行力在企业管理中的运用
  10. 计算机专业教学进度一览表