[操作系统概念]第七部分——文件与目录
2017-02-24 22:08
239 查看
目录
这部分总结的比较简略* 文件包含文件本身和文件相关的信息。
* 不同类型文件的开头几个字节有特定的次序,用于表示该文件是什么类型,需要如何操作。
* 对文件的组织管理需要有目录这种形式的数据结构。通过目录可以索引文件,存储和文件相关的位置等信息,文件信息也保存在目录中。
目录的结构
单层结构:较简单的目录用单层的目录,实现是一个MAP,每一个目录中文件的条目索引一个真实文件的地址。所有文件都包含在一个目录中,这种结构对于目录对不同用户使用,文件有不同名称等情况不能处理。双层结构:类似于单层鲁姆,不过是两层,第一层是用户,第二层是文件目录。
树状结构:即便是双层目录,每个用户下文件也都是包含在一级目录下的,没有层次,而树状目录允许用户创建富有层次的目录,但是树状结构不能支持对文件的共享。
无环图目录:对于多用户下需要共享的文件,尤其是大文件,如果多个用户分辨储存一次,浪费空间。在树状目录中共享无法实现,所以有了无环图目录,它允许目录含有共享的子目录或者文件,无环还强调目录之间的引用关系不存在环。此外,无环图对共享目录的遍历开销更大。存在共享的目录存在一个问题:如果一方删除了共享文件,另一方的目录如何处理?一种方法是删除文件时,另其他所有目录的引用全部置为无效,另一种处理方法是保留文件直到对这个文件的所有目录引用都消失。
通用图目录:相比于无环图,这里强调通用图可能存在环,那么高效的遍历算法就是通用图看重的了。
文件系统
文件系统的分层设计:(由低到高)
设备I/O控制:由设备驱动程序和中断处理程序组成,负责磁盘和内存之间的数据传输
基本文件系统:发送一般命令控制对磁盘物理块的读写
文件组织系统:将物理块与逻辑块相映射
逻辑文件系统:管理文件系统的所有结构数据等元数据
应用程序
文件系统的实现
每个卷(分区)的引导控制块:保存磁盘启动操作系统所需要的信息,没有操作系统则为空,NTFS下称为分区引导扇区,UFS下称为引导块卷控制块:包括每个卷的详细信息,如分区的总块数,空闲块数等,NTFS下称为主控文件表,UFS下称为超级块
每个文件系统的目录结构:用于组织文件
每个文件的文件控制块:包括文件的详细信息,包括文件的大小,数据块,拥有者等
目录的实现
线性列表:拥有线性数据结构的公共优缺点,查找耗时,创建新文件需要先遍历是否文件重名哈希表:避免了线性表的查找性能低的问题,但是需要处理哈希本身的问题:冲突和重新哈希
相关文章推荐
- 读书笔记之: 操作系统概念(第6版)-第七部分 案例研究-Linux
- 读书笔记之: 操作系统概念(第6版)-第七部分 案例研究-Windows XP
- 读书笔记之: 操作系统概念(第6版)-第三部分 存储管理2(文件系统接口, 文件系统实现)
- 书籍:p/m程序设计:处理文件和操作系统(更新到shell部分,php文件目录等已更新完毕)
- Linux操作系统中根目录下存放文件的存放信息以及部分基础命令
- 读书笔记之: 操作系统概念(第6版)-第七部分 案例研究-Windows 2000
- shell脚本批量修改目录下所有文件中的部分语句
- Unix操作系统基础:Unix文件系统之目录
- Linux操作系统下查找大文件或目录的技巧
- [Linux学习笔记]第1天:操作系统的发展史,linux诞生,Linux发行商,shell,terminal,shell使用技巧,文件目录,基本操作
- 备份环境的部署及实施续——第七部分 操作系统的备份和恢复
- 读书笔记之: 操作系统概念(第6版)-第四部分 IO系统(I/O系统, 大容量存储结构)
- oracle 获取操作系统目录下文件列表
- 第二部分 第七章 Linux文件和目录管理
- 《uCOS51移植心得》---七年前之《快快乐乐跟我学51单片机操作系统和IP栈》 第七部分一个简单Ping的实现
- 如何从一个 git repo 中分离出部分目录或文件至独立的 git repo
- Linux私房菜基础篇:第二部分,linux文件、目录与磁盘格式
- 关于操作系统中C盘根目录下的一个文件“BOOT.INI”
- ORACLE获取操作系统目录下文件列表
- Linux操作系统下部分文件乱码的问题解决