计算机操作系统笔记(7)
第七章 文件管理
前述:
操作系统的功能:
操作系统管理磁盘的两步:化整为零、化零为整
(本章是关于化零为整的)
化零为整的大致步骤:从目录找文件起始地址,从磁盘块中依次找到零散分布的文件数据,把零散的数据拼接起来
7.1文件和文件系统
OS系统通过文件系统组织和管理在计算机中存储的大量程序和数据
数据项、记录和文件
*数据项:
基本数据项:可命名的最小逻辑单位
*记录:一组相关数据项的集合
文件:
- 概念:具有文件名的一组相关信息的集合
- *文件属性:文件类型、文件长度、物理位置、建立时间等
三者关系:
文件类型和系统模型
*文件类型:
- 按用途分类:系统文件、用户文件、库文件
- 按数据形式分类:源文件、目标文件、可执行文件
- 按存取控制方式分类:只执行(E)、只读(R)、读写(R/W)
文件系统模型
- 概念:文件和对文件进行操纵和管理的软件集合
- 三层:文件(对象及属性)-> 文件操作 -> 文件访问接口
- 管理的对象及属性:文件、目录、物理存储空间
- *对对象操纵和管理的软件集合:
1)文件存储空间的管理
2)文件目录管理
3)逻辑地址转物理地址的机制
4)文件读写管理
5)文件共享与保护等功能 - 文件系统接口:命令接口、程序接口
文件操作
- 对记录操作
- 对文件操作:创/删/读/写等
- 打开关闭操作:
打开:将文件的属性从外存拷贝到内存打开文件表的一个表目中,并将该表目的索引返回给用户 - 其他操作
7.2文件的逻辑结构
两种形式的文件结构:
- 逻辑结构:用户角度所见
- 物理结构:实现角度所见
文件的逻辑结构
基本要求:
- 有助提高文件检索速度
- 方便修改文件
- 降低存放在外存的存储费用
按结构划分:
- 无结构文件(流式文件):以字节为单位
- 有结构文件(记录式文件):
定长记录:方便对文件进行处理和修改,检索速度快
变长记录:不便对文件进行处理和修改,检索速度慢
按组织方式分类:
- 顺序文件:通常是定长记录
- 索引文件
- 索引顺序文件
*顺序文件
顺序文件的排列方式:串结构(按时间先后顺序)、顺序结构(按指定关键字排序)
顺序文件的优缺点:
优:适于批量存取
缺;在交互场合下,性能差
记录寻址
隐式寻址方式:
- 对于定长记录的顺序文件:容易确定下一记录的逻辑地址
- 对于变长记录的顺序文件:需要读出记录的长度
*显式寻址方式:可用于定长记录的文件,实现直接或随机访问
索引文件
按关键字建立索引:为变长记录文件建立
- 表内容:
索引号:对应文件的每个记录
长度:记录的长度
指针:指向记录 - 特点:按关键字排序,表本身是定长记录的顺序文件,因此能实现直接存取(相当于变长记录搜索变为定长)
索引顺序文件
特征:
- 保留了顺序文件的关键特征
- 引入文件索引表,能随机访问文件
- 增加了溢出文件,用来记录增、删、改的记录
一级索引顺序文件建立方法:
- 将变长记录顺序文件中的所有记录,分为若干个组
- 为顺序文件建立一张索引表,并为每组中的第一个记录,在索引表中建立一个索引项,其中含有该记录的关键字和指向该记录的指针
*直接文件和哈希文件
略
7.3文件目录
概念:文件名匹配外存物理位置,使用户按名存取
功能:
- 实现“按名存取”
- 提高对目录的检索速度
- 文件共享
- 允许重名
文件控制块和索引结点
目录文件:内容为文件目录
文件目录:文件控制块的有序集合
文件控制块FCB:分为内存FCB和外存FCB
- 基本信息:文件名、文件物理位置、文件逻辑结构、文件物理结构
- *存取控制信息
- *使用信息
(PCB只有内存状态,FCB有内外存状态,关机后可保存在外存中)
索引结点:
- 引入:
FCB所有信息放在目录表会占用较大空间,“瘦身”的文件目录表只有文件名和索引结点的结点号(先查找文件名再调入结点) - 索引结点:
存放FCB信息,实现离散存放目录结构
- 磁盘索引结点:存放在磁盘上的索引结点
每个文件有唯一的磁盘索引结点
连接(共享)计数:磁盘索引中的内容之一,表明在本文件系统中所有指向该文件名的指针计数 - 内存索引结点:存放在内存中的索引结点
当文件被打开时,要将磁盘索引结点的内容部分或全部子集拷贝到内存,并增加其它内容(编号状态等),以便以后使用
*小结:
目前实现了文件目录的“按名存取”、“提高检索速度”功能
目录结构
单级目录结构:
- 概念:整个文件系统只建立一张目录表
- 创建文件:先查看有无同名,无则加入目录表
- 删除文件:找到相应的目录项,回收该文件的块,清除占用目录项
- 特点:简单,但速度慢/不允许重名/不便于共享(不能用不同名字访问同一文件)
*两级目录结构:
- 概念:主文件目录+多个单独的用户文件目录
- 特点:提高了速度、可重名、可共享(但仍不方便)
树形目录结构(多级目录):
- 概念:一目录文件中的目录项可为:目录文件、数据文件
- 路径名和当前目录:
路径名:/B/F/J
当前目录(工作目录):相对路径名 - *目录操作:创建、删除、改变、移动、链接等
目录查询技术
线性检索法(顺序检索法):
- 过程:由文件名找到目录项(FCB)(或文件名->索引结点->盘块号->启动磁盘->驱动程序)
- 例:查找/usr/ast/mbox
7.4文件共享
文件共享:
- 概念:不同用户可以使用同一文件,文件共享可以节省外存空间
- 文件共享的两种方法:
1)用户直接通过路径名来访问共享文件
2)对需要共享的文件进行链接
链接:
- 概念:一个共享文件可以有多个父目录(可同属于多个用户)
- 利用链接共享文件的好处:
1)方便用户
2)防止共享文件被删除:只有在count(共享文件的链接数)为0时,才能被删除
3)加快检索速度
链接的基本实现:
- 概念:拷贝共享文件的物理地址到所需的用户目录中
- 弊端:该共享文件的某个父目录对其添加新内容时,新增的盘块只会出现在该父目录中,其他用户目录是不可见的(未被了共享的目的)
基于索引结点的链接:
- 概念:目录项只设置文件名及指向相应索引结点的指针,而索引结点存放文件的属性信息
- count:记录共享该文件的用户数
- 存在问题:当count≠0时,文件主不能删除文件
如果删除了该文件,其它共享用户并不知晓,导致它们相应的指针指向的可能不是原来的内容,造成指针悬空
基于符号链接:
- 概念:只有文件主有指向其索引结点的指针,其它共享该文件的其它用户只有该文件的路径名
- 好处:解决了悬空指针的问题(文件主删除文件后其他用户会找不到文件而访问失败顺便将符号链删除)
- 缺点:需要消耗一定的时间开销(存放的是路径)以及一定的空间开销(存放路径的符号链也是一个文件,也需要配置一个索引结点)
7.5文件保护
文件保护的基本概念:
- 通过存取控制机制,防止人为因素造成的文件不安全性
- 通过磁盘容错技术,防止由磁盘部分的故障所造成的文件不安全性
- 通过“后备系统”,防止由自然因素所造成的不安全性
保护域
访问权:
- 概念:一个进程能对某对象执行操作的权力
- 表示:对象名+权集
例:(F1,{R/W})
保护域(域):
- 概念:域是进程对一组对象访问权的集合,进程只能在指定域内执行操作
(域规定了进程所能访问的对象和能执行的操作)
进程和域间的静态联系方式:
- 特点:
一个进程只联系一个域
进程可用的资源是固定的,称为“固定域” - 缺点:进程运行时受限于同一个域,这将会赋予进程的访问权超过了实际需要
(不同时期所需的对象和权限挤在一个域中)
进程和域间的动态联系方式:
- 特点:
一个进程可联系多个域
进程运行分多个阶段,每个阶段联系一个域,满足实际需要 - 增设:要增设保护域切换功能
访问矩阵
基本访问矩阵:
- 概念:描述系统的访问控制的矩阵
行代表域,列代表对象,每一项由一组访问权组成
access(i,j)定义了在域Di中执行的进程能对对象Qj所施加的操作集 - 访问权:访问矩阵中的访问权通常由资源拥有者/管理者决定
具有域切换权的访问矩阵:
- 概念:在基本访问矩阵中增加了几个对象,分别作为访问矩阵中的几个域
- 作用:进程可从一个保护域切换到另一保护域
(仅当进程有切换权时,即s∈access(i,j))
访问矩阵的修改
实现:在访问权中增加拷贝权、拥有权、和控制权的方法
*拷贝权:
- 概念:可将某个域中所拥有的访问权扩展到同一列中其他的域中
- 表达:带*即该域对相应的对象有拷贝权
- 限制拷贝:拷贝权本身不可复制(传递)
*所有权:
- 概念:若在access(i,j)中包含访问权,则在域Di上运行的进程,可以增加或删除其在j列上任何项中的访问权
- 表达:O代表所有权
*控制权:
- 概念:用于改变矩阵内同一行(域)中的各项访问权
若access(i,j)中包含了控制权,则在Di中运行的进程可以删除在域Dj中运行进程对各对象的任何访问权
访问控制矩阵的实现
概念:访问矩阵实际是稀疏矩阵,按行和列划分,只存非空元素,即形成访问控制表和访问权限表
访问控制表(ACL):
- 概念:对访问矩阵按列(对象)划分,为每一列建立一张访问控制表,其中每张表不包含空项
- 组成:由一有序对(域,权集)组成
F0:(Jan,,RWX),括号内的ACL项指定了用户号、用户组号、操作权限,其中代表全部 - 存放点:放在文件控制表或文件的索引结点中
- 特点:可以禁止某些特定用户访问某个对象,同时允许其他所有用户访问
- 9位ACL表:在UNIX里,文件为文件主、文件主所在用户组、其他用户提供了三位RWX
访问权限表:
- 概念:对访问矩阵按行(域)划分,为每一行建立一张访问权限表,其中每张表不包含空项
(描述一个用户对每个文件所能执行的一组操作) - 组成:有很多项(对应多个对象),每项由类型、权力、对象指针组成
类型说明对象类型、权力指对该对象所拥有的访问权限
*目前大多数系统都同时采用访问控制表和访问权限表
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律