操作系统 第10章

文件系统 : 一组文件(用于存储相关数据) 和 目录结构
解释文件系统功能
描述文件系统接口
讨论文件系统设计的各个权衡,包括访问方法,文件共享,文件加锁以及目录结构等。
研究文件系统保护
用户角度,文件是逻辑外存的最小分配单元 -》数据除非在文件中,否则不能写到外存
目标文件 是一系列字节序列,它们按目标系统链接器所能理解的方式组成
可执行文件 为一系列代码段,以供装入程序调入内存执行

目录条目包括文件名称及其唯一标志符,而标志符又定位文件其他属性信息

10.1.2 文件操作
抽象数据类型

创建文件
写文件
读文件
在文件内重定位
删除文件
截短文件

系统调用open() 操作系统维护一个包含所有打开文件的信息表(打开文件表,open-file table)
通过该表的一个索引指定文件,而不需要搜索,当文件不再使用时,进程可关闭它
系统调用 create 和 delete 操作的是关闭文件而不是打开的文件

大多数操作系统要求在使用文件之前,显式的打开

文件指针 : 对打开文件的某个进程来说是唯一的,因此必须与磁盘文件属性分开保存
文件打开计数器
文件磁盘位置 :绝大多数操作要求系统修改文件数据。用于定位磁盘上文件位置的信息保存在内存中以避免每个操作从磁盘中读取该信息
访问权限

共享锁(shared lock )类似于读者锁, 可供多个进程并发获取
专用锁(exclusive lock) 类似于写者锁
一般来说,windows操作系统采用强制加锁(mandatory),UNIX系统采用建议加锁(advisory)
10.1.3 文件类型
实现文件类型的常用技术是在文件名称内包含类型
名称 : 名称 和 扩展名
UNIX系统采用 幻数(magic number) (保存在文件的开始部分)大致表明文件类型 : 可执行程序, 批处理文件(shell 脚本)postscript文件等

10.1.4 文件结构
UNIX认为每个文件是由8位字节序列所组成的 : 操作系统并不解释这些位。
所有操作系统必须至少支持一种结构,即可执行文件结构,以便能装入和运行程序
资源叉(source fork) 包括用户所感兴趣的信息
和 数据叉(data fork)
太少结构会使编程不够灵活,然而太多结构会使操作系统过大且易混淆

10.1.5 内部文件结构

10.3 目录结构
一个典型的Solaris系统可有数个UFS文件系统,一个VFS文件系统以及一些NFS文件系统。

10.3.4 双层结构目录
用户文件目录(user file directory)
主文件目录(master file directory, MFD)
分区,目录,子目录,文件名

搜索路径(search path)

10.3.5 树状结构目录
10.3.6 无环图目录
10.3.7 通用图目录
无环图的主要优点 :可用简单算法遍历图,并确定是否存在文件引用

10.4 文件系统安装

10.6 保护
10.6.1 访问类型
以下几种类型的操作都可以加以控制


执行
添加
删除
列表清单
10.6.2 访问控制
实现基于身份访问的最为普通的方法是为每个文件和目录增加一个 访问控制列表(access-control list, ACL)

10.7 小结

文件是由操作系统所定义和实现的抽象数据类型,由一系列逻辑记录组成,逻辑记录可以是字节,行(固定或可变长度)或更为复杂的数据项。
操作系统的主要任务是将逻辑文件概念映射到物理存储设备,如磁盘或磁带。
文件系统的每个设备都有内容的卷表或设备目录,以列出设备上文件的位置。另外,可创建目录以组织文件。多用户系统的单层结构目录会有命名问题。因为每个文件必须具有唯一文件名。双层结构目录通过为每个用户创建独立目录来解决这个问题,
双层结构目录的自然扩展那是树状结构目录。

无环图结构目录 允许共享子目录和文件, 但是使得搜索和删除变得复杂
通用图结构目录在文件和目录共享方面提供了更好的灵活性, 但是有时需要采用垃圾收集以恢复未使用的空间

磁盘分为一个或多个卷,每个卷可包括一个文件系统或无文件系统的生区(raw partition)
文件系统可安装到系统命名结构中

文件共享依赖于系统所提供的语义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值