【操作系统概念】第10章:文件系统

0. 前言

对于大多数用户,文件系统时操作系统中最明显的部分。它提供机制,以便对计算机操作系统与所有用户的数据与程序进行在线存储和访问。文件系统由两个不同的部分组成:文件集合,每个文件存储相关数据;目录结构,用于组织系统内的所有文件并提供文本信息。文件系统位于设备上,前一章描述过,接下来将深入讨论。在本章,将研究文件和主要目录结构的各个方面;并讨论在多个进程、用户和计算机之间共享文件夹的语义;最后,讨论各种文件保护方法(当有多个用户访问文件,并且需要控制谁可以访问文件以及如何访问文件时,这是必要的)

本章目标:

  1. 解释文件系统功能
  2. 描述文件系统接口
  3. 讨论文件系统的设计权衡,包括访问方法、文件共享、文件加锁及目录结构等
  4. 探讨文件系统保护

在这里插入图片描述
文件系统和两个不同部分组成:一组文件和目录结构

10.1 文件概念

文件是记录在外存上得相关信息的具有名称的集合。其具有连续的逻辑地址空间.通常,文件表示数据和程序。

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

文件必须具有可以长期信息存储的性质、必须能够保存大容量数据、在进程终止后信息能够保留下来、能够多进程并发访问文件中的信息。

10.1.1 文件属性

名称:按人们易读的方式保存的信息
标识符:用户不可读,用于在文件系统内进行该文件的标识
类型:用于操作系统辨认并执行
位置:文件位于硬盘上的位置的指针
大小:大小
保护:控制谁可以读、写、执行
时间、日期和用户标识:创建,上次修改,上次访问时间等信息,用于保护,安全,使用跟踪。

文件的属性信息保存在硬盘上的目录结构中.而目录结构也保存在外存上。

10.1.2 文件的操作(File Operations)

创建:包含到文件系统中找到空间和在目录中为文件创建一个条目
:需要执行系统调用。另外需要搜索目录查找文件位置和为该文件维护一个写位置的指针并在发生写操作时不断更新指针位置
:需要执行系统调用。过程同写,需要搜索过程和维护读指针的位置
重定位:设置文件位置指针为给定值。该操作不需要真正的IO操作,也叫做寻址(seek)
删除:搜索,释放相关空间,并删除相应条目。
截短文件(truncate):将文件长度设置为0KB,并释放相关空间,但不改变其他属性(不删除条目)。如截短一个命名为a.txt的文本文件后,它的大小会变为0kb,但文件名和其他属性可能没有变化。
上述的操作都涉及到为给定的文件搜索其在目录中的相关位置,为了避免不断搜索,在首次使用文件时,和使用完毕文件时,还需要执行两个操作:
打开(open):为系统调用。将执行搜索,并将相关文件的所有内容都移动到内存中,需要操作时,通过该表的索引指定文件,并直接在内存中进行操作,从而避免了重新搜索和IO操作。
关闭(close):为系统调用。将文件的索引从信息表中删除,并将相关信息从内存写到外存。
操作系统维护包含所有打开文件的信息表(open-file table),当需要文件操作时,通过该表的索引指定文件

对于打开的文件,能够得到如下的信息

  • 文件指针:读和写操作的指针
  • 文件打开计数器:一个文件可以被多个进程打开,文件打开计数器记录该操作,当计数器为0时,可以删除该文件条目。
  • 文件磁盘位置:定位文件在磁盘的位置
  • 访问权限:每个进程用一个访问模式访问文件。
    系统调用create和delete的操作的是关闭文件而不是打开的文件

10.1.5 内部文件结构

由于磁盘文件总是按块来分配的,所以文件的最后一块的部分空间通常会被浪费。按块分配所浪费的字节称为内部碎片,块越大,内部碎片也越大。

10.2 访问方法

10.2.1 顺序访问

顺序访问就是打开文件后,一个字节一个字节的读,一个20Kb的文件,必须先读完前10Kb(即使不做任何操作),才能访问到第11Kb。

顺序访问是通过一个指针操作的,指针可以按顺序移动(有的系统允许向前或者向后跳过n个记录),也可以重新设置到开始位置(reset)

read next
write next
reset
noread after last write
    (rewrite)

在这里插入图片描述

10.2.2 直接访问

直接访问也叫相对访问,其原理是基于磁盘的特性的,磁盘能够随时访问其任意位置。

支持直接访问的文件中,文件由固定长度的逻辑记录组成,通过这种逻辑记录(如每一个块的编号,记录等)能够做到访问文件的任意位置。

直接访问可以立即访问大量信息,所以极为有用

read n(块,直接读写)
write n
position to n
    read next
    write next
rewrite

10.3 目录结构

为了管理数据,需要合理的组织方式

为简单起见,可以将存储文件系统的一大块(手动)分配的空间称为卷,一个卷可以存放多个操作系统。

每个卷包含了系统上文件的信息,保存在设备目录或卷表中。 设备目录记录了卷上所有文件的信息
在这里插入图片描述

10.3.2 目录概述

10.3.3 单层目录结构

在这里插入图片描述
在一个目录下存在:

命名问题:文件位于同一个目录下,他们必须具有唯一名称。
分组问题

10.3.4 双层目录结构

对于双层结构目录的结构,每个用户都有自己的用户文件目录(user file directory,UFD)

因此在每个UFD中所有的文件名称唯一即可,不同的用户可以有相同拥有文件名的问题。
在这里插入图片描述
虽然双层结构目录解决了名称冲突问题,但是它仍有缺点。这种解耦股有效地对用户加以隔离。这种隔离在用户需要完全独立时是有点,但是在用户需要在某个任务上进行合作和访问其他文件时却是一个缺点。

为了访问指定的文件唯一,用户必须知道要访问文件的路径名(path name)。也没有解决分组问题

10.3.5 树状目录结构

树是最常用的目录结构。树有根目录,并且系统内的每一个文件都有唯一路径名。

当前目录:通常情况下,一个进程都有一个当前目录,包含了进程当前感兴趣的绝大多数文件。子进程的当前目录通常是创建子进程的父进程的当前目录。 用户可以使用系统调用重新定义当前目录

路径名:路径名有绝对路径和相对路径两种形式,绝对路径从根路径开始,相对路径从当前目录开始

采用树状目录结构的一个问题是:如何处理删除目录。如果目录为空,那么可以简单的删除条目,如果目录不为空,可以有两个选择:

  • 强制要求如果目录不为空就无法删除目录。如MS-DOS系统
  • 递归删除目录下的所有子目录和文件。如linux下的rm命令
    在这里插入图片描述
    上图表示的是树状目录。树状结构禁止共享文件和目录,因此允许共享文件和目录后,树就变成了图。

10.3.6 无环图目录

无环图是树状目录结构的一个扩展,允许目录含有共享子目录和文件
在这里插入图片描述

  • 27
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵远疴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值