- 文件系统模型
- 最高层时文件系统接口
-
- 命令接口
- 程序接口
- 中间层是对对象操纵和管理的软件集合
-
- 对文件存储空间的管理
- 对文件目录的管理
- 地址映射
- 文件的读写管理
- 文件的共享与保护等
- 最底层是对象及其属性说明
-
- 文件、目录和磁盘存储空间
- 文件的逻辑结构
- 顺序文件
- 索引文件
-
- 往往建立一张索引表,记录下每个记录的长度及指向该记录的指针
- 索引文件本身是顺序文件组织
- Access method
- Sequential access
- Direct access
- 文件的物理结构
- 取决于外存的分配方式
-
- 连续分配 --- 顺序结构
- 链接分配 --- 链接结构
- 索引分配 --- 索引结构
- Contiguous allocation
- Simple
-
- Only starting location and length are required
- Random access
- Wasteful of space
- Files cannot grow
- 优点
-
- 简单,支持随机存取和顺序存取
- 顺序存取速度快
- 所需的磁盘寻道次数和寻道时间最少
- 缺点
-
- 要求连续的存储空间
- 会产生碎片
- 要求用户给出文件的最大长度:不利于文件的动态扩充
- 不利于文件的插入和删除
- Linked allocation
- Simple
-
- Need only starting address
- No random access
- 隐式链接
-
- 一个文件的信息存放在若干个不连续的物理块中,各块之间通过指针连接
- 优点
-
- 提高了磁盘的空间利用率,不存在外部碎片问题
- 有利于文件插入和删除
- 有利于文件动态扩充
- 缺点
-
- 不能直接存取
- 存取速度慢,不适于随机存取
- 可靠性问题,如指针出错
- 更多的寻道次数和寻道时间
- 指针占用空间
- 可将多个块组成簇,以簇为单位,指针占用百分比减少,但是增加了内碎片
-
- 显式链接
-
- 文件分配表FAT(整个磁盘只有一张)
- FAT方式需要占用较大的内存空间
- Index allocation
- 事实上,打开某个文件时,只需要直到该文件所在的盘块号
- Need a index table
-
- 索引表组织:
-
- 链接模式
-
- 大的文件,索引表占了若干个盘块,一个盘块一个索引表,多个索引表链接起来
- 多级索引
-
- 将一个大文件的所有索引表(二级索引)的地址放在另一个索引表(主索引,一级索引)中
- 在两级索引分配方式,若每个盘块大小为1KB,每个盘块号占4字节,则一个索引块中可存放256个盘块号。则两级索引最多可包含的盘块号总数为64K个(256*256)。因此,所允许的文件的最大长度为64MB(64K*1KB)
- 优点:
-
- 保持链接结构的优点,又克服了其缺点:
- 既能顺序存取又能随机存取
- 满足了文件动态增长\插入删除要求
- 能充分利用外存空间
- 缺点:
-
- 较多的寻道次数和寻道时间
- 索引表本身带来了系统开销,如:内外存空间,存取时间
- Disk structure
- Disk or partition can be used raw --- without a file system, or formatted with a file system
- Directory structure
- A collection of nodes containing information about all files
- Both the directory structure and the files reside on disk
- Backups of these two structures are kept on tapes
- File directory
- FCB
-
- 用于描述和控制文件的数据结构
- 包含
-
- 文件基本信息
- 存取控制信息
- 管理信息
- 文件目录:文件控制块的有序集合
-
- 目录项:构成文件目录的项目(目录项就是FCB)
- 目录文件:为了实现对文件目录的管理,将文件目录以文件的形式保存再外存,这个文件就叫做目录文件
- Operations performed on directory
- Organize the directory to obtain
- Efficiency --- locating a file quickly
- Name --- convienient to users
- Grouping --- logical grouping of files by properties
- Single-level directory
- 命名冲突
- Two-level directory
- 一级为主文件目录,给出用户名,用户子目录所在的物理位置
- 二级成为用户文件目录,给出该用户所有文件的FCB
- 优点
-
- 解决了文件的重名问题
-
- 用户名|文件名
- 查找时间降低
- No grouping capcability
- Tree-structured directory
- 优点:
-
- 层次结构清晰,便于管理和保护;
- 有利于文件分类;
- 解决重名问题;
- 提高文件检索速度;
- 缺点:
-
- 查找一个文件按路径名逐层检查,由于每个文件都放在外存,多次访盘影响速度
- Acyclic-graph directory
- Have shared subdirectories and files
- If dict deletes list -----> dangling pointer.
-
Solutions:
-
- Backpointers, so we can delete all pointers.
- Entry-hold-count solution.
- 文件别名的实现
-
- 基于索引结点(index node)
-
- 也称为硬链接(hard link),基于改进的多级目录结构,将目录内容分为两部分:文件名和索引结点。前者包括文件名和索引结点编号,后者包括文件的其他内容(包括属主和访问权限)。通过多个文件名链接(link)到同一个索引结点,可建立同一个文件的多个彼此平等的别名。别名的数目记录在索引结点的链接计数中,若其减至0,则文件被删除。
- 基于符号链接(symbolic link, shortcut)
-
- 特殊类型的文件,其内容是到另一个目录或文件路径的链接。建立符号链接文件,并不影响原文件,实际上它们各是一个文件。可以建立任意的别名关系,甚至原文件是在其他计算机上。
- General graph directory
- How we guarantee no cycles
-
- Allow only links to file not subdirectories
- Garbage collection
- Every time a new link is added, use a cycle detection algorith to determine whether it is OK
- 普通文件和目录文件的目录项通过一个二进制位区分
- Directory implementation
- Linear list of file names with pointer to the data blocks
-
- Sequential search
- Simple to program
- Consume CPU time
- Hash table
-
- Decrease directory search time
- File operation
- 建立文件
-
- 建立文件的FCB
- 分配必要的外存空间
- 在文件目录中为之建立一个目录项,目录项中记录新文件的文件名及其在外存的地址等属性,返回一个文件描述符。
- 删除文件:
-
- 从目录中找到要删除文件的目录项
- 使之成为空闲目录项
- 回收该文件所占用的存储空间
- 读文件 : 把文件中的数据从外存读入内存的用户区
-
- 查找目录,找到指定文件的目录项,从中得到被读文件在外存的地址
- 从外存将数据读入内存
- 写文件 :
-
- 查找目录,找到指定文件的目录项
- 利用目录中的文件指针将信息写入文件
- 打开文件: 为了避免每次访问文件时都要从外存中查找文件目录,系统提供了打开文件命令。
-
- 将待访问文件的目录信息读入内存活动文件表中,建立起用户和文件的联系。
- 在有些系统中,也可以通过读命令隐含地向系统提出打开文件的要求。若在读写命令中不包含打开文件功能,则在使用文件之前,必须先打开文件。
- 关闭文件:
-
- 撤消主存中有关该文件的目录信息,切断用户与该文件的联系;
- 若在文件打开期间,该文件作过某种修改,则应将其写回辅存。
- Free-space management
- 位图法
-
- 用一串二进制反映磁盘空间中分配使用情况
- 空闲块表
-
- 将所有空闲块记录再一个表中
- 有两项
-
- 该空闲区的第一个盘块号
- 该区的空闲盘快总数
- 空闲块链表
-
- 成组链接法
-
- 文件区的所有空闲盘块被分成若干组
- 每一组的第一个盘块中记录又下一组的盘块总数和盘块号
- 空闲盘块号栈
-
- 存放当前可用的空闲盘块号及空闲盘块号数N
- 第一组盘块总数和盘块号记入空闲盘块号栈中
- Protection
- File access control
-
- 第一级:对访问者的识别
-
- 对用户分类
-
- 文件主
- 文件主的同组用户
- 其他用户
- 第二级:对操作权限的识别
-
- 对操作分类
-
- 读操作(r)
- 写操作(w)
- 执行操作(x)
- 不能执行任何操作(-)
- 分级安全管理:为保证文件的安全性通常采用分级的管理措施
-
- 系统级管理
-
- 主要任务时不允许未经核准的用户进入系统
- 注册/登录
- 用户级管理
-
- 对所有用户进行分类
- 为指定用户分配文件访问权
- 采用保护域
- 目录级管理
-
- 是为保护系统中的各种目录而涉及的,它与用户权限无关
- 为保护目录的安全,规定只有系统核心才具有写目录的权利
- 文件级管理
-
- 通过系统管理员或文件主对文件属性的设置,来控制用户对文件的访问
- Efficiency and performance
- Efficiency
-
- Disk allocation and directory algorithm
- Types of data kept in file's directory entry
- Performance
-
- Disk cache
-
- 利用内存中的存储空间,来暂存从磁盘中读出的一系列盘块中的信息
- 专用
-
- 在内存中开辟一个单独的存储空间来作为磁盘高速缓存,大小固定
- 公用
-
- 把所有未利用的内存空间作为一个缓冲池,供请求分页系统和磁盘I/O共享
- Free-behind and read-ahead
- RAM disk
-
- 利用内存空间去仿真磁盘
- 为提高对文件的访问速度,可从三个层次上着手
-
- 改进文件的目录结构以及检索目录的方法,来减少对文件的查找时间
- 选择好的文件存储结构,以提高对文件的访问速度
- 提高磁盘I/O速度,以提高对数据的传送速度
-
- 提前读
-
- 用户对文件进行顺序访问的情况下,在读当前块的同时,可提前将下一个盘块读入缓冲区
- 延迟写
-
- 考虑到缓冲区中的数据,不久之后可能还会被访问,因此不立即将数据写入磁盘
- 数据一致性
- 磁盘容错技术
- 低级容错技术
- 二级容错技术
Chapter 11 File System
最新推荐文章于 2022-03-08 09:16:27 发布