首页 > 其他分享 >文件系统基础

文件系统基础

时间:2024-10-19 20:42:55浏览次数:5  
标签:文件 顺序 记录 基础 文件系统 索引 查找 关键字

初识文件系统

img

文件是以硬盘位载体存储在计算机上的信息集合,在系统运行时,计算机以进程为基本单位进行资源的调度与分配而在用户进行的输入、输出中,则以文件为基本单位。这就需要操作系统有一个文件管理系统。

操作系统的文件管理系统需要关心以下内容:

  • 计算机中存放了各种各样的文件,一个文件有哪些属性?
  • 文件内部的数据应该怎样组织起来?
  • 文件之间又应该又应该怎么组织起来?
  • 从下往上看,OS应提供哪些功能,才能方便用户、应用程序使用文件?
  • 从上往下看,文件数据应该怎么存放在外存(磁盘)上?

下面我们来依次探讨这些问题

文件的属性

一个文件应该具有如下属性:

  • 文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件
  • 标识符:一个系统内的各文件标识符唯一,对用户来说毫无可读性,因此标识符只是操作系统用于区分各个文件的一种内部名称。
  • 类型:指明文件的类型,打开不同类型的文件时,操作系统要做不同的处理
  • 位置:文件存放的路径(让用户使用);在外存中的地址(操作系统使用,对用户不可见)
  • 大小:指明文件大小
  • 创建时间、上次修改时间、文件所有者信息
  • 保护信息:对文件进行保护的访问控制信息

文件的逻辑结构

img

按文件是否有结构分类,可以分为无结构文件、有结构文件两种。

  • 无结构文件:文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”。如:Windows 操作系统中的 .txt 文件。由于无结构文件没有结构,所以对记录的访问只能通过穷举搜索的方式,因而这种文件形式对很多应用不合适。

  • 有结构文件:由一组相似的记录组成,又称“记录式文件”每条记录由若干个数据项组成。如:数据库表文件。一般来说,每条记录有一个数据项可作为关键字。根据各条记录的长度(占用的存储空间)是否相等,又可分为定长记录和可变长记录两种。

有结构文件的组织形式可以分为顺序文件、索引文件、索引顺序文件

顺序文件

img

文件中的记录一个接一个地顺序排列,记录可以是定长记录或变长记录。顺序文件中记录的排列有两种结构:①串结构,各记录之间的顺序与关键字无关,通常是按存入的先后时间进行排列,检索时必须从头开始顺序依次查找,比较费时;②顺序结构,所有记录按关键字顺序排列,对于定长记录的顺序文件,检索时可采用折半查找,效率较高。

在对记录进行批量操作,即每次要读或写一大批记录时,顺序文件的效率是所有逻辑文件中最高的。此外,对于顺序存储设备(如磁带),也只有顺序文件才能被存储并能有效地工作。在经常需要查找、修改、增加或删除单个记录的场合,顺序文件的性能较差。

索引文件

img

另外,也可以使用不同的数据项建立多个索引表,如学号和姓名各建立一张索引表

索引顺序文件

索引顺序文件是顺序文件和索引文件的结合。最简单的索引顺序文件只使用了一级索引,先将变长记录顺序文件中的所有记录分为若干组,然后为文件建立一张索引表,并为每组中的第一个记录建立一个索引项,其中包含该记录的关键字和指向该记录的指针。

如图4.5所示,主文件包含姓名和其他数据项,姓名为关键字,记录按姓名的首字母分组,同一个组内的关键字可以无序,但是组与组之间的关键字必须有序。将每组的第一个记录的姓名及其逻辑地址放入索引表,索引表按姓名递增排列。检索时,首先查找索引表,找该记录所在的组,然后在该组中使用顺序查找,就能很快地找到记录。

img

img

直接文件和散列文件

给定记录的键值或通过散列函数转换的键值直接决定记录的物理地址。 散列文件具有很高的存取速度,但是会引起冲突,即不同关键字的散列函数值可能相同。 复习了数据结构的读者读到这里时,会有这样的感觉:有结构文件逻辑上的组织,是为在文件中查找数据服务的(顺序查找、索引查找、索引顺序查找、哈希查找)。

img

标签:文件,顺序,记录,基础,文件系统,索引,查找,关键字
From: https://www.cnblogs.com/AH20/p/18486543

相关文章

  • 【信奥赛·C++基础语法】CSP-J C++ STL 标准模板库 - 算法
    序言标准模板库(STL)的算法部分提供了一系列强大的工具,用于对各种容器中的数据进行操作。这些算法可以大大提高编程效率,减少代码重复,使程序更加简洁、高效和可读。无论是处理简单的数据结构还是复杂的大规模数据,STL算法都能发挥重要作用。一、STL算法的分类排序算法快速......
  • 2024-2025-1 20241319 《计算机基础与程序设计》第四周学习总结
    作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK04这个作业的目标学习门电路,组合电路,逻辑电路,冯诺依曼结构,CPU,内存,IO管理,嵌入式系统,并行结构,物理安全作业正文https://www......
  • Midjourney零基础学习
    Midjourney学习笔记TOP13部分作品特色鲜明的艺术家、公司,以及有代表性的艺术风格。......
  • C++基础
    1、注释单行注释://这是注释多行注释:/*这是注释*/2、变量 数据类型变量名=变量初始值; 3、常量宏常量:通常在文件开头定义#define常量名常量值const修饰的静态变量,表示一个常量,不可修改。const数据类型常量名=常量值#include<iostream>usingna......
  • Lag-Llama:第一个时间序列预测的开源基础模型
    Lag-Llamalagllama是为单变量概率预测而构建的。它使用不依赖于频率的通用方法来标记时间序列数据。这样模型可以很好地推广到不可见的频率。它利用Transformer体系结构和分布头来解析输入令牌,并将它们映射到具有置信区间的未来预测。一、具有滞后特征的标记laglllama的......
  • Python基础——类与对象
      目录  类与对象的理解:构造方法:魔术方法:封装:继承: 单继承: 多继承:复写:类与对象的理解: 在程序中我们将类看作是设计图纸,对象则是根据这个图纸生产的产品。面向对象编程就是使用对象编程,在类中我们定义成员属性和方法。 来看下面这个例子,创建student类,......
  • Java基础(一)
    Java基础(一)1、变量与数据类型1、数据类型/*java是一门强类型语言。变量:指的是在java程序运行过程中,其值可以发生改变的量定义一个变量的语句定义格式:数据类型变量名=初始化值;数据类型:基本数据类型:整数类型:所......
  • Java基础(二)
    第三章Java基础(二)1、while循环双重for循环1、while循环:for循环语句和while循环语句可以等价转换,但还是有些小区别的使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原......
  • 设计一个可复用的 ArkWeb 基础组件架构
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。引言在华为鸿蒙开发环境中,ArkWeb组......
  • 【MySQL基础刷题】总结题型(二)
    最多10题,再多不消化了1.至少有5名直接下属的经理2.销售员3.订单最多的客户4.计算布尔表达式的值5.查询球队积分6.苹果和桔子7.两人之间的通话次数8.确认率9.各赛事的用户注册率1.至少有5名直接下属的经理注意左连接的使用selecte1.namefromEmployeee1leftjoi......