计算机操作系统详细学习笔记(五):文件管理

文章目录

    • 五、设备管理 —— 文件管理
      • 5.1 文件的概念
        • 5.1.1 文件概述
        • 5.1.2 文件分类
        • 5.1.3 文件优点
      • 5.2 文件系统及其功能
        • 5.2.1 文件系统的概念
        • 5.2.2 文件系统的功能
        • 5.2.3 文件系统的组成
      • 5.3 文件的存储
        • 5.3.1 卷和块
        • 5.3.2 顺序存取存储设备
        • 5.3.3 直接存取存储设备
      • 5.4 文件的逻辑结构
        • 5.4.1 逻辑文件概念
        • 5.4.2 流式文件
        • 5.4.3 记录式文件
      • 5.5 文件的物理结构
        • 5.5.1 物理结构概念
        • 5.5.2 顺序文件
        • 5.5.3 连接文件
        • 5.5.4 直接文件
        • 5.5.5 索引文件
      • 5.6 文件的目录结构
        • 5.6.1 文件目录
        • 5.6.2 一级目录结构
        • 5.6.3 二级目录结构
        • 5.6.4 树形目录结构
      • 5.7 文件目录的管理
        • 5.7.1 文件查找
        • 5.7.2 活动文件表
      • 5.8 文件安全
        • 5.8.1 文件安全概念
        • 5.8.2 文件共享
        • 5.8.3 文件保护
          • 5.8.3.1 文件保护概念
          • 5.8.3.2 文件副本
          • 5.8.3.3 文件的存取控制矩阵 / 表
          • 5.8.3.4 文件属性(广泛采用)
        • 5.8.4 文件保密
      • 5.9 文件的存取方法
        • 5.9.1 顺序存取
        • 5.9.2 直接存取
        • 5.9.3 索引存取
      • 5.10 文件的使用
        • 5.10.1 文件使用方法
        • 5.10.2 建立文件
        • 5.10.3 撤销文件
        • 5.10.4 关闭文件
        • 5.10.5 读/写文件
        • 5.10.6 定位文件
      • 5.11 辅存空间管理
        • 5.11.1 辅存空间分配方式
        • 5.11.2 空闲块的管理
      • 5.12 文件系统的实现层次

五、设备管理 —— 文件管理

文件和进程是 OS 引入的两个重要概念。

5.1 文件的概念

计算机操作系统详细学习笔记(五):文件管理_第1张图片

5.1.1 文件概述

概念

  • 文件是具有符号名的,在逻辑上具有完整意义的一组相关信息项的序列
  • 文件(document)与计算机文件(file)具有一定区别
  • 文件名是由字母、数字和其他符号组成的一个字符串,其格式和长度因系统而异

文件命名

文件命名一般包括文件名和扩展名。

  • 前者用于识别文件,后者用于标识文件特性,两者之间用圆点隔开

每个 OS 都有约定的扩展名。

5.1.2 文件分类

按用途分

系统文件、库文件、用户文件

按保护级别分

只读文件、读写文件、不保护文件

按信息时限分

临时文件、永久文件、档案文件

按设备类型分

磁盘文件、磁带文件、光盘文件、软盘文件

5.1.3 文件优点

一、用户使用方便

使用者无需记住信息存放在辅存的物理位置,也无需考虑如何将信息存放到存储介质上,只要知道文件名,给出有关 OS 要求便可存取信息,实现了 “按名存取”

二、文件安全可靠

由于用户通过文件系统才能实现对文件的访问,而文件系统能提供各种安全、保密和保护措施,故而防止对文件信息的有意或无意的破坏或窃用。

三、文件可备份

可组织转储或备份,在文件使用过程中出现硬件故障时,文件系统可组织重置,提高可靠性。

四、文件可共享

文件系统还能提供文件的共享功能,如不同的用户可以使用同名或异名的同一文件,提高了文件和文件空间的利用率。

因此,把数据组织成文件形式加以管理和控制是计算机数据管理的重大进展。

5.2 文件系统及其功能

计算机操作系统详细学习笔记(五):文件管理_第2张图片

5.2.1 文件系统的概念

文件系统是 OS 中负责存取和管理信息的模块,它用统一的方式管理用户和系统信息的存储、检索、更新、共享和保护,并为永辉提供一整套方便有效的文件使用和操作方法。

文件系统中的文件

  • 文件这一术语不但反映了用户概念中的逻辑结构,而且和存放它的辅助存储器(文件存储器)的存储结构紧密相关
  • 因此一个文件必须从逻辑文件和物理文件两个侧面来观察它

5.2.2 文件系统的功能

面向用户功能

  1. 文件的按名存取
  2. 文件的共享和保护
  3. 文件的操作和使用

OS 需要考虑的内容 —— 实现文件系统

  1. 文件目录的建立和维护
  2. 存储空间的分配和回收
  3. 数据的保密和保护
  4. 监督用户存取和修改文件的权限
  5. 实现在不同存储介质上信息的表示方式、编址方法、存储次序,以及信息检索等问题

5.2.3 文件系统的组成

5.3 文件的存储

计算机操作系统详细学习笔记(五):文件管理_第3张图片

5.3.1 卷和块

常见的文件存储介质有磁带、光盘和磁盘。

是存储介质的物理单位,对应于一盘磁带、一块软盘、一个光盘片、一个硬盘分区。

是存储介质上连续信息所组成的一个区域,也叫做物理记录。

块在磁盘上被称之为扇区,而在磁带和光盘上则被称之为一个块。

块是主存储器和辅助存储器进行信息交换的物理单位,每次总是交换一块或整数块信息。

块大小

  • 决定块的大小要考虑用户使用方式、数据传输效率和存储设备类型等多种因素。
  • 不同类型的存储介质,块的长短常常各不相同;对同一类型的存储介质,块的大小通常来说都相同,但也可以不同,取决于具体情况。
  • 外围设备由于启停机械动作或识别不同块的要求,两个相邻块之间必须留有间隙。
    • 间隙是块之间不记录用户代码信息的区域。

5.3.2 顺序存取存储设备

顺序存取设备是严格依赖信息的物理位置次序进行定位和读写的存储设备。常见的顺序存取设备有磁带、光盘。

磁带

磁带机是最常用的一种顺序存取存储设备,它具有存储容量大、稳定可靠、卷可装卸和便于保存等优点,广泛用作存档。

5.3.3 直接存取存储设备

磁盘是一种典型的直接存取存储设备,又叫随机存取存储设备。

磁盘

磁盘拥有移臂和旋转两维结构,存取速度高。它的每个物理记录都有确定的位置和唯一的地址,但其存取物理块所需时间随机,而且相差不大,几乎不依赖此信息的位置。

5.4 文件的逻辑结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qys4iEYj-1597627506857)(media/15775850078340.jpg)]

5.4.1 逻辑文件概念

逻辑文件概念

逻辑文件,又称为文件的逻辑结构。

  • 独立于物理环境的,用户概念中的抽象信息组织方式
  • 用户能观察到的,并加以处理的数据集合

两种文件逻辑结构

  • 流式文件
  • 记录式文件

5.4.2 流式文件

流式文件指文件内的数据不再组成记录,只是由一串依次的字节组成的信息流序列。

这种文件常常按长度来读取所需信息,也可以用插入的特殊字符作为分界。

注意: 流式文件不具有多维信息结构,只是单纯的连续字符串存取。

5.4.3 记录式文件

记录式文件是一种有结构的文件,它是若干逻辑记录信息所组成的记录流文件。

逻辑记录是文件中按信息在逻辑上的独立含义所划分的信息单位。

例如,每个职工的工资信息是一个逻辑记录;整个单位职工的工资信息便组成了该单位工资信息的记录式文件。

记录式文件 vs 数据库

数据库管理系统也支持逻辑记录,但数据库与记录式文件最大的区别在于,数据库可以通过一些表与表的数据冗余构成表间联系,并基于这些联系进行数据查询,而文件系统不行。

5.5 文件的物理结构

计算机操作系统详细学习笔记(五):文件管理_第4张图片

5.5.1 物理结构概念

文件的物理结构和组织是指文件在物理存储空间中的存放方法和组织关系,又称为物理文件。

文件的存储结构涉及块的划分、记录的排列、索引的组织、信息的搜索等问题。

文件物理结构的优劣直接影响文件系统的性能。

5.5.2 顺序文件

物理结构

类似于一个只能从头开始访问的数组。

将一个文件中逻辑上连续的信息存放到存储介质的依次相邻的块中,构成顺序结构,这类文件叫顺序文件,也称为连续文件。

顺序文件通常存储在同一个柱面上,减少移臂开销。

磁带文件、光盘文件是顺序文件的典例。

优点

顺序存取记录时速度较快,常用于批处理文件、系统文件。

采用磁带存放顺序文件时,总可以保持快速存取的优点。

缺点

建立文件前需要能预先确定文件长度,以便分配存储空间,修改、插入和增加文件均具有困难。

5.5.3 连接文件

物理结构

连接文件是对于顺序文件存储空间连续的一种修改,采用链表方式使得存储空间不连续,但访问顺序依然连续。

连接文件,又称串联文件,使用连接字来表示文件中各个物理块之间的先后次序。

第一块文件信息的物理地址由文件目录给出,而每一块的连接字指出了文件的下一个物理块位置。连接字内容为 0 时,表示文件至本块结束。

输入井、输出井都用此类文件。

计算机操作系统详细学习笔记(五):文件管理_第5张图片

优点

  1. 易于对文件记录做增、删、改,易于动态增长记录
  2. 不必预先确知文件长度
  3. 存储空间利用率高

缺点

  1. 存放指针需额外的存储空间(但浪费空间少)
  2. 连接文件仅适用于顺序存取。找第100个文件必须经过前99个文件,对于顺序存取文件可以接受,但对于随机存取文件则不可接受。

5.5.4 直接文件

采用了哈希方法进行文件映射,主要难点在于哈希冲突。

直接文件,又称散列文件,通过计算记录的关键字建立与其物理存储地址之间的对应关系。

哈希冲突

计算寻址结构可能出现 “冲突”,即不同关键字映射相同地址,常见解决方法有拉链法、循环探查法、二次散列法、溢出区法。

5.5.5 索引文件

物理结构

索引文件为每个文件建立了一张索引表,其中,每个表目包含一个记录的键(逻辑记录号)及其存储地址。

索引表的地址可由文件目录指出,查阅索引表先找到相应记录键,然后获得数据存储地址。

访问方式

索引文件在文件存储器上分为两个区: 索引区、数据区。

  1. 查找索引表
  2. 获得记录物理地址

上述过程需两次访问辅存,若文件索引已预先调入主存,则仅需一次内外存信息交换。

优点

索引结构可以被认为是连接结构的一种扩展,除了具备连接文件的优点外,还克服了顺序存取的缺点,具有直接读写任何一个记录的能力,便于文件的增、删、改。

缺点

增加了索引表的时空开销。

多级索引结构

5.6 文件的目录结构

计算机操作系统详细学习笔记(五):文件管理_第6张图片

5.6.1 文件目录

文件目录概念

  • 文件目录是实现文件的 “按名存取” 的关键数据结构
  • 文件系统的基本功能之一就是负责文件目录的建立、维护和检索,要求编排的目录便于查找、防止冲突
  • 文件目录需要永久保存,因此也组织成文件存放在磁盘上,称目录文件

文件目录与索引文件的区别

文件目录是面向用户设计的数据结构,目的是为了让用户可以 “按名存取“ 文件。

索引文件是 OS 用来寻找文件物理位置的数据结构,用户不可见。

5.6.2 一级目录结构

在 OS 中构造一张线性表,与每个文件的相关属性占用一个目录项,构成了一级目录结构。

但由于用户与文件众多,不但容易重名,而且用户难以查找。

5.6.3 二级目录结构

目录结构

第一级是主文件目录,管理所有用户文件目录。目录项登记了系统接受的用户的名字,以及该用户文件目录的地址。

第二级为用户的文件目录,为该用户的每个文件保存一个登记栏,其内容与一级目录的目录项相同。

每一用户只允许查看自己的文件目录。

优点

  1. 支持检查访问文件者的存取权限,实现了文件的保密和保护。因为任何文件的存取都必须通过主文件目录。
  2. 允许不同用户出现同名文件。

5.6.4 树形目录结构

目录结构

每一级目录可以登记下一级目录,也可以登记文件,从而形成了层次文件目录结构。

层次目录结构通常采用树形目录结构,树根是根目录,树叶是文件。

优点

  1. 较好地反映现实世界中具有层次关系的数据集合和较确切地反映系统内部文件的组织结构
  2. 不位于同一末端子目录的不同文件可以重名
  3. 易于规定不同层次或子树中文件的不同存取权限,便于文件的保护、保密和共享

文件定位

在树形目录结构中,一个文件的全名包括从根目录开始到文件为止,通路上遇到的所有子目录路径,又称为路径名。

各子目录名之间用斜线隔开。(UNIX 用正斜线 “/”,Windows 用反斜线 “\”)

一个硬盘分区可以组织成一颗子树。

  • 每棵子树可以对应于一个逻辑盘符(Win)
  • 也可以把多棵子树合并成一颗大树(UNIX)

举例

5.7 文件目录的管理

计算机操作系统详细学习笔记(五):文件管理_第7张图片

5.7.1 文件查找

文件查找分为两步,(1)定位层次,(2)定位具体目录项

文件层次定位

根据用户提供的文件路径名来搜索各级文件目录,找到文件。

  1. 从根目录查起(绝对路径名)
  2. 从当前目录查起(相对路径名)
    • . 表示当前目录
    • 表示父目录
  3. 变更当前工作目录(现代 OS 设置有改变工作命令)

目录项查找

  1. 顺序查找法
  2. 二分查找法
    • 将按键进行顺序编排,即可进行二分
  3. 哈希法
    • 将每个文件名经过变换函数变换成唯一的目录表表项

5.7.2 活动文件表

树型目录结构存在问题

当一个文件经过许多目录节点时,系统需要多次访问文件存储器,文件查找非常耗时。

解决方法

采用 Cache 的方法,将部分常用或正在用的文件目录复制进主存,实现部分缓存的目的。

活动文件表

  • 系统为每个用户进程建立一张活动文件表,当用户使用一个文件之前,先通过 “打开” 操作,把该文件有关目录信息复制到指定主存区域,有关信息填入活动文件表,以建立用户进程和该文件索引的联系。
  • 当不再使用该文件时,使用 “关闭”,切断用户进程和这个文件的联系,同时,若该目录已被修改过,则应更新辅存中对应的文件目录。

5.8 文件安全

计算机操作系统详细学习笔记(五):文件管理_第8张图片

5.8.1 文件安全概念

文件是计算机系统的重要资源,因此要求文件系统具有保障文件安全的手段,提供文件保密的措施,有效地实现文件共享。

文件安全三大内容

  • 文件共享: 不同用户共同使用某些文件
  • 文件保护: 防止文件被破坏
  • 文件保密: 防止文件及其内容被其他用户窃取

5.8.2 文件共享

文件共享概念

文件共享是计算机用户完成共同任务所必需的。

文件共享有许多好处:

  1. 减少用户大量重复性劳动
  2. 免除系统复制文件的工作
  3. 节省文件占用的存储空间
  4. 减少程序设计输入输出文件的次数

文件共享的并发控制

OS 应该提供手段实现对共享文件的同步控制。

  • 同时读: OS 对文件进行公用控制
  • 一读一写: OS 提供同步控制机制,保证文件数据的完整性
  • 同时写: 不被允许

5.8.3 文件保护

5.8.3.1 文件保护概念

文件保护是指防止文件被破坏。OS 必须提供文件保护机制,有效实现文件的完整性。

常用的文件保护方法

  1. 文件副本
  2. 文件存取矩阵与文件存取表(稀疏矩阵)
  3. 文件属性
5.8.3.2 文件副本

文件副本即存储多个文件副本,保证即使硬软件故障,信息仍能完整保存。

动态多副本技术

在多个介质上维持同一内容的文件,并且同时更新内容。

这种方法需要增加设备费用和系统负载。一般适用于容量较小且较为重要的文件,例如不需要更新的系统文件及专用文件,当文件发生故障时只要切换到备用设备即可。

这种方法是精细活,执行起来非常累。

文件转储(大多数 OS 采用)

文件转储: 定时把文件复制转储到其它介质上,当某介质上出现故障时,复原转储文件。

转储分为两种方式:

  1. 在一定时间间隔或一个单位处理结束时,系统自动复写更新过的文件和数据。
    • 只能针对少量的关键数据
  2. 每天或每周把文件信息全部复写一遍,需要时再通过装入转储文件来恢复系统,诸如 BACKUP、RESTORE 等命令
    • 通常需要系统管理员手动备份
5.8.3.3 文件的存取控制矩阵 / 表

存取控制矩阵

OS 为每个用户设置访问每个文件对象的存取属性,即 (用户-文件-权限) 三元组的关系。

所有三元组就组成了一个二维矩阵,称为存取控制矩阵。

计算机操作系统详细学习笔记(五):文件管理_第9张图片

存取控制表

由于操作系统拥有很多用户和众多文件,因此存取控制矩阵是一个稀疏矩阵,存在大量无效位置。

因此我们将无效位置剔除,仅登记那些对文件拥有存取属性的部分,将二维矩阵优化成一维线性表,即存取控制表。

基于存取控制矩阵/表的文件保护

  • 存取属性: 访问、读、写、执行、创建、删除、授权等
    • 一些非常安全的 OS 甚至设计了 20 多种属性
  • 系统通过查阅矩阵/表来核对用户对文件的存取权限
  • 文件属主使用 GRANT、REVOKE 等命令进行授权,甚至授权授权权
  • 系统管理用户(超级用户)拥有所有文件的属主权限
5.8.3.4 文件属性(广泛采用)

该方法即是将原来的三位结构简化为 (用户-文件) 二维结构,大为简化文件管理。

具体方式

  • 用户分类: 属主、合作者、其他
  • 文件属性: 读、写、执行
  • 每个用户对于每个文件都有三种身份,不同身份对于不同文件属性权限不同
  • 文件属性可以放在文件目录项中,简化管理
  • 用户使用文件时,根据该用户针对该文件的用户类别,以及文件属性,核对用户权限,实现保护

计算机操作系统详细学习笔记(五):文件管理_第10张图片

  • chmod 命令可以改变文件属性
  • chown 命令可以变更文件属主
  • chgrp 命令可以变更用户伙伴

5.8.4 文件保密

文件保密是指文件及其内容不能被未经文件主授权的其他用户窃取。

文件保密常见措施

  1. 隐藏文件目录
    • 将关键文件设置为隐藏文件(保密程度弱)
  2. 设置口令
    • 在文件层面设置 读/写 打开口令
    • 这种方式较第一种有升级,但拦不住那些直接访问磁盘物理数据的恶意用户
  3. 使用密码
    • 对文件内容进行加密,只有拿到密钥才能解密(保密程度强)

5.9 文件的存取方法

文件系统的一个重要目标: 尽可能地提供不同的存取方法

  • 文件存取方法是 OS 为用户程序提供的使用文件的技术和手段
  • 文件存取方法在某种程度上依赖于文件的物理结构

计算机操作系统详细学习笔记(五):文件管理_第11张图片

5.9.1 顺序存取

概念

按记录顺序进行读 / 写操作的存取方法称顺序存取。

  • 读操作根据读指针读出当前记录,同时推进读指针,指向下一次要读出的记录
  • 写操作设置写指针,把一个记录写到文件末端,同时推进写指针
  • 允许对读指针进行前跳或后退 n 个记录的操作

适用范围

顺序存取方式对任何物理结构文件均适用。

5.9.2 直接存取

支持直接文件、索引文件的物理结构能进行直接存取。直接存取针对那些要求快速地以任意次序直接读写某个记录的应用场合。

例如,航空订票系统,把航班号作标识,把特定航班的所有信息存放在物理块中,用户预订某航班时,直接计算出该航班的存取位置。

5.9.3 索引存取

基于索引文件的物理结构,才能实现索引存取。其中信息块的地址都可以通过查找记录键而换算出。

特点

索引文件,支持顺序、直接、索引三种存取方式。

实际的系统中,大都采用多级索引,来加速记录查找过程。

5.10 文件的使用

计算机操作系统详细学习笔记(五):文件管理_第12张图片

5.10.1 文件使用方法

用户通过两类接口与文件系统联系。

  1. 与文件有关的操作命令
    • UNIX 中的 cat、cd、cp、find、mv、rm、mkdir、rmdir
  2. 提供给用户程序使用的文件类系统调用
    • 建立、打开、读/写、定位、关闭、撤销

5.10.2 建立文件

功能: 创建一个文件

所需参数: 文件名、设备类(号)、文件属性、存取控制信息

处理流程

  1. 在相应设备上建立一个文件目录项,并分配第一个物理块
  2. 在活动文件表中申请一个项,登记有关目录信息
  3. 返回一个文件句柄

5.10.3 撤销文件

功能: 删除一个文件

所需参数: 文件名和设备类(号)

处理流程

  1. 若文件没有关闭,关闭文件
  2. 若为共享文件,进行联访处理
  3. 在目录文件中删去相应目录项
  4. 释放文件占用的文件存储空间

5.10.4 关闭文件

功能: 结束一个文件的读写

所需参数: 文件句柄

处理流程

  1. 将活动文件表中该文件的 “当前使用用户数” 减 1
  2. 若此值为 0,则收回此活动文件表
  3. 完成 “推迟写”
  4. 若活动文件表目内容已被改过,应先将表目内容写回文件存储器中相应表目位置,以使文件目录保持最新状态

5.10.5 读/写文件

功能: 读写文件

所需参数: 文件句柄、用户数据区地址、读写的记录或字节个数

处理流程

  1. 按文件句柄从活动文件表中找到该文件的目录项信息
  2. 根据目录项指出的该文件逻辑和物理组织结构,把相关逻辑记录转换成物理块

5.10.6 定位文件

功能: 调整所打开文件的读写指针位置

所需参数: 文件句柄、定位指针

5.11 辅存空间管理

随着用户文件不断建立和撤销,文件存储空间会出现许多 “碎片”。

OS 解决 “碎片” 的办法是整理 “碎片”,在整理过程中,往往对文件重新组织,让其存放在连续存储区中。

计算机操作系统详细学习笔记(五):文件管理_第13张图片

5.11.1 辅存空间分配方式

连续分配

特点: 存放在辅存空间连续存储区中(连续的物理块号)

优点: 顺序访问时速度快,管理较为简单,但为了获得足够大的连续存储区,需定时进行 “碎片” 整理。

非连续分配

特点: 动态分配给若干扇区或簇(几个连续扇区),不要求连续

优点: 辅存空间管理效率高,便于文件动态增长和收缩

5.11.2 空闲块的管理

位示图

方式: 使用若干字节构成一张表,表中每一字位对应一个物理块,字位的次序与块的相对次序一致。字位为 “1” 表示相应块已占用,字位为 “0” 表示该块空闲。

优点: 把位示图全部或大部分保存在主存中,再配合位操作,实现高速物理块分配和去配。

成组链接法

从下图中可以看到,最左边的是空闲盘块号栈,12 为栈顶,50 为栈底。栈底块链接到右边的 100 个空闲块,可以看到最后一个栈底为 0,表示空闲盘块链的结束。

注意: 最左边的空闲盘块栈中的块数始终保持在 [ 1 , 100 ] [1,100] [1,100] 之间。

下图算法中,空闲块数即空闲盘块栈中记录的空闲块数。

复制第 1 个单元对应块到专用块,表示一次性将 [51,150] 都复制进来,并分配 50。

如果归还时空闲块数超过 100,则留下第 101 个,移走前 100 个,并将第 101 个链接到移走的 100 个上。

下面举一个例子,下图为初态。

计算机操作系统详细学习笔记(五):文件管理_第14张图片

分配 299 号盘块。

计算机操作系统详细学习笔记(五):文件管理_第15张图片

分配 300 号盘块。

计算机操作系统详细学习笔记(五):文件管理_第16张图片

分配 301 号盘块。

计算机操作系统详细学习笔记(五):文件管理_第17张图片

下图为回收了 700 号盘块。

计算机操作系统详细学习笔记(五):文件管理_第18张图片

回收了 711 号盘块。

计算机操作系统详细学习笔记(五):文件管理_第19张图片

最后回收了 703、788、701 号盘块。

计算机操作系统详细学习笔记(五):文件管理_第20张图片

5.12 文件系统的实现层次

  1. 检查用户发起的系统调用
  2. 逻辑记录 -> 相对物理地址
  3. 检查用户权限
  4. 相对物理地址 -> 绝对物理地址
  5. 具体物理块 I/O 操作

你可能感兴趣的:(大学课程笔记(重要),#,计算机系统及组成原理,计算机操作系统,文件管理,文件系统,文件的物理结构,文件的目录结构)