首页 > 技术文章 > 操作系统第十章文件系统

mots 2021-02-03 22:59 原文

文件概念

文件是记录在外存上得相关信息的具有名称的集合。其具有连续的逻辑地址空间

文件都是好几个块组成的所有的基本io功能都能以块为单位来进行

文件可以表示程序和数据

数据文件可以包括,数字、字符、字符串或二进制。文件可以是自由形式,如文本文件,也可以具有严格的格式

  1. 文本文件:按行或者按页组织的文本文件
  2. 源文件:函数序列 每个函数包括声明和可执行语句
  3. 可执行文件:一系列代码段,以供加载程序调入内存

文件属性

  • 名称:给人看的
  • 标识符:这种唯一标记(通常为数字)标识文件系统的文件,文件的非人类可读名称
  • 类型:文件格式
  • 位置:指向设备与设备上文件位置的指针
  • 尺寸:文件的当前大小,以及可能允许的最大大小
  • 保护:确定谁能读取,谁能写入,谁能执行

所有的文件信息保存在目录结构中,该目录结构也保存在外存中:目录条文由文件的名称和他唯一的标识符组成,根据标识符可以定位到其他的属性

文件操作

每个进程都有一个他打开文件的表:单个进程表的每个条目相应的指向整个系统的打开文件表。

操作系统用一个打开文件表(open-file table)以用于维护所有打开文件的信息。包含的内容如下

  • 文件指针:系统跟踪上次读写位置作为当前文件位置指针,这种指针对打开文件的某个进程来说是唯一的;
  • 文件打开计数器:文件关闭时,操作系统必须重用其打开文件表条目,否则表内空间不够用。因为多个进程可能打开同一个文件,所以系统在删除打开文件条 目之前,必须等待最后一个进程关闭文件,该计数器跟踪打开和关闭的数量,当该计数为 0 时,系统关闭文件,删除该条目;
  • 文件磁盘位置:绝大多数文件操作都要求系统修改文件数据,该信息保存在内存中,以免每个操作都从磁盘中读取;
  • 访问权限:每个进程打开文件都需要有一个访问模式(创建、只读、读写、添加等),该信息保存在进程的打开文件表中,以便操作系统能允许或拒绝之后的 I/O 请求;

我们打开了一个文件后,操作系统就会为每个进程维护一个打开文件表,文件表里的每一项代表文件描述符,所以说文件描述符是打开文件的标识。

文件类型

操作系统使用扩展名来代表文件类型

文件的访问方法

顺序访问

文件信息按照顺序一个记录一个记录的加以处理,比如编译器

直接访问

用直接访问的方法,文件可以作为块或者记录的标号序列,因此可以先读块14再读块53最后写块7

对于大量信息的立即访问,用直接的方式来访问文件及其合适

对于直接访问的方法,可以用position_file(n)来定位目标块号n,然后read_next();就可以实现对n号块的读取了

用户提供给操作系统的块号通常为相对块号(相对于文件开头的索引)比如第一相对块对应的磁盘地址可能为14703

推荐阅读