




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本章主要目标 第10章Linux文件系统 10 1Linux文件系统的特点与文件类别10 2Linux的虚拟文件系统10 3文件系统的注册和挂装10 4进程与文件系统的联系10 5ext2文件系统 10 6块设备驱动10 7字符设备驱动本章小结习题 10 1Linux文件系统的特点与文件类别 10 1 1特点10 1 2文件类型 返回 10 1 1特点 Linux文件系统的树形目录结构Linux文件系统的特点 返回 Linux文件系统的树形目录结构 文件系统被组织成树形结构之后 文件名由路径名给出 例如在上图中 usr users shi b exe 确定了文件b exe在文件系统中的位置 另外 路径名也可从正在执行进程的当前目录开始指定 例如 若在上图中的当前目录是zhang的话 路径名a exe与 usr users zhang a exe具有相同的效果 返回 Linux文件系统的特点 文件是无结构的字符流式文件 文件可以动态地增长或减少 文件数据可由文件拥有者设置相应的访问权限而受到保护 外部设备 例如终端用磁带 磁盘设备 键盘等都被看作文件 在文件系统中 设备文件占据着文件系统目录结构中相应的位置 用户程序按与存取其他文件时所使用的系统调用和语法来读 写设备文件 返回 10 1 2文件类型 Linux文件可分为普通文件 目录文件和设备文件 包括字符设备文件和块设备文件 有名管道 FIFO 软连接和Unix域套接字6类 返回 普通文件 普通文件即存储用户和系统的有关数据和程序的文件 它是无结构 无记录概念的字符流式文件 返回 目录文件 目录文件则是由文件系统中的各个目录所形成的文件 这种文件在形式上同普通文件一样 由系统将其解释成目录 在 inux系统中 一个目录文件由多个目录项组成 而每个目录项则由文件名及指示相应的文件说明信息表 i节点 的标识符id组成 普通文件和目录文件都是无结构 无记录概念的字符流式文件 返回 设备文件 设备文件与普通文件和目录文件不同 它除了在目录文件和文件说明信息表 也就是i结点中占据相应的位置之外 并不占有实际的物理存储块 因此 对设备文件的读 写操作将实际上变为对设备的操作 而对设备文件的保护也将变成对设备的保护 例如 cp dev ttyterminalread把在终端上敲进的字符 设备文件 dev tty是用户终端 读入 并把它们复制到文件terminalread上 返回 10 2Linux的虚拟文件系统 10 2 1虚拟文件系统VFS框架10 2 2Linux虚拟文件系统的数据结构 返回 10 2 1虚拟文件系统VFS框架 VFS为所有文件系统提供统一接口VFS是Linux内核中的一个软件层 用于给用户空间的程序提供文件系统接口 VFS由面向对象的思想发展来的 VFS提供一个抽象基类 由这个基类派生出的子类支持具体的文件系统 当应用程序进行文件系统调用时 内核的文件子系统将首先调用VFS的相应函数 该函数先处理与设备无关的操作 然后根据VFS结构以及它的inode节点提供的信息 调用真正的文件系统中对应的函数 处理与设备相关的操作 返回 VFS支持的文件系统基于磁盘的文件系统 如ext2 ext3 reiserfs jfs xfs等 UNIXSystemV的文件系统 微软的MS DOS vfat及ntfs ISO9660光盘文件系统等 基于网络的文件系统 如NFS SMB OCFS 特殊的文件系统 如proc sysfs 10 2 2Linux虚拟文件系统的数据结构 1 超级块super block 资源管理结构filsys2 索引节点inode 3 文件file4 目录项 返回 1 VFS的超级块super block 超级块操作 2 索引节点inode UNIX文件系统采用SFD和BFD方式管理文件 其中SFD称为符号文件目录 存放文件名以及指示该文件的文件说明信息表标识符id 由文件名和指示文件说明信息表的标识符id称为目录 把存放文件说明信息和相应标识符的BFD称为i节点 i节点又分为磁盘i节点和内存活动i节点 其中磁盘i节点以静态形式存放文件说明信息 磁盘i节点dinode的结构 structdinode 文件模式 与该i节点联接的文件数 用户标识 文件大小 存取权限 同组用户标识 该文件所用物理块的块号 文件存取时间 修改时间和建立时间 在UNIXSystem 中磁盘i节点的项占用64个字节 因此 一个长512个字节的块可存放8个i节点项 系统在对文件进行各种操作时 为了减少设备的启动次数以及提高操作速度 总是把相应的磁盘i节点复制到内存的特定区域 内存i节点表中 内存i节点结构inode除了包含磁盘i节点结构的各项之外 还包含了当前打开文件的状态信息 例如 内存i节点的状态 包括该节点是否已被锁住 是否有进程等待访问该i节点等 返回 3 目录项 UNIX系统的目录项由文件名和磁盘i节点标识符id组成 其中文件名长度占14个字节 标识符id占2个字节 从而 在一个512字节的磁盘块中可以存放32个目录项 返回 4 系统打开文件表和用户打开文件表 在UNIX系统中 文件系统主要描述程序和数据的静的概念 而进程则反应这些程序和数据的动的特性 从用户的角度来看 用户程序可使用对文件系统进行操作的系统调用来完成 但是 从系统内部的角度来说 则需要有相应的数据结构来记录和控制打开文件的用户进程以及记录和控制那些共享同一文件的用户进程 为此UNIX系统设置了用户打开文件表和系统打开文件表 用户打开文件表 用户打开文件表一般放在user数据结构中 使用用户打开文件表 一个进程可同时打开20个左右的文件 可打开的文件表项u ofile中含有打开文件的描述符fd 以及系统打开文件表的入口指针fp等 系统打开文件表 系统打开文件表主要用来指明打开同一文件的不同进程和不同进程所使用的不同打开路径 以及这些不同进程和不同打开路径所对应的读写指针 因此可以认为系统打开文件表是i节点表的补充 系统打开文件表的每一项包括文件标识 文件访问计数 文件读写指针和文件内存i节点入口指针和访问标志等 其中文件标识与用户打开文件中fp相连 文件访问计数指示共享该文件的进程数 当文件访问计数为0时 则表明已没有用户进程在使用该文件 从而可以释放有关资源 文件读写指针则分别指出各进程在同一文件中的读写位置 返回 资源管理结构 i节点以及用户打开文件表和系统打开文件表的关系 在上图中 用户进程通过用户打开文件表中的文件描述符fd 找到系统打开文件表的入口地址fp 再由系统打开文件表中对应项找到相关i节点的入口指针 从而得到操作该文件所需的控制信息 有了i节点中的控制信息 文件系统就可对磁盘数据区中的文件进行所必需要的操作 另外 上图给出了两个不同用户进程共享同一文件的例子 这两个进程通过各自不同的文件描述符fdA和fdB 找到系统打开文件表中不同的对应项 并通过系统打开文件表中的i节点指针而找到同一个内存i节点 从而完成文件共享 返回 10 3资源管理和地址映射 10 3 1磁盘i节点的分配与释放10 3 2内存i节点的分配与释放10 3 3系统打开文件表的分配与释放10 3 4地址映射 返回 UNIX文件系统的资源管理包括空闲磁盘块的分配与回收 i节点和系统打开文件表的分配与回收等 关于空闲磁盘块的分配与回收 UNIX系统采用成组链法来管理空闲区 本节主要介绍磁盘 节点和内存 节点以及系统打开文件表的分配和释放方法 10 3 1磁盘i节点的分配与释放 磁盘 节点的分配ialloc算法磁盘 节点的释放 ifree算法 返回 磁盘 节点的分配 当一个新文件被建立时 在给该文件分配磁盘存储区之前 应为该文件分配存放该文件说明信息的磁盘 节点 反之 当从文件系统中删除某个文件时 则要首先删除它的磁盘 节点项 UNIXSystem 中的算法ialloc被用来为新建立的文件分配磁盘 节点项 文件系统包含一个 节点线性表 且每个磁盘 节点被顺序编号 节点线性表中存放这些被编号的 节点的类型字段 如果一个 节点的类型字段为 则说明这个节点是空闲的 显然 当一个进程需要一个新的 节点时 它可以通过搜索 节点线性表得到它所要得到的 节点项 为改善系统性能 UNIXSystem 在资源管理结构filsys中设置了一个磁盘 节点数组 该数组在系统初启时随filsys结构一起被复制到内存的特定区中 算法ialloc首先检查是否有其他进程在对磁盘 节点数组进行操作 如果有其他进程正在对磁盘 节点数组进行操作 则当前进程等待直到其他进程操作结束 在没有其他进程对磁盘 节点数组进行操作且磁盘 节点数组非空时 系统从 节点数组中分配一个 节点给新创建的文件 然后 修改 节点数组指针 紧接着 ialloc调用内存 节点分配算法为新建立的文件分配内存 节点后将内存 节点初始化 在对内存 节点进行了初始化之后 再将内存 节点的内容写回到磁盘 节点中并修改磁盘空闲 节点的计数 有关ialloc算法 还有几个问题需要说明 首先是 节点数组中的 节点号排列方法 系统从磁盘把 节点按从小到大的顺序读进i节点数组 如下图 其次是在系统为新建立的文件分配磁盘 节点和内存 节点之后 要检查所分配的 节点是否是真正的空闲 节点 如果不是空闲 节点 则要放弃本次分配 至于为什么会出现分配到已分配 节点的情况 则主要是由于资源共享引起的 返回 ialloc算法 ialloc 输入 文件系统设备号 文件属性 联接该文件的目录数输出 上锁的磁盘 节点beginifi结点数组上锁then等待开锁fiif 节点数组空then锁住i结点数组为搜索空闲 节点取铭记 节点搜索磁盘 将空闲 节点置入 节点数组为i结点数组解锁 fi从 节点数组中分配一 节点调用iget分配内存 节点ifiget返回的内存 节点为非空闲 节点then把该 节点的内容写回磁盘 释放该 节点 重新申请磁盘 节点else将iget返回的内存 节点初始化将内容写回磁盘 节点空闲 节点数减 fiend 返回 磁盘 节点的释放过程ifree 磁盘 节点的释放过程ifree是ialloc的反过程 但相对来说 ifree比较简单 ifree首先把空闲 节点数加 如果超级块的 节点数组未被锁住且有空表项 则ifree把释放的 节点号放入 节点数组后返回 如果 节点数组已处于满额状态 则ifree将新释放的 节点与铭记 节点相比校 如果新释放的 节点小于铭记 节点 则ifree将新释放的 节点作为铭记 节点 并丢掉原来的铭记 节点 否则丢掉新释放的 节点 为什么 如果超级块 节点数组是被锁住的 则此时系统正在进行磁盘 节点搜索工作 ifree直接返回 以避免竞争条件 有可能漏掉 节点 返回 10 3 2内存i节点的分配与释放 内存 节点的分配过程iget内存 节点的释放 过程iput 返回 内存 节点的分配 当系统打开文件并对其进行搜索 读写等操作时 为相应的文件分配一个内存 节点 以便把对应磁盘 节点信息复制到内存 一般来说 当系统创建一个文件之后 如果未关闭该文件的话 则该文件已拥有了相应的内存 节点 此时 如果用户要对该文件进行相应的操作的话 系统只需增加已有内存 节点的访问计数和做互斥处理即可 内存 节点的分配由过程iget完成 返回 过程iget 首先 iget根据给定的磁盘 节点号从内存 节点数组中搜索相应的内存 节点 如果该节点已在内存 则只需增加引用计数并锁定该 节点即可 否则 应从内存 节点数组中分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内部承包餐厅合同范本
- 农耕场地租赁合同范本
- 2025年人事劳资考试题目及答案
- 某市初三数学模拟考试试题汇编
- 农场招募出租合同范本
- 供暖设备代理合同范本
- 职场新员工入职培训计划及流程设计
- 2025年增城期末考试试题道法及答案
- 仓储出租转让合同范本
- 仓库租赁订金合同范本
- 钻井行业材料管理制度
- 个人私教合同样本
- 2025年中国互联网+城轨交通信息化市场全景评估及发展趋势研究预测报告
- 妊娠合并系统性红斑狼疮护理
- 物业管理公司财务管理制度
- 工时定额考核实施方案非常好
- 2025届高考语文复习:赏析小说和散文中重要词语和句子的含义(高考新题型)课件
- 社会变迁下家庭教育的挑战与机遇
- 2025年湖北三新供电服务有限公司招聘笔试参考题库含答案解析
- 公务员酒后驾驶检讨书范文
- 急救知识试题+参考答案
评论
0/150
提交评论