【操作系统】文件的结构和组织

简介: 【操作系统】文件的结构和组织

前言


文件的结构是指文件的组织形式。从用户角度看到的文件组织形式成为文件的逻辑结构,文件系统的用户只要知道所需文件的文件名就可以存取文件中的信息,而无须知道这些文件究竟存放在什么地方。从实现的角度看,文件在文件存储器上的存取方式称为文件的物理结构。


正文


1. 文件的逻辑结构


  • 一是有结构的记录式文件,它是由一个以上的记录构成的文件,故又称为记录式文件;


  • 二是无结构的流式文件,它是由一串顺序字符构成的文件。


2. 有结构的记录式文件



  1. 定长记录。指文件中各记录的长度相同。所有记录中的各个数据项都被处在记录中灰姑娘相同的位置,具有相同的顺序及相同的长度,文件的长度用记录数目表示。定长记录的特点是处理方便,开销小,它是目前较常用的一种记录格式,被广泛用于数据处理中。


  1. 变长记录。指文件中各记录的长度不相同。这是因为:一个记录中所包含的数据项数目可能不同,如数的著作者、论文中的关键词;数据项本身的长度不定,如病历记录中的病因、病史,科技情况记录中的摘要等。但是,不论是哪一种结构,在处理前每个记录的长度是可知的。


3. 无结构的流式文件


文件体为字节流,不划分记录。无结构的流式文件通常采用顺序访问方式,并且每次读写访问可以指定任意数据长度,其长度以字节为单位。对于流式文件访问,是利用读/写指针指出下一个要访问的字符。可以把流式文件看作是流式文件,即使是有结构的文件,也被视为流式文件,系统不对文件进行格式处理。


4. 文件的物理结构


文件的物理结构是指文件的内部组织形式,即**文件在物理存储设备上的存放方法。由于文件的物理结构决定了文件在存储设备上的存放位置,所以文件的逻辑块号到物理块号的转换也是由文件的物理结构决定的。


  1. 连续结构。连续结构也称为顺序结构,它将逻辑上连续的文件信息(如记录)依次存放在连续编号的物理块上。只要知道文件的起始物理块号和文件的长度,就可以很方便地进行文件的存取。


  1. 链接结构。链接结构也称为串联结构,它是将逻辑上连续的文件信息(如记录)存放在不连续的物理块上,每个物理块设有一个指针指向下一个物理块。因此,只要知道文件的第一个物理块号,就可以按链接指针查找整个文件。


  1. 索引结构。在采用索引结构时,将逻辑上连续的文件细细(如记录)存放不币连续的物理块中,系统为每个文件建立一张索引表。索引表记录了文件信息所在的逻辑块号对应的物理块号,并将索引表的起始地址放在与文件对应的文件目录项中。


  1. 多个物理块的索引表。索引表是在文件创建时由系统自动建立的,并与文件一起存放在同一个文件卷上。根据一个文件大小的不同,其索引表占用物理块的个数不等,一般占一个或几个物理块的个数不等,一般占一个或几个物理块。多个物理块的索引表可以有两种组织方式:链接文件和多重索引方式。


5. UNIX 文件系统的索引结构


在 UNIX 文件系统中采用的是三级索引结构,在文件系统中 inode 是基本的构件,它表示文件系统树型结构的结点。UNIX 文件索引表项分 4 种寻址方式:直接寻址、一级间接寻址、二级间接寻址和三级间接寻址。

目录
相关文章
|
2月前
|
Python
文件元数据获取方法对比:`os.path` 与 `os.stat`
本文对比了Python中两种获取文件元数据的方法:`os.path`和`os.stat`。通过示例代码展示了如何获取文件大小和修改时间,并从性能、功能性和代码可读性三方面进行了详细对比。最终给出了根据具体需求选择合适方法的最佳实践建议。
37 2
|
3月前
|
存储 Java iOS开发
MacOS环境-手写操作系统-43-dir命令的实现 和 文件写入
MacOS环境-手写操作系统-43-dir命令的实现 和 文件写入
52 0
|
7月前
|
缓存 Linux Windows
初识Linux操作系统(根目录下的重要文件)(命令提示符的含义)
Linux系统基于"一切皆文件"的理念,重要文件分布在如/root(root用户目录)、/home(普通用户目录)、/etc(应用配置)、/dev(设备文件)、/boot(内核及启动文件)、/proc(动态系统信息)、/lib64(库文件)、/opt(软件存放)、/tmp(临时文件)。"[root@localhost ~]#"代表管理员在root目录,"$"代表普通用户。创建新用户用`useradd`命令。调节终端字体大小:Ctrl+Shift++增大,Ctrl+减号缩小。绝对路径从根目录开始,相对路径从当前目录开始。
|
7月前
|
Unix 关系型数据库 API
Python OS 文件/目录方法
Python OS 文件/目录方法
|
8月前
|
调度 索引
【操作系统】进程的基本概念&进程的状态与转换&进程的组织方式
【操作系统】进程的基本概念&进程的状态与转换&进程的组织方式
243 2
|
7月前
|
Java 开发工具 Android开发
详细解读Android开发DNK开发将.c文件打包成os
详细解读Android开发DNK开发将.c文件打包成os
37 0
|
8月前
|
存储 缓存 安全
操作系统(14)----文件系统的结构
操作系统(14)----文件系统的结构
156 1
|
7月前
|
消息中间件 Java Kafka
实时计算 Flink版操作报错合集之RocksDB在尝试打开更多文件时达到了操作系统允许的最大打开文件数限制,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
143 0
|
8月前
|
Ubuntu Linux iOS开发
LabVIEW在不同操作系统上使VI、可执行文件或安装程序
LabVIEW在不同操作系统上使VI、可执行文件或安装程序
384 3
|
8月前
|
Python
在Python中,利用`os模块`的`path.exists()`函数可判断文件是否存
【5月更文挑战第12天】在Python中,利用`os模块`的`path.exists()`函数可判断文件是否存在,该函数对路径进行检查,存在则返回True,不存在则返回False。示例代码展示了如何检查'example.txt'文件是否存在并相应打印消息。此外,`os.path.isfile()`用于确认路径是否为文件,仅当是文件时返回True,否则返回False,同样配以示例说明其用法。
307 2