操作系统文件管理

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 初识文件管理

  1. 问题:
  2. 计算机中存放了各种各样的文件,一个文件有哪些属性?
  3. 文件内部的数据应该怎样组织起来?
  4. 文件之间又应该又应该怎么组织起来?
  5. 从下往上看,OS应提供哪些功能,才能方便用户、应用程序使用文件?(create、read、write、delete、open、close)
  6. 从上往下看,文件数据应该怎么存放在外存(磁盘)上?
  7. 解决一:文件的属性
  8. 文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件。
  9. 标识符:一个系统内的各文件标识符唯一,对用户来说毫无可读性,因此标识符只是操作系统用于区分各个文件的一种内部名称。
  10. 类型:指明文件的类型。
  11. 位置:文件存放的路径(让用户使用)、在外存中的地址(操作系统使用,对用户不可见”
  12. 大小:指明文件大小
  13. 创建时间、上次修改时间文件所有者信息
  14. 文件所有者信息
  15. 保护信息:对文件进行保护的访问控制信息
  16. 解决二:文件内部的数据应该怎样组织起来
  17. 无结构文件(如文本文件)—―由一些二进制或字符流组成,又称“流式文件”(eg:txt文件)
  18. 有结构文件(如数据库表)—一由一组相似的记录组成,又称“记录式文件”(eg:excel文件)
  19. 解决五:从上往下看,文件数据应该怎么存放在外存(磁盘)上
  20. 与内存一样,外存也是由一个个存储单元组成的,每个存储单元可以存储一定量的数据(如1B)。每个存储单元对应一个物理地址
  21. 类似于内存分为一个个“内存块”,外存会分为一个个“块/磁盘块/物理块”。每个磁盘块的大小是相等的,每块一般包含2的整数幂个地址(如本例中,一块包含210个地址,即1KB)。同样类似的是,文件的逻辑地址也可以分为(逻辑块号,块内地址),操作系统同样需要将逻辑地址转换为外存的物理地址(物理块号,块内地址)的形式。块内地址的位数取决于磁盘块的大小
  22. 操作系统以“块”为单位为文件分配存储空间,因此即使一个文件大小只有10B,但它依然需要占用1KB的磁盘块。外存中的数据读入内存时同样以块为单位
    4.1.2 文件的逻辑结构
  23. 所谓的“逻辑结构”,就是指在用户看来,文件内部的数据应该是如何组织起来的。而“物理结构”指的是在操作系统看来,文件的数据是如何存放在外存中的。
  24. 无结构文件:
  25. 文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”。如:Windows操作系统中的.txt文件。
  26. 有结构文件:
  27. 由一组相似的记录组成,又称“记录式文件”。每条记录又若干个数据项组成。如:数据库表文件。一般来说,每条记录有一个数据项可作为关键字(作为识别不同记录的ID)根据各记录的长度(占用的存储空间)是否相等,又可以分为定长记录和可变长记录两种。
  28. 顺序文件:文件中的记录一个接一个地顺序排列(逻辑上),记录可以是定长的或可变长的。各个记录在物理上可以顺序存储或链式存储。
    i. 顺序存储:逻辑上相邻的记录物理上也相邻(类似顺序表)
  29. 可变长记录:无法实现随机存取。每次只能从第一个记录开始依次往后查找
  30. 定长记录:
    a. 可实现随机存取。记录长度为L,则第i个记录存放的相对位置是iR
    b. 若采用串结构,无法快速找到某关键字对应的记录
    c. 若采用顺序结构,可以快速找到某关键字对应的记录(如折半查找)
    ii. 链式存储:逻辑上相邻的记录物理上不一定相邻(类似于链表)
  31. 无论是定长/可变长记录,都无法实现随机存取,每次只能从第一个记录开始依次往后查找
    iii. 串结构:记录之间的顺序与关键字无关(存入的时间决定)
    iv. 顺序结构:记录之间的顺序按关键字顺序排列
  32. 索引文件:
    i. 索引表本身是定长记录的顺序文件。因此可以快速找到第i个记录对应的索引项。
    ii. 建立一张索引表以加快文件检索速度。每条记录对应一个索引项。
    iii. 文件中的这些记录在物理上可以离散地存放。
    iv. 由于索引文件有很快的检索速度,因此主要用于对信息处理的及时性要求比较高的场合。
  33. 索引书序文件:
    i. 索引文件的缺点;每个记录对应一个索引表项,因此索引表可能会很大比如:文件的每个记录平均只占8B,而每个索引表项占32个字节,那么索引表都要比文件内容本身大4倍,这样对存储空间的利用率就太低了。
    ii. 索引顺序文件是索引文件和顺序文件思想的结合。索引顺序文件中,同样会为文件建立一张索引表,但不同的是;并不是每个记录对应一个索引表项,而是一组记录对应一个索引表项。
    iii. 多级索引顺序文件
  34. 为了进一步提高检索效率,可以为顺序文件建立多级索引表。例如,对于一个含10个记录的文件,可先为该文件建立一张低级索引表,每100个记录为一组,故低级索引表中共有10000个表项(即10000个定长记录),再把这10000个定长记录分组,每组100个,为其建立顶级索引表,
  35. 故顶级索引表中共有100个表项。
    4.1.3 文件目录
  36. 文件控制块(实现文件目录的关键数据结构)
  37. FCB的有序集合称为“文件目录”,一个FCB就是一个文件目录项。
  38. FCB中包含了文件的基本信息(文件名、物理地址、逻辑结构、物理结构等),存取控制信息(是否可读/可写、禁止访问的用户名单等)),使用信息(如文件的建立时间、修改时间等)。
  39. 目录结构
  40. 单级目录结构
    i. 早期操作系统并不支持多级目录,整个系统中只建立一张目录表,每个文件占一个目录项。
    ii. 单级目录实现了“按名存取”,但是不允许文件重名。
  41. 两级目录结构
    i. 主文件目录:允许不同用户的文件重名。文件名虽然相同,但是对应的其实是不同的文件
  42. 主文件目录记录用户名及相应用户文件目录的存放位置
  43. 用户文件目录由该用户的文件PCB组成
  44. 两级目录结构允许不同用户的文件重名,也可以在目录上实现实现访问限制(检查此时登录的用户名是否匹配)。但是两级目录结构依然缺乏灵活性,用户不能对自己的文件进行分类
    ii. 用户文件目录:
  45. 多级目录结构(树形目录结构)
    i. 不同目录下的文件可以重名
    ii. 用户(或用户进程)要访问某个文件时要用文件路径名标识文件,文件路径名是个字符串。各级目录之间用“/”隔开。
    iii. 从根目录出发的路径称为绝对路径。
    iv. 从当前目录出发的“相对路径”。
    v. 树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是,树形结构不便于实现文件的共享。为此,提出了“无环图目录结构”。
  46. 无环图目录结构
    i. 在树形目录结构的基础上,增加一些指向同一节点的有向边,使整个目录成为一个有向无环图。可以更方便地实现多个用户间的文件共享。
    ii. 可以用不同的文件名指向同一个文件,甚至可以指向同一个目录(共享同一目录下的所有内容)
    iii. 需要为每个共享结点设置一个共享计数器,用于记录此时有多少个地方在共享该结点。用户提出删除结点的请求时,只是删除该用户的FCB、并使共享计数器减1,并不会直接删除共享结点。
  47. 索引结点(对文件控制块FCB的优化)
  48. 其实在查找各级目录的过程中只需要用到“文件名”这个信息,只有文件名匹配时,才需要读出文件的其他信息。因此可以考虑让目录表“瘦身”来提升效率。
  49. 索引结点:除了文件名之外的文件描述信息都存在这
  50. 目录项中只包含文件名、索引结点指针,因此每个目录项的长度大幅减小
  51. 由于目录项长度减小,因此每个磁盘块可以存放更多个目录项,因此检索文件时磁盘I/O的次数就少了很多
    4.1.4 文件的物理结构(上)
  52. 连续分配
  53. 链接分配
  54. 隐式链接
  55. 显式链接
  56. 索引分配
    4.1.4 文件的物理结构(下)

4.1.5 文件存储空间管理

  1. 存储空间的划分与初始化
  2. 文件卷(逻辑卷)的概念
  3. 目录区与文件区
  4. 几种管理方法
  5. 空闲表法
  6. 空闲链表法
    i. 空闲盘块链
    ii. 空闲盘区链
  7. 位示图法
  8. 成组链接法
    4.1.6 文件的基本操作

4.1.7 文件共享

  1. 基于索引结点(硬链接)
  2. 索引结点中设置一个链接计数变量count,用于表示链接到本索引结点上的用户目录项数。
  3. 若count =2,说明此时有两个用户目录项链接到该索引结点上,或者说是有两个用户在共享此文件。若某个用户决定“删除”该文件,则只是要把用户目录中与该文件对应的目录项删除,且索引结点的count值减1。
  4. 若count>0,说明还有别的用户要使用该文件,暂时不能把文件数据删除,否则会导致指针悬空。
  5. 当count =0时系统负责删除文件。
  6. 基于符号链(软链接)
  7. Link类型的文件,记录了文件1的存放路径“C:/User1/aaa”类似于 Windows 操作系统的“快捷方式”
  8. 操作系统根据路径一层层查找目录,最终找到共享文件
  9. 即使软链接指向的共享文件已被删除,Link 型文件依然存在,只是通过Link型文件中的路径去查找共享文件会失败(找不到对应目录项)
  10. 由于用软链接的方式访问共享文件时要查询多级目录,会有多次磁盘I/O,因此用软链接访问
    4.1.8 文件保护
  11. 口令保护
  12. 口令一般存放在文件对应的FCB或索引结点中。用户访问文件前需要先输入“口令”,操作系统会将用户提供的口令与FCB中存储的口令进行对比,如果正确,则允许该用户访问文件
  13. 优点:保存口令的空间开销不多,验证口令的时间开销也很小。
  14. 缺点:正确的“口令”存放在系统内部,不够安全。
  15. 加密保护
  16. 使用某个“密码”对文件进行加密,在访问文件时需要提供正确的“密码”才能对文件进行正确的解密。
  17. 访问控制
  18. 在每个文件的FCB(或索引结点)中增加一个访问控制列表(Access-Control List, ACL),该表中记录了各个用户可以对该文件执行哪些操作。
  19. 精简的访问列表:以“组”为单位,标记各“组”用户可以对文件执行哪些操作。如:分为系统管理员、文件主、文件主的伙伴、其他用户几个分组。
  20. 当某用户想要访问文件时,系统会检查该用户所属的分组是否有相应的访问权限。

以上是关于操作系统文件管理的主要内容,如果未能解决你的问题,请参考以下文章

操作系统(4) -- 文件管理、IO管理

Linux文件系统的文件系统

文件系统及其管理

操作系统-文件系统文件系统

操作系统--文件管理1

常见的文件系统都有哪些?