文件和进程是 OS 引入的两个重要概念。
概念
文件命名
文件命名一般包括文件名和扩展名。
每个 OS 都有约定的扩展名。
按用途分
系统文件、库文件、用户文件
按保护级别分
只读文件、读写文件、不保护文件
按信息时限分
临时文件、永久文件、档案文件
按设备类型分
磁盘文件、磁带文件、光盘文件、软盘文件
一、用户使用方便
使用者无需记住信息存放在辅存的物理位置,也无需考虑如何将信息存放到存储介质上,只要知道文件名,给出有关 OS 要求便可存取信息,实现了 “按名存取”
二、文件安全可靠
由于用户通过文件系统才能实现对文件的访问,而文件系统能提供各种安全、保密和保护措施,故而防止对文件信息的有意或无意的破坏或窃用。
三、文件可备份
可组织转储或备份,在文件使用过程中出现硬件故障时,文件系统可组织重置,提高可靠性。
四、文件可共享
文件系统还能提供文件的共享功能,如不同的用户可以使用同名或异名的同一文件,提高了文件和文件空间的利用率。
因此,把数据组织成文件形式加以管理和控制是计算机数据管理的重大进展。
文件系统是 OS 中负责存取和管理信息的模块,它用统一的方式管理用户和系统信息的存储、检索、更新、共享和保护,并为永辉提供一整套方便有效的文件使用和操作方法。
文件系统中的文件
面向用户功能
OS 需要考虑的内容 —— 实现文件系统
常见的文件存储介质有磁带、光盘和磁盘。
卷
卷是存储介质的物理单位,对应于一盘磁带、一块软盘、一个光盘片、一个硬盘分区。
块
块是存储介质上连续信息所组成的一个区域,也叫做物理记录。
块在磁盘上被称之为扇区,而在磁带和光盘上则被称之为一个块。
块是主存储器和辅助存储器进行信息交换的物理单位,每次总是交换一块或整数块信息。
块大小
顺序存取设备是严格依赖信息的物理位置次序进行定位和读写的存储设备。常见的顺序存取设备有磁带、光盘。
磁带
磁带机是最常用的一种顺序存取存储设备,它具有存储容量大、稳定可靠、卷可装卸和便于保存等优点,广泛用作存档。
磁盘是一种典型的直接存取存储设备,又叫随机存取存储设备。
磁盘
磁盘拥有移臂和旋转两维结构,存取速度高。它的每个物理记录都有确定的位置和唯一的地址,但其存取物理块所需时间随机,而且相差不大,几乎不依赖此信息的位置。
逻辑文件概念
逻辑文件,又称为文件的逻辑结构。
两种文件逻辑结构
流式文件指文件内的数据不再组成记录,只是由一串依次的字节组成的信息流序列。
这种文件常常按长度来读取所需信息,也可以用插入的特殊字符作为分界。
注意: 流式文件不具有多维信息结构,只是单纯的连续字符串存取。
记录式文件是一种有结构的文件,它是若干逻辑记录信息所组成的记录流文件。
逻辑记录是文件中按信息在逻辑上的独立含义所划分的信息单位。
例如,每个职工的工资信息是一个逻辑记录;整个单位职工的工资信息便组成了该单位工资信息的记录式文件。
记录式文件 vs 数据库
数据库管理系统也支持逻辑记录,但数据库与记录式文件最大的区别在于,数据库可以通过一些表与表的数据冗余构成表间联系,并基于这些联系进行数据查询,而文件系统不行。
文件的物理结构和组织是指文件在物理存储空间中的存放方法和组织关系,又称为物理文件。
文件的存储结构涉及块的划分、记录的排列、索引的组织、信息的搜索等问题。
文件物理结构的优劣直接影响文件系统的性能。
物理结构
类似于一个只能从头开始访问的数组。
将一个文件中逻辑上连续的信息存放到存储介质的依次相邻的块中,构成顺序结构,这类文件叫顺序文件,也称为连续文件。
顺序文件通常存储在同一个柱面上,减少移臂开销。
磁带文件、光盘文件是顺序文件的典例。
优点
顺序存取记录时速度较快,常用于批处理文件、系统文件。
采用磁带存放顺序文件时,总可以保持快速存取的优点。
缺点
建立文件前需要能预先确定文件长度,以便分配存储空间,修改、插入和增加文件均具有困难。
物理结构
连接文件是对于顺序文件存储空间连续的一种修改,采用链表方式使得存储空间不连续,但访问顺序依然连续。
连接文件,又称串联文件,使用连接字来表示文件中各个物理块之间的先后次序。
第一块文件信息的物理地址由文件目录给出,而每一块的连接字指出了文件的下一个物理块位置。连接字内容为 0 时,表示文件至本块结束。
输入井、输出井都用此类文件。
优点
缺点
采用了哈希方法进行文件映射,主要难点在于哈希冲突。
直接文件,又称散列文件,通过计算记录的关键字建立与其物理存储地址之间的对应关系。
哈希冲突
计算寻址结构可能出现 “冲突”,即不同关键字映射相同地址,常见解决方法有拉链法、循环探查法、二次散列法、溢出区法。
物理结构
索引文件为每个文件建立了一张索引表,其中,每个表目包含一个记录的键(逻辑记录号)及其存储地址。
索引表的地址可由文件目录指出,查阅索引表先找到相应记录键,然后获得数据存储地址。
访问方式
索引文件在文件存储器上分为两个区: 索引区、数据区。
上述过程需两次访问辅存,若文件索引已预先调入主存,则仅需一次内外存信息交换。
优点
索引结构可以被认为是连接结构的一种扩展,除了具备连接文件的优点外,还克服了顺序存取的缺点,具有直接读写任何一个记录的能力,便于文件的增、删、改。
缺点
增加了索引表的时空开销。
多级索引结构
文件目录概念
文件目录与索引文件的区别
文件目录是面向用户设计的数据结构,目的是为了让用户可以 “按名存取“ 文件。
索引文件是 OS 用来寻找文件物理位置的数据结构,用户不可见。
在 OS 中构造一张线性表,与每个文件的相关属性占用一个目录项,构成了一级目录结构。
但由于用户与文件众多,不但容易重名,而且用户难以查找。
目录结构
第一级是主文件目录,管理所有用户文件目录。目录项登记了系统接受的用户的名字,以及该用户文件目录的地址。
第二级为用户的文件目录,为该用户的每个文件保存一个登记栏,其内容与一级目录的目录项相同。
每一用户只允许查看自己的文件目录。
优点
目录结构
每一级目录可以登记下一级目录,也可以登记文件,从而形成了层次文件目录结构。
层次目录结构通常采用树形目录结构,树根是根目录,树叶是文件。
优点
文件定位
在树形目录结构中,一个文件的全名包括从根目录开始到文件为止,通路上遇到的所有子目录路径,又称为路径名。
各子目录名之间用斜线隔开。(UNIX 用正斜线 “/”,Windows 用反斜线 “\”)
一个硬盘分区可以组织成一颗子树。
举例
文件查找分为两步,(1)定位层次,(2)定位具体目录项
文件层次定位
根据用户提供的文件路径名来搜索各级文件目录,找到文件。
目录项查找
树型目录结构存在问题
当一个文件经过许多目录节点时,系统需要多次访问文件存储器,文件查找非常耗时。
解决方法
采用 Cache 的方法,将部分常用或正在用的文件目录复制进主存,实现部分缓存的目的。
活动文件表
文件是计算机系统的重要资源,因此要求文件系统具有保障文件安全的手段,提供文件保密的措施,有效地实现文件共享。
文件安全三大内容
文件共享概念
文件共享是计算机用户完成共同任务所必需的。
文件共享有许多好处:
文件共享的并发控制
OS 应该提供手段实现对共享文件的同步控制。
文件保护是指防止文件被破坏。OS 必须提供文件保护机制,有效实现文件的完整性。
常用的文件保护方法
文件副本即存储多个文件副本,保证即使硬软件故障,信息仍能完整保存。
动态多副本技术
在多个介质上维持同一内容的文件,并且同时更新内容。
这种方法需要增加设备费用和系统负载。一般适用于容量较小且较为重要的文件,例如不需要更新的系统文件及专用文件,当文件发生故障时只要切换到备用设备即可。
这种方法是精细活,执行起来非常累。
文件转储(大多数 OS 采用)
文件转储: 定时把文件复制转储到其它介质上,当某介质上出现故障时,复原转储文件。
转储分为两种方式:
存取控制矩阵
OS 为每个用户设置访问每个文件对象的存取属性,即 (用户-文件-权限) 三元组的关系。
所有三元组就组成了一个二维矩阵,称为存取控制矩阵。
存取控制表
由于操作系统拥有很多用户和众多文件,因此存取控制矩阵是一个稀疏矩阵,存在大量无效位置。
因此我们将无效位置剔除,仅登记那些对文件拥有存取属性的部分,将二维矩阵优化成一维线性表,即存取控制表。
基于存取控制矩阵/表的文件保护
该方法即是将原来的三位结构简化为 (用户-文件) 二维结构,大为简化文件管理。
具体方式
文件保密是指文件及其内容不能被未经文件主授权的其他用户窃取。
文件保密常见措施
文件系统的一个重要目标: 尽可能地提供不同的存取方法
概念
按记录顺序进行读 / 写操作的存取方法称顺序存取。
适用范围
顺序存取方式对任何物理结构文件均适用。
支持直接文件、索引文件的物理结构能进行直接存取。直接存取针对那些要求快速地以任意次序直接读写某个记录的应用场合。
例如,航空订票系统,把航班号作标识,把特定航班的所有信息存放在物理块中,用户预订某航班时,直接计算出该航班的存取位置。
基于索引文件的物理结构,才能实现索引存取。其中信息块的地址都可以通过查找记录键而换算出。
特点
索引文件,支持顺序、直接、索引三种存取方式。
实际的系统中,大都采用多级索引,来加速记录查找过程。
用户通过两类接口与文件系统联系。
功能: 创建一个文件
所需参数: 文件名、设备类(号)、文件属性、存取控制信息
处理流程
功能: 删除一个文件
所需参数: 文件名和设备类(号)
处理流程
功能: 结束一个文件的读写
所需参数: 文件句柄
处理流程
功能: 读写文件
所需参数: 文件句柄、用户数据区地址、读写的记录或字节个数
处理流程
功能: 调整所打开文件的读写指针位置
所需参数: 文件句柄、定位指针
随着用户文件不断建立和撤销,文件存储空间会出现许多 “碎片”。
OS 解决 “碎片” 的办法是整理 “碎片”,在整理过程中,往往对文件重新组织,让其存放在连续存储区中。
连续分配
特点: 存放在辅存空间连续存储区中(连续的物理块号)
优点: 顺序访问时速度快,管理较为简单,但为了获得足够大的连续存储区,需定时进行 “碎片” 整理。
非连续分配
特点: 动态分配给若干扇区或簇(几个连续扇区),不要求连续
优点: 辅存空间管理效率高,便于文件动态增长和收缩
位示图
方式: 使用若干字节构成一张表,表中每一字位对应一个物理块,字位的次序与块的相对次序一致。字位为 “1” 表示相应块已占用,字位为 “0” 表示该块空闲。
优点: 把位示图全部或大部分保存在主存中,再配合位操作,实现高速物理块分配和去配。
成组链接法
从下图中可以看到,最左边的是空闲盘块号栈,12 为栈顶,50 为栈底。栈底块链接到右边的 100 个空闲块,可以看到最后一个栈底为 0,表示空闲盘块链的结束。
注意: 最左边的空闲盘块栈中的块数始终保持在 [ 1 , 100 ] [1,100] [1,100] 之间。
下图算法中,空闲块数即空闲盘块栈中记录的空闲块数。
复制第 1 个单元对应块到专用块,表示一次性将 [51,150] 都复制进来,并分配 50。
如果归还时空闲块数超过 100,则留下第 101 个,移走前 100 个,并将第 101 个链接到移走的 100 个上。
下面举一个例子,下图为初态。
分配 299 号盘块。
分配 300 号盘块。
分配 301 号盘块。
下图为回收了 700 号盘块。
回收了 711 号盘块。
最后回收了 703、788、701 号盘块。