数据项、记录和文件
数据项
➢ 基本数据项:描述一个对象的某种属性,又称字段
➢ 组合数据项:由若干个基本数据项组成记录
➢ 记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。
➢ 关键字:唯一能标识一个记录的数据项
➢ 如:学号、学号+课程号
文件:具有文件名的一组相关元素的集合
有结构文件(记录)、无结构文件(字符流)
在文件系统中文件是最大的数据单位,描述了一个对象集
文件的主要属性
➢ 文件类型
➢ 文件长度
➢ 文件的物理位置
➢ 文件的建立时间
扩展名:文件名后面的若干个附加字符
按用途分类
➢ 系统文件
➢ 用户文件
➢ 库文件
按文件中数据的形式分类
➢ 源文件
➢ 目标文件
➢ 可执行文件
按存取控制属性分类
p 只执行文件
p 只读文件
p 读写文件
按组织形式和处理方式分类
p 普通文件
p 目录文件
p 特殊文件
文件系统的层次结构
文件系统的功能
➢ 对文件存储空间的管理
➢ 对文件目录的管理
➢ 用于将文件的逻辑地址转换为物理地址的机制
➢ 对文件读和写的管理
➢ 对文件的共享和保护
与文件系统有关的软件
➢ I/O控制层:文件系统最底层,设备驱动程序层
➢ 基本文件系统层:处理内存和磁盘之间数据块的交换
➢ 基本I/O管理程序:完成与磁盘I/O有关的事务
➢ 逻辑文件系统:处理与记录和文件相关的操作
文件操作
最基本的文件操作:
➢ 创建文件、删除文件、读文件、写文件。
➢ 设置文件的读/写位置。
文件的“打开”和“关闭”操作:
➢ 打开open:系统将文件从外存拷贝到内存打开文件表的一个表目中。
➢ 关闭close:把文件从打开文件表的表目中删除。
其他文件操作:
➢ 重命名、改文件拥有者、查询文件状态等。
➢ 创建/删除目录。
文件结构
➢ 文件的逻辑结构:从用户观点所观察的文件组织形式
➢ 文件的物理结构:文件的存储结构,指系统将文件存储在外存上所形成的一种存储组织形式
p 不仅与存储介质的存储性能有关
p 也与所采用的外存分配方式有关
文件的逻辑结构和物理结构,都影响文件的检索速度
按文件是否有结构分类
➢ 有结构文件(记录式文件)
◆ 定长记录
◆ 变长记录
➢ 无结构文件(流式文件)
◆ 源程序、可执行文件、库函数
有结构文件按文件的记录方式分类
➢ 顺序文件
➢ 索引文件
➢ 索引顺序文件
顺序文件的排列方式
串结构:按存入时间的先后排序,记录间的顺序与关键字无关
➢ 检索比较费时
顺序结构:指定一个字段为关键字,所有记录按关键字排序
➢ 检索时可利用有效的查找算法,折半查找法、插值查找法、跳步查找法等
顺序文件的优缺点
优点:
◼ 有利于大批记录读写
◼ 存取效率最高
◼ 可存储在顺序存储设备(磁带)上
缺点
◼ 查找或修改单个记录:差
◼ 增加或删除一个记录:难
隐式寻址方式(顺序访问)
◼ 定长记录:
◼ 变长记录:
显式寻址方式(直接/随机访问)
◼ 通过文件中记录的位置
➢ 定长记录:
➢ 变长记录:
◼ 利用关键字
索引文件
按关键字建立索引
➢ 为变长记录文件建立一张索引表
➢ 索引表按关键字排序
➢ 实现直接存取
具有多个索引表的索引文件
➢ 为顺序文件建立多个索引表
➢ 为每一个可能成为检索条件的域配置一张索引表
索引顺序文件
有效克服了变长记录文件不便于直接存取的缺点。
保留了顺序文件的关键特征:记录按关键字的顺序组织。
新增2个新特征:
➢ 引入文件索引表:实现随机访问。
➢ 增加溢出文件:记录新增、删除和修改的记录。
直接文件:
➢关键字本身决定了记录的物理地址。
➢键值转换:关键字到记录物理地址的转换。
哈希文件:
➢利用Hash函数将记录键值转换为记录的地址。
文件目录
目录实现了对文件的有效管理
目录是一种数据结构,用于标识文件及其物理地址
对目录管理的要求
➢ 实现“按名存取”
➢ 提高对目录的检索速度
➢ 文件共享
➢ 允许文件重名
文件控制块(FCB):管理和控制文件的数据结构,与文件一一对应
文件目录:文件控制块的集合,即一个文件控制块就是一个文件目录项
目录文件:文件目录也被看做是一个文件
文件控制块包含信息
➢ 基本信息类:文件名、文件物理位置、文件逻辑结构、文件物理结构
➢ 存取控制信息类:文件主的存取权限、核准用户的存取权限以及一般用户的存取权限
➢ 使用信息类:文件的建立日期和时间、文件上一次修改的日期和时间及当前使用信息
索引结点的引入:减少磁盘访问次数
➢ 把文件名与文件描述信息分开,文件描述信息用索引结点(iNode)保存,简称为i节点(UNIX)
磁盘索引结点:存放在磁盘上的索引结点
➢ ①文件拥有者标识符,②文件类型, ③文件存取权限, ④文件物理地址,⑤文件长度, ⑥文件连接计数,⑦文件存取时间
内存索引结点:存放在内存上的索引结点
➢ ①索引节点编号,②状态, ③访问计数, ④文件所属文件系统的逻辑设备号,⑤链接指针
目录结构的组织,是设计好文件系统的重要环节
➢ 关系到文件系统的存取速度
➢ 也关系到文件的共享性和安全性
目录结构和文件都驻留在磁盘上。
单级文件目录
所有用户的文件都在同一目录中
最简单的文件目录
目录项:
◼ 文件名、扩展名、文件长度、文件类型、物理地址、文件说明以及其他文件属性
缺点:
◼ 查找速度慢
◼ 不允许重名
◼ 不便于实现文件共享
两级文件目录
每个用户有自己的目录结构
特点:
◼ 提高了检索目录的速度
◼ 不同用户可以有相同的文件名
◼ 不同用户可以使用不同文件名访问同一个共享文件
◼ 不便于共享文件
路径名 – 从根目录到任何数据文件的通路
➢绝对路径名:从根目录开始的路径名
➢相对路径名:从当前目录开始的路径名
无环图目录
目录查询技术
线性检索法:
◼ 顺序检索法。
◼ 查找/usr/ast/mbox的过程。
Hash方法:
◼ 系统利用用户提供的文件名,将之变换为文件目录的索引值,再利用该索引值到目录中去查找。
◼ 模式匹配(* ?)时,无法使用Hash方法。
◼ 处理冲突使用有效规则。
基于有向无环图实现共享
有向无环图:树形目录中,允许一个文件有多个父目录
利用索引结点实现共享,设置链接计数count
利用符号链接实现共享
基本思想:允许一个文件有多个父目录,但其中仅有一个作为主父目录,其它的都是通过符号链接方式与之相链接。
➢ Linux系统中的创建符号链接命令:ln –s 源文件 目标文件
优点:
➢ 不会发生在文件拥有者删除一个共享文件后留下一个悬空指针的情况。
缺点:
➢ 每次访问共享文件时都可能要多次地读盘,这使每次访问文件的开销甚大,且增加了启动磁盘的频率。
保护域
访问权
◼ 一个进程能对某对象执行操作的权利,称为访问权
◼ 表示:(对象名,权集),如(F1 , {R/W})
保护域
◼ 进程对一组对象访问权的集合,称为保护域
◼ 如进程和域一一对应,则称为静态联系方式,该域称为静态域
◼ 如进程和域是一对多关系,则称为动态联系方式
访问矩阵的概念
◼ 用矩阵来描述系统的访问控制
◼ 行代表域;列代表对象;每一项为访问权
具有域切换权的访问控制矩阵
◼ 能够将进程从一个保护域切换为另一个域
◼ 如,由于域D1和D2所对应的项目中有一个S(即切换权),则允许在域D1中的进程切换到域D2中
◼ 复制权
➢ 利用复制权将某个域所拥有的访问权access(i,j)扩展到同一列的其他域中
◼ 所有权
➢ 利用所有权(owner right)能增加某种访问权,或者能删除某种访问权
➢ 图中的“O”表示所有权
图(b)所示为:在域D1中运行的进程删除了在域D3中运行的进程对文件F1的执行权;在域D2中运行的进程增加了在域D3中运行的进程对文件F2和F3的写访问权。
◼ 控制权
➢ 用于改变矩阵内同一行(域)中的各项访问权,亦即,用于改变在某个域中运行的进程对不同对象的访问权
访问矩阵:稀疏矩阵
访问控制表ACL
➢ 对访问矩阵按列(对象)划分,为每一列建立一张访问控制表ACL,删除空项,由(域,权集)组成
➢ 当对象是文件时,ACL存放在文件的文件控制表中访问权限表
➢ 对访问矩阵按行(域)划分,为每一行建立一张访问权限表
➢ 当对象是文件时,访问权限表用来描述一个用户对文件的一组操作