操作系统文件管理
Posted H_Cisco
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统文件管理相关的知识,希望对你有一定的参考价值。
目录
- 4.1.1 初识文件管理
- 4.1.2 文件的逻辑结构
- 4.1.3 文件目录
- 4.1.4 文件的物理结构(上)
- 4.1.4 文件的物理结构(下)
- 4.1.5 文件存储空间管理
- 4.1.6 文件的基本操作
- 4.1.7 文件共享
- 4.1.8 文件保护
- 4.1.9 文件系统的层次结构
- 4.2.1 磁盘的结构
- 4.2.2 磁盘调度算法
- 4.2.3 减少磁盘延迟时间的方法
- 4.2.4 磁盘的管理
4.1.1 初识文件管理
- 问题:
- 计算机中存放了各种各样的文件,一个文件有哪些属性?
- 文件内部的数据应该怎样组织起来?
- 文件之间又应该又应该怎么组织起来?
- 从下往上看,OS应提供哪些功能,才能方便用户、应用程序使用文件?(create、read、write、delete、open、close)
- 从上往下看,文件数据应该怎么存放在外存(磁盘)上?
- 解决一:文件的属性
- 文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件。
- 标识符:一个系统内的各文件标识符唯一,对用户来说毫无可读性,因此标识符只是操作系统用于区分各个文件的一种内部名称。
- 类型:指明文件的类型。
- 位置:文件存放的路径(让用户使用)、在外存中的地址(操作系统使用,对用户不可见”
- 大小:指明文件大小
- 创建时间、上次修改时间文件所有者信息
- 文件所有者信息
- 保护信息:对文件进行保护的访问控制信息
- 解决二:文件内部的数据应该怎样组织起来
- 无结构文件(如文本文件)—―由一些二进制或字符流组成,又称“流式文件”(eg:txt文件)
- 有结构文件(如数据库表)—一由一组相似的记录组成,又称“记录式文件”(eg:excel文件)
- 解决五:从上往下看,文件数据应该怎么存放在外存(磁盘)上
- 与内存一样,外存也是由一个个存储单元组成的,每个存储单元可以存储一定量的数据(如1B)。每个存储单元对应一个物理地址
- 类似于内存分为一个个“内存块”,外存会分为一个个“块/磁盘块/物理块”。每个磁盘块的大小是相等的,每块一般包含2的整数幂个地址(如本例中,一块包含210个地址,即1KB)。同样类似的是,文件的逻辑地址也可以分为(逻辑块号,块内地址),操作系统同样需要将逻辑地址转换为外存的物理地址(物理块号,块内地址)的形式。块内地址的位数取决于磁盘块的大小
- 操作系统以“块”为单位为文件分配存储空间,因此即使一个文件大小只有10B,但它依然需要占用1KB的磁盘块。外存中的数据读入内存时同样以块为单位
4.1.2 文件的逻辑结构 - 所谓的“逻辑结构”,就是指在用户看来,文件内部的数据应该是如何组织起来的。而“物理结构”指的是在操作系统看来,文件的数据是如何存放在外存中的。
- 无结构文件:
- 文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”。如:Windows操作系统中的.txt文件。
- 有结构文件:
- 由一组相似的记录组成,又称“记录式文件”。每条记录又若干个数据项组成。如:数据库表文件。一般来说,每条记录有一个数据项可作为关键字(作为识别不同记录的ID)根据各记录的长度(占用的存储空间)是否相等,又可以分为定长记录和可变长记录两种。
- 顺序文件:文件中的记录一个接一个地顺序排列(逻辑上),记录可以是定长的或可变长的。各个记录在物理上可以顺序存储或链式存储。
i. 顺序存储:逻辑上相邻的记录物理上也相邻(类似顺序表) - 可变长记录:无法实现随机存取。每次只能从第一个记录开始依次往后查找
- 定长记录:
a. 可实现随机存取。记录长度为L,则第i个记录存放的相对位置是iR
b. 若采用串结构,无法快速找到某关键字对应的记录
c. 若采用顺序结构,可以快速找到某关键字对应的记录(如折半查找)
ii. 链式存储:逻辑上相邻的记录物理上不一定相邻(类似于链表) - 无论是定长/可变长记录,都无法实现随机存取,每次只能从第一个记录开始依次往后查找
iii. 串结构:记录之间的顺序与关键字无关(存入的时间决定)
iv. 顺序结构:记录之间的顺序按关键字顺序排列 - 索引文件:
i. 索引表本身是定长记录的顺序文件。因此可以快速找到第i个记录对应的索引项。
ii. 建立一张索引表以加快文件检索速度。每条记录对应一个索引项。
iii. 文件中的这些记录在物理上可以离散地存放。
iv. 由于索引文件有很快的检索速度,因此主要用于对信息处理的及时性要求比较高的场合。 - 索引书序文件:
i. 索引文件的缺点;每个记录对应一个索引表项,因此索引表可能会很大比如:文件的每个记录平均只占8B,而每个索引表项占32个字节,那么索引表都要比文件内容本身大4倍,这样对存储空间的利用率就太低了。
ii. 索引顺序文件是索引文件和顺序文件思想的结合。索引顺序文件中,同样会为文件建立一张索引表,但不同的是;并不是每个记录对应一个索引表项,而是一组记录对应一个索引表项。
iii. 多级索引顺序文件 - 为了进一步提高检索效率,可以为顺序文件建立多级索引表。例如,对于一个含10个记录的文件,可先为该文件建立一张低级索引表,每100个记录为一组,故低级索引表中共有10000个表项(即10000个定长记录),再把这10000个定长记录分组,每组100个,为其建立顶级索引表,
- 故顶级索引表中共有100个表项。
4.1.3 文件目录 - 文件控制块(实现文件目录的关键数据结构)
- FCB的有序集合称为“文件目录”,一个FCB就是一个文件目录项。
- FCB中包含了文件的基本信息(文件名、物理地址、逻辑结构、物理结构等),存取控制信息(是否可读/可写、禁止访问的用户名单等)),使用信息(如文件的建立时间、修改时间等)。
- 目录结构
- 单级目录结构
i. 早期操作系统并不支持多级目录,整个系统中只建立一张目录表,每个文件占一个目录项。
ii. 单级目录实现了“按名存取”,但是不允许文件重名。 - 两级目录结构
i. 主文件目录:允许不同用户的文件重名。文件名虽然相同,但是对应的其实是不同的文件 - 主文件目录记录用户名及相应用户文件目录的存放位置
- 用户文件目录由该用户的文件PCB组成
- 两级目录结构允许不同用户的文件重名,也可以在目录上实现实现访问限制(检查此时登录的用户名是否匹配)。但是两级目录结构依然缺乏灵活性,用户不能对自己的文件进行分类
ii. 用户文件目录: - 多级目录结构(树形目录结构)
i. 不同目录下的文件可以重名
ii. 用户(或用户进程)要访问某个文件时要用文件路径名标识文件,文件路径名是个字符串。各级目录之间用“/”隔开。
iii. 从根目录出发的路径称为绝对路径。
iv. 从当前目录出发的“相对路径”。
v. 树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是,树形结构不便于实现文件的共享。为此,提出了“无环图目录结构”。 - 无环图目录结构
i. 在树形目录结构的基础上,增加一些指向同一节点的有向边,使整个目录成为一个有向无环图。可以更方便地实现多个用户间的文件共享。
ii. 可以用不同的文件名指向同一个文件,甚至可以指向同一个目录(共享同一目录下的所有内容)
iii. 需要为每个共享结点设置一个共享计数器,用于记录此时有多少个地方在共享该结点。用户提出删除结点的请求时,只是删除该用户的FCB、并使共享计数器减1,并不会直接删除共享结点。 - 索引结点(对文件控制块FCB的优化)
- 其实在查找各级目录的过程中只需要用到“文件名”这个信息,只有文件名匹配时,才需要读出文件的其他信息。因此可以考虑让目录表“瘦身”来提升效率。
- 索引结点:除了文件名之外的文件描述信息都存在这
- 目录项中只包含文件名、索引结点指针,因此每个目录项的长度大幅减小
- 由于目录项长度减小,因此每个磁盘块可以存放更多个目录项,因此检索文件时磁盘I/O的次数就少了很多
4.1.4 文件的物理结构(上) - 连续分配
- 链接分配
- 隐式链接
- 显式链接
- 索引分配
4.1.4 文件的物理结构(下)
4.1.5 文件存储空间管理
- 存储空间的划分与初始化
- 文件卷(逻辑卷)的概念
- 目录区与文件区
- 几种管理方法
- 空闲表法
- 空闲链表法
i. 空闲盘块链
ii. 空闲盘区链 - 位示图法
- 成组链接法
4.1.6 文件的基本操作
4.1.7 文件共享
- 基于索引结点(硬链接)
- 索引结点中设置一个链接计数变量count,用于表示链接到本索引结点上的用户目录项数。
- 若count =2,说明此时有两个用户目录项链接到该索引结点上,或者说是有两个用户在共享此文件。若某个用户决定“删除”该文件,则只是要把用户目录中与该文件对应的目录项删除,且索引结点的count值减1。
- 若count>0,说明还有别的用户要使用该文件,暂时不能把文件数据删除,否则会导致指针悬空。
- 当count =0时系统负责删除文件。
- 基于符号链(软链接)
- Link类型的文件,记录了文件1的存放路径“C:/User1/aaa”类似于 Windows 操作系统的“快捷方式”
- 操作系统根据路径一层层查找目录,最终找到共享文件
- 即使软链接指向的共享文件已被删除,Link 型文件依然存在,只是通过Link型文件中的路径去查找共享文件会失败(找不到对应目录项)
- 由于用软链接的方式访问共享文件时要查询多级目录,会有多次磁盘I/O,因此用软链接访问
4.1.8 文件保护 - 口令保护
- 口令一般存放在文件对应的FCB或索引结点中。用户访问文件前需要先输入“口令”,操作系统会将用户提供的口令与FCB中存储的口令进行对比,如果正确,则允许该用户访问文件
- 优点:保存口令的空间开销不多,验证口令的时间开销也很小。
- 缺点:正确的“口令”存放在系统内部,不够安全。
- 加密保护
- 使用某个“密码”对文件进行加密,在访问文件时需要提供正确的“密码”才能对文件进行正确的解密。
- 访问控制
- 在每个文件的FCB(或索引结点)中增加一个访问控制列表(Access-Control List, ACL),该表中记录了各个用户可以对该文件执行哪些操作。
- 精简的访问列表:以“组”为单位,标记各“组”用户可以对文件执行哪些操作。如:分为系统管理员、文件主、文件主的伙伴、其他用户几个分组。
- 当某用户想要访问文件时,系统会检查该用户所属的分组是否有相应的访问权限。
以上是关于操作系统文件管理的主要内容,如果未能解决你的问题,请参考以下文章