目录
一、文件概念
操作系统对存储设备的物理属性加以抽象,从而定义逻辑存储单位,即文件
从用户角度看,文件是逻辑外存的最小分配单元;也就是说数据只有通过文件才能写到外存。通常,文件表示程序和数据
根据文件类型的不同可以存储不同类型的信息,如源程序、文本数据、照片、音乐、视频等。文件根据其类型具有不同的结构
。
1.文件属性
文件的属性因操作系统而异,通常包括:
- 名称
- 标识:唯一标识(通常为数字)表示这个文件;它是文件的人类非可读的名称
- 类型
- 位置,指向设备与设备上文件位置的指针
- 大小
- 保护:访问控制信息,确定谁能进行读取、写入、执行等
- 时间、日期和用户标识
2.文件操作
- 创建文件
- 写文件
- 读文件
- 重新定位文件
- 删除文件
- 截断文件
许多系统要求,首次使用文件之前进行系统调用open()。操作系统
有一个打开文件表
用于维护所有打开文件的信息,当请求文件操作时,可通过该表的索引指定文件,而不需要搜索。当文件不再使用,进程关闭它,操作系统从打开文件表中删除它的条目。
进程的打开文件表
单个进程打开文件的信息表,每个条目内容包括文件指针,文件访问权限,记账信息等系统的打开文件表
整个系统内的打开文件信息表,每个条目内容包括文件在磁盘上的位置、访问日期、文件大小、文件打开次数等
两者是不相同的
单个进程的每个条目相应的指向这个系统的打开文件表
。系统表包含与进程无关的信息
。一旦有进程打开一个文件,系统表就包含该文件的条目;当另一个进程执行调用open(),只要简单地在其进程打开表增加一个条目,并指向系统表的相应条目
每个打开文件具有如下关联信息:
- 文件指针
• 文件最后读/写位置指针
• 该指针对操作文件的每个进程是唯一的,因此必须与磁盘文件属性分开保存 - 文件打开计数器
• 一个文件被打开的次数,当文件关闭时,操作系统必须重设打开文件表的条目 - 文件磁盘位置
• 用于定位磁盘上文件位置信息保存在内存中 - 访问权限
• 确定打开文件模式,以便操作系统允许或拒绝以后的I/O请求
操作系统可提供共享锁或独占锁
文件加锁机制(共享锁:读;独占锁:写)
写操作系统可以提供强制或建议
文件加锁机制。
- 强制:一旦被加锁,其他进程就不能访问
- 建议:根据程序员的设计需要确保适当的获取与释放锁
二、访问方法
1.顺序访问
文件信息按顺序,即一个记录接着一个记录的加以处理。
2.直接访问(相对访问)
文件由固定长度的逻辑记录
组成,以允许程序按任意顺序进行快速读取和写入记录。
用户提供给操作系统的块号,通常为相对块号
,它是相对于文件开始的索引
3.索引文件
对文件创建索引文件
,索引包括各块的指针,为查找文件中的记录,首先搜索索引,再根据指针直接访
问文件
三、目录与磁盘的结构
磁盘的每个分区的都可以创建文件系统,包含文件系统的分区通常称为卷
每个卷必须包含其文件系统上文件的信息,这些信息保存在设备目录
或卷目录表
中
1.目录概述
目录也是文件
对目录的相关操作:
- 搜索、创建、删除目录
- 遍历目录
- 重命名文件
- 遍历文件系统(备份)
2.单级目录
所有文件在同一目录中。
问题:文件命名,文件名称必须是唯一的多用户之间的文件名称也不能冲突
3.两级目录
系统有主文件目录,每个用户都有自己的用户文件目录
- 路径是由用户名和文件名定义
- 不同的用户可以有相同的文件名
4.树形目录
目录可以包含文件和子目录,当需要访问文件时,就搜索当前目录。
路径名可以有两种形式:
- 绝对路径:从根目录开始
- 相对路径:从当前目录开始
树状结构禁止共享文件和目录
5.无环图目录
无环图目录
,无环图即没有循环的图,允许
目录共享子目录和文件。同一文件和子目录可出现在两个不同目录中。无环图是树形目录方案的自然扩展
共享文件和目录的实现方法:
- 创建一个名为链接的新目录条目,
链接
实际上是另一个文件或子目录指针(符号链接
)
问题:原文件的删除,链接的删除 - 共享目录中重复所有被共享文件的信息(非符号链接)
问题:同步问题
6.通用图目录
当添加链接时,会破坏树结构,从而形成一个简单的图结构。
无环图主要优点是,有相对简单的算法以遍历图并确定何时没有更多的文件引用。需要避免重复遍历无环图的共享部分。
在允许有环的目录结构中,同样需要避免重复搜索
,一种解决方案是限制搜索时访问目录的数量(引用计数
);删除文件同样存在这类问题,删除文件需要确认引用计数,引用计数为0才能删除,但当环存在时,由于可能存在自我引用,引用计数可能不为0,这时,就需要使用垃圾收集方案
。
如何在创建新链接时避免环
?
- 只允许链接文件,不允许连接子目录
- 垃圾收集
- 利用某种检测算法检测是否形成环,然而这些算法极为费时,不常用。
四、文件系统安装
文件系统被系统上的进程使用之前必须安装。
安装过程很简单。
操作系统需要知道设备名称和安装点
。
五、共享文件
1.多用户
多用户系统比单用户系统需要更多文件和目录属性,即拥有者ID,组ID
- 拥有者是目录最高控制权的用户,可以改变属性和授权访问
- 组属性定义对文件拥有相同权限的用户子集
2.远程文件系统
故障模式
,远程文件系统故障与本地文件系统故障不同:
- 增加了新的故障模式
- 增加了每个远程请求的状态信息,通过调用状态信息恢复故障
参考
《操作系统概念》