【操作系统】第十章文件系统接口

版权声明:本文为博主原创文章,转载请标明出处 https://blog.csdn.net/C2681595858/article/details/80790327

  • 文件系统由两个不同部分组成:
    • 一组文件:文件用于存储相关数据
    • 目录结构:目录用于组织系统内文件并提供文件相关信息

10.1文件概念

  • 文件是记录在外存上的相关信息的具有名称的集合。
  • 从用户角度而言,文件是逻辑外存的最小分配单元,即除非数据在文件中,否则 不能写到外存。
    文件:一组信息的单元。

1、无结构文件:
字或字节的序列。(字节流式文件)
2、简单记录结构(例如,目录)

  • 行(line),可以按行访问。
  • 每行可以是定长或变长

3、复杂结构(例如,word)

10.1.1文件属性

  • 文件被命名后它就独立于进程、用户甚至创建它的系统。
  • 文件通常包括如下属性:
    • 文件名:具有唯一性,对人们来说是可读的。
    • 标识:文件系统中的唯一性标识,通常为数字,且对于人们是不可读的。
    • 类型:
    • 位置:指向设备和设备上文件位置的指针。
    • 大小:也可包含文件的最大容量。
    • 保护:读写执行等的访问控制信息。
    • 时间,日期,用户身份。
      文件的这些信息保存在记录文件中。(目录)
      通常目录条目包括文件名称及其唯一标识符,而标识符又定位文件其他属性信息。一个文件的这些信息可能需要1kb左右的空间来存储,在许多文件系统中,目录本身可能有数兆字节。

10.1.2文件操作:

按名存取,按照名字读取文件。

  • 创建文件:①在文件系统中为文件找到空间。②在目录中为新文件创建一个条目。
  • 写文件:为了写文件,执行一个系统调用,其指明文件名称和要写的内容。
  • 读文件:为了读文件,执行一个系统调用,其指明文件名称和要读入文件块的内存位置。同一时刻一个进程只对一个文件进行读或写的操作,所以可以使用一个当前文件位置指针
  • 在文件内重定位:搜索目录相应条目,设置当前文件位置指针为给定值。在文件内重定位不需要包含真正IO,该文件操作也称为文件寻址(seek)
  • 删除文件:找到相关目录条目后,释放相应文件空间,删除相应目录条目。
  • 截短文件:用户只删除文件内容,而保留其属性。该操作将文件长度变为0,释放文件空间,而不改变其属性。
    上述6个操作组成所需文件操作的最小集合
    这些基本操作组合起来实现其他操作。

绝大多数文件操作都涉及为给定文件搜索相关目录条目,为了避免这种不断地搜索。许多系统要求在首次打开文件时,需要用一个系统调用open(),操作系统维护一个所有打开文件的信息表。当需要一个文件时只需要通过该表中的索引指定文件而不需要搜索。
在多进程可能同时打开同一文件,通常操作系统采用两级内部表:单个进程的表和整个系统的表。单个进程的表跟踪单个进程打开的所有文件,表内存的是该进程所使用文件信息。
单个表的每一条目相应的指向整个系统的打开文件表。整个系统表包含进程无关信息。一旦一个进程打开一个文件,系统打开文件表就会在表中为打开文件增加一个条目,当其他进程需要同一文件时,只是其进程打开表中增加一个条目,并指向整个系统表的相应条目。而系统打开表会维护一个文件打开计数器,用来记录由多少个进程打开了这个文件,当计数为0时,该文件就可以从系统文件打开表中删除了。

  • 共享锁:类似于读者写者问题中的读者锁,可供多个进程并发获取。
  • 专用锁:类似于写者锁,只允许一个进程获得。

10.1.3文件类型

  • 如果系统能够识别文件类型,那么他就能对文件进行合理的操作,例如,防止一个二进制文件被打印。
  • 实现文件类型的常用技术是在文件名称内包含文件类型。名称可分为两部分:名称和扩展名。
  • 操作系统通过文件扩展名来表示文件类型以及文件可用操作类型。
    常用文件类型:
    这里写图片描述

10.1.4文件结构

所有操作系统必须至少支持一种结构,即可执行文件结构,以便能装入和运行程序。

10.2访问方法

访问方式:
顺序访问:一个记录一个记录的进行,有的系统也允许向前后向后跳过n个。
这里写图片描述
直接访问:可以访问任意位置。且访问相当灵活。
这里写图片描述

10.3目录结构

10.3.1存储结构

目录结构:
将磁盘分成两个分区,一个目录,一个内容。
文件目录是文件属性的一个表。
文件比较重要的两个信息:文件名和文件位置。
这里写图片描述

10.3.2目录概述

对目录的操作:
1、对文件的搜索
2、创建一个文件
3、删除一个文件
4、列出所有文件
5、重命名文件:允许改变文件位置
6、遍历文件系统
7、跟踪文件系统
组织文件,取得如下效果:
1、有效:快速定位一个文件
2、命名:方便用户使用
(1)不同用户可以有相同文件名的文件
(2)相同文件有不同文件名:
动态库或者共享库,按版本分
3、分组:根据文件属性逻辑分组

10.3.3单层结构目录

  • 单层目录:
    所有文件在同一目录中。文件名必须唯一。不同用户不能有相同名称的文件。
  • 评价:
    ①检索没问题
    ②命名要求(1)无法实现(2)可以实现
    ③无法实现
    这里写图片描述

10.3.4双层结构目录

  • 双层目录:
    每个用户下面有自己的用户文件目录UFD
    用户对文件的操作发生在自己UFD下,是局部的,所以在局部文件名具有唯一性。
    如果用户想要访问其他用户的某个文件,那么需要给出文件路径。
    如何处理系统文件?
    建立一个特定的目录,存放系统文件,当用户搜索一个文件,在自己的UFD下搜索不到时,就去那里搜索。
    所以有文件路径概念。
  • 评价:
    ①搜索比单层目录效率高
    ②文件名(1)可以实现
    ③分组:没有能力
    这里写图片描述

10.3.5树结构目录

  • 树状目录结构:每个进程有自己的当前目录,其中包含了大多数该进程感兴趣的文件。如果进程需要访问其他文件,那么需要给出文件路径。可以是相对路径也可以是绝对路径。
  • 树状目录结构可按照不同的主题来组织目录。当进行删除的时候,如果目录有子目录,那么它不允许删除或者直接删除。不允许删除时,首先得一一删掉该目录下所有子目录,然后最后在删除该目录,工作量相当大。允许删除时,危险性比较高。
  • 树状结构允许用户访问其他用户的文件。树状结构的文件路径很长,为了避免用户记忆路径,操作系统一开始会遍历整个文件系统,将可执行文件存放在桌面目录下,需要时可直接执行。
    树结构目录:
    ①搜索效率高
    内存中有当前目录和祖先目录的相关信息。

    相对路径和绝对路径。
    不写路径的时候会操作当前目录。
    这里写图片描述

10.3.6无环图目录

  • 无环图目录允许共享文件。
    共享方法可分为两种:
    比较常用的是前一种

①链接(快捷方式):链接实际上是另一文件或目录的指针。当需要访问一个文件,就可搜索目录,如果目录条目标记为链接,那么就可获得真正文件的名称。
这种方法很灵活但也很复杂,当删除文件的时候,如果直接删了真正的文件,那么就会出现很多悬空指针。unix解决办法是,维护一个计数器,用来记录指向该文件的链接数目,当其计数为0的时候,在将其删除。
②复制:在所有用到的地方放一个文件副本,并维护所有文件一致性。
这里写图片描述

10.3.7通用图目录

这里写图片描述

10.4文件系统安装

10.5文件共享

10.5.1多用户

  • 为了实现共享和保护,多用户系统必须要比单用户系统维护更多的文件和目录属性,现在大多数系统采用了文件(或目录)拥有者和组的概念。组成员享有拥有者权限的一个子集权限。
  • 文件拥有者ID和组成员ID和文件属性一起保存。当用户请求文件操作时,查看该用户属于哪一类,它具有什么权限,然后根据它所具有的权限来访问文件。

10.5.2远程文件系统

  • 远程文件共享方式:
    • 用户通过程序实现在机器(如ftp)之间进行文件的人工传输。可以是匿名访问或者验证访问。
    • 分布式文件系统(DFS)远程目录可从本机上直接访问。
    • 万维网:用浏览器获取对远程文件的访问,几乎总是匿名交换。
  • 分布式信息系统
    • 为了便于管理客户机-服务器服务,分布式信息系统也称为分布式命名系统,用来提供远程计算所需要的信息的同一访问。
    • 域名系统(DNS)为整个Internet提供了主机名称到网络地址的转换
      文件信息的共享和保护。

10.6保护

  • 保护:将用户的权限信息放在文件信息中
    • 网络有自己的文件系统。
    • 网络会将不同系统的文件映射为可共用的文件
    • 分布式系统和网络文件系统
  • acl访问控制表:对每个文件有什么权限:
    - 读、写、更新、创建、列表。

  • 保护文件不受物理损害(可靠性)和非法访问(保护)。

    • 可靠性:文件备份。
  • 文件的拥有者和创建者可以做的事情。
    linux文件权限:
    读、写、执行。
  • 三种用户类型:
    • a) Owner access 7 RWX(111)
    • b) Group access 6 RWX(110)
    • c) Public access 1 RWX(001)
  • Chmod 761 game.
  • 三个数字分别代表三种用户的权限。

文件系统为用户提供方便的接口。
用户可以按照抽象的文件类型来使用。
通过创建文件索引访问。

猜你喜欢

转载自blog.csdn.net/C2681595858/article/details/80790327