操作系统 『10』文件系统

一、文件系统和文件

    文件系统是一种用于持久性存储(掉电也不会丢失😉)的系统抽象。操作系统中管理持久性数据的子系统,提供数据存储和访问功能。大多数计算机系统都有文件系统,Google 也是一个文件系统。
    文件是具有符号名,由字节序列构成的数据项集合。文件系统的基本数据单位,文件名是文件的标识符号。

二、文件系统的功能

(1)分配文件磁盘空间

  • 管理文件块(位置和顺序)
  • 管理空闲空间(位置)
  • 分配算法 (策略)

(2)管理文件集合

  • 定位:文件及其内容
  • 命名:通过名字找到文件
  • 文件系统结构:文件组织方式

(3)数据可靠和安全

  • 安全:多层次保护数据安全
  • 可靠
    持久保存文件
    避免系统崩溃、媒体错误、攻击等
文件属性

名称、类型、位置、大小、保护、创建者、创建时间、最近修改时间等。

文件头:文件系统元数据中的文件信息
  • 文件属性
  • 文件存储位置和顺序

三、文件描述符

    是个整型,是操作系统在打开文件表 j中维护的打开文件状态和信息j。

  • 需要元数据数据来管理打开文件
    (1)文件指针:
        指向最近的ws一次读写位置,每个进程分别维护最近的打开文件指针.
    (2)文件打开计数⏱:
        记录文件打开的次数。(文件是共享的,允许多个进程打开同一个文件。)当最后一个进程关闭了文件时,允许将其从打开文件表中移除。
    (3)文件磁盘位置:
        缓存数据访问信息。
    (4)访问权限:
        每个程序访问模式信息。

(磁盘访问的基本单位是扇区。)
(数据块是逻辑存储单元,而扇区是物理存储单元。)


    操作系统需要了解进程如何访问文件,有以下访问方式:
(1)顺序访问: 按字节依次读取
    大多数的文件访问都是顺序访问。
(2)随机访问:
    从中间读写。不常用,但是仍然十分重要,
(3)基于内容访问:通过特征。
    许多系统不提供此种访问方式,相反,数据库是建立在索引内容的磁盘访问上(需要高效的随机访问。)如:
在这里插入图片描述


文件内部结构
(1)无结构
单词、字节序列
… …
(2)简单记录结构
分列
固定长度
可变长度
… …
(3)复杂结构
格式化的文档(如 PDF)
可执行文件
… …


语义一致性
    多个进程如何同时访问共享文件?使得访问高效、简洁。
Unix 文件系统(UFS)语义:
    共享文件指针允许多用户同时读取和写入文件。
    对打开文件的写入内容立即对其他打开同一文件的其他用户可见。
会话语义:写入内容只有当文件关闭时可见。

四、目录

    目录是一类特殊的文件。

  • 典型操作
    搜索文件
    创建文件
    删除文件
    重命名文件
    遍历路径

    操作系统应该只允许内核修改目录,确保映射的完整性,应用程序通过系统调用访问目录。


    目录的实现可以用线性列表,包含了指向数据块的指针,编程简单、执行耗时;也可以用哈希表,减少目录搜索的时间,但是可能会有冲突——两个文件的哈希值相同。


挂载:
    一个文件系统需要先挂载才能被访问。
    一个未挂载的文件系统被挂载在挂载点(挂载点在用户看来是一个目录,这个目录比较特别,它代表文件系统根的起始位置。)上。

五、文件别名

    文件别名:多个文件名关联同一个文件,即 一个文件有多个名字。
(1)硬链接: 多个文件项指向一个文件,文件是放在磁盘上的。
(2)软链接: 以 “快捷方式” 指向其他文件。通过存储真实文件的逻辑名称来实现,即 文件里的内容存的是另一个文件的路径名。

六、文件系统分类

  • 磁盘文件系统
        文件存储在存储设备上,如 磁盘。例如 FAT、NTFS、ext 2/3、ISO9600 等。
  • 数据库文件系统
        文件根据其特征可被寻址。 例如 WinFS。
  • 日志文件系统
        记录文件系统的修改 / 事件。如 journaling file system。
  • 网络/分布式文件系统
        例如:NFS、AFS、GFS。
        网络意味着延迟大、不可靠、访问时间不可控等特点。
        分布式客户端和客户端上的用户辩别起来很复杂,而且还有一致性的问题。
  • 特殊/虚拟文件系统
        

七、虚拟文件系统 (VFS)

    操作系统把复杂的东西抽象成简单的接口,提供给用户,这层接口就是 open、read、write 、close 等,通过虚拟文件系统 对所有不同文件系统进行抽象
    屏蔽底层具体文件系统的差异性。

在这里插入图片描述

  • 文件系统基本数据结构
    (1)文件卷控制块 (Unix: “superblock”)
        包含文件系统详细信息,每个文件系统一个,包含块、块大小、空余块、计数/指针等。
    (2)文件控制块(Unix: “vnode” or “inode”)
        每个文件一个,包含文件详细信息,如访问权限、拥有者、大小、数据块位置等。
    (3)目录项 (Linux: “dentry”)
        每个目录项一个(目录和文件),将目录项数据结构及树型布局编码成树型数据结构,包括指向文件控制块、父目录、子目录等。
    在这里插入图片描述

八、文件分配

  • 连续分配
  • 链式分配
  • 索引分配
        不展开讲了,详见数据库索引。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值