文件系统基础

news/2024/10/19 20:46:16

初识文件系统

img

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

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

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

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

文件的属性

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

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

文件的逻辑结构

img

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

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

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

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

顺序文件

img

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

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

索引文件

img

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

索引顺序文件

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

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

img

img

直接文件和散列文件

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

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/73569.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

网站图修改后怎么替换

网站图片修改并替换的过程可以分为几个步骤,具体如下:备份原图:在替换之前,确保备份原有的图片文件。这一步是为了防止新图片出现问题时,可以快速恢复到原来的状态。修改图片:使用图像编辑软件(如Photoshop、GIMP等)对图片进行修改。 确保修改后的图片格式与原图一致,…

从需求分析、产品设计到部署交付各阶段说明

需求分析、产品设计到部署交付各阶段图解 下面用一张图来表示产品设计到部署交付阶段:研发流程各环节:需求分析 产品设计 UI设计 开发和测试 部署交付团队划分 按职能划分团队产品团队 后端开发团队 UI 设计团队 前端开发团队 运维和测试团队 移动开发团队 按职能来划分团队,…

织梦网站搬家修改配置

备份原网站数据在进行任何操作之前,请确保对原网站的数据和文件进行全面备份,包括数据库和所有文件。导出数据库登录到原服务器的数据库管理工具(如phpMyAdmin)。 选择织梦网站对应的数据库,点击导出,选择“快速”或“自定义”模式,然后下载数据库文件。上传文件到新服务…

数据库修改网站后台登录?

要修改网站后台登录相关的数据库设置,通常涉及到以下几个步骤:确定数据库类型:确定你使用的数据库类型(如 MySQL, PostgreSQL, SQLite 等)。备份数据库:在进行任何修改之前,确保对当前数据库进行备份,以防出现意外情况。访问数据库:使用数据库管理工具(如 phpMyAdmin…

Python算法题常用函数记忆清单

系统设计题&模拟题链接:https://leetcode.cn/problem-list/design/字符串操作 splite 按指定分隔符转成 list str_list= text.split() # 默认按空格分割 (函数写在后面,用 . 来调用) str_list= text.split(",") # 按逗号分割 strip()去除两边的空格trimmed…

USB协议详解第14讲(USB传输-同步传输及事务组成)

1.前言 前面讲过USB一个传输由多个事务组成,一个事务由多个包实体组成。传输又分为控制传输、同步传输、批量传输、中断传输四种,上一节我们讲了控制传输细节及事务组成,今天我们主要讲解同步传输及事务组成。 同步传输用在数据量大、对实时性要求高的场合,例如音频设备、视…

30天自制操作系统(一)启动区

一、启动区ORG 0x7C00JMP entryDB 0x90DB "HELLOIPL"DW 512DB 1DW 1DB 2DW 224DW 2880DB 0xf0DW 9DW 18DW 2DD 0DD 2880DB 0,0,0x29DD 0xffffffffDB "HELLO-OS "DB "FAT12 "RESB 18entry:MOV AX, 0MOV SS, AXMOV SP,…

USB协议详解第13讲(USB传输-控制传输及事务组成)

1.前言 前面讲过USB一个传输由多个事务组成,一个事务由多个包实体组成。传输又分为控制传输、同步传输、批量传输、中断传输四种,今天我们主要讲解控制传输三个阶段及事务组成。 控制传输是一种特殊的传输方式,且传输过程相对复杂一些,但十分重要。当USB设备初次连接主机时…