Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
第 11 章 文 件 管 理
11.1 文 件 概 念<br />
信 息 是 计 算 机 系 统 中 的 重 要 资 源 。 操 作 系 统<br />
中 的 一 个 重 要 组 成 部 分 。 文 件 系 统 , 就 负 责 信<br />
息 的 组 织 、 存 储 和 访 问 。<br />
文 件 系 统 的 功 能 就 是 提 供 高 效 、 快 速 和 方 便<br />
的 信 息 存 储 和 访 问 功 能 。
11.1 文 件 概 念<br />
文 件 : 记 录 在 外 存 上 的 相 关 信 息 的 具 有 名 称 的 集<br />
合 。( 文 件 是 具 有 符 号 名 的 数 据 项 的 集 合 )。 文<br />
件 名 是 文 件 的 标 识 符 号 。 文 件 包 括 两 部 分 :<br />
文 件 体 : 文 件 本 身 的 信 息 ;<br />
文 件 说 明 : 文 件 存 储 和 管 理 信 息 ; 如 : 文 件 名 、 文 件<br />
内 部 标 识 、 文 件 存 储 地 址 、 访 问 权 限 、 访 问 时 间 等 ;<br />
用 文 件 表 示<br />
程 序<br />
数 据<br />
数 字 的<br />
字 符 的<br />
二 进 制
域 : 基 本 数 据 单 元 。 包 含 : 值 和 长 度 ( 可 变 长 度 / 固<br />
定 长 度 )<br />
记 录 : 一 组 相 关 的 域 。 如 : 一 个 雇 员 记 录 : 名 字 、<br />
职 工 号 、 工 作 单 位 等 。<br />
域 长 度 可 变 , 域 数 据 可 变 ( 记 录 有 一 个 长 度 域<br />
)<br />
文 件 管 理 系 统 : 文 件 系 统 是 操 作 系 统 中 管 理 文 件 的<br />
机 构 , 提 供 文 件 存 储 和 访 问 功 能 。<br />
目 录 : 目 录 是 由 文 件 说 明 索 引 组 成 的 用 于 文 件 检 索<br />
的 特 殊 文 件 。
11.1.1 文 件 属 性<br />
文 件 属 性<br />
名 字 – 文 件 名 称 唯 一 , 以 用 户 容 易 读 取 的 形 式 加 以<br />
引 用<br />
标 识 符 - 标 识 文 件 系 统 内 文 件 的 唯 一 标 识 , 一 般 为<br />
数 字 , 对 用 户 不 可 读<br />
类 型 – 被 支 持 不 同 类 型 的 文 件 系 统 所 使 用<br />
位 置 – 指 向 设 备 和 设 备 上 文 件 位 置 的 指 针<br />
大 小 – 文 件 当 前 大 小 ( 字 节 、 字 、 块 )<br />
保 护 – 决 定 谁 能 读 、 写 、 执 行 等 的 访 问 控 制 信 息<br />
时 间 、 日 期 和 用 户 标 识 – 文 件 创 建 、 上 次 修 改 、 和<br />
上 次 访 问<br />
所 有 文 件 的 信 息 都 保 存 在 目 录 中 。
11.1.2 文 件 操 作<br />
创 建 文 件<br />
写 文 件<br />
读 文 件<br />
在 文 件 内 定 位<br />
删 除 文 件<br />
截 短 文 件 : 仅 仅 删 除 文 件 内 容 而 保 留 其 属 性 。
11.2 文 件 管 理 系 统 - 目 标<br />
文 件 管 理 系 统 是 一 组 系 统 软 件 , 为 使 用 的 用 户 和 应 用<br />
程 序 提 供 服 务 。<br />
文 件 管 理 系 统 是 用 户 或 应 用 程 序 访 问 文 件 的 唯 一 方 式 , 它 使 得<br />
用 户 或 程 序 员 不 需 要 为 每 个 应 用 程 序 开 发 专 用 软 件 , 并 且 给 系<br />
统 提 供 了 最 重 要 资 源 的 方 法 。<br />
文 件 管 理 系 统 的 目 标 :<br />
满 足 数 据 管 理 的 要 求 和 用 户 的 需 求 , 包 括 存 储 数 据 和 执 行 上 述<br />
操 作 的 能 力<br />
最 大 限 度 地 保 证 文 件 中 的 数 据 有 效 。<br />
从 系 统 的 角 度 根 据 总 体 吞 吐 量 , 从 用 户 的 角 度 根 据 响 应 时 间 ,<br />
优 化 性 能<br />
为 各 种 类 型 的 存 储 设 备 提 供 I/O 支 持<br />
减 少 或 消 除 丢 失 或 破 坏 数 据 的 可 能 性<br />
提 供 标 准 I/O 接 口 例 程 集 。<br />
在 多 用 户 系 统 中 为 多 个 用 户 提 供 I/O 支 持
11.2 文 件 类 型<br />
设 计 文 件 系 统 时<br />
, 需 要 考 虑 文 件<br />
系 统 所 支 持 的 文<br />
件 类 型 。 如 : 打<br />
印 一 个 二 进 制 目<br />
标 形 式 的 程 序 ,<br />
就 会 出 错 。<br />
实 现 : 在 文 件 名<br />
称 内 包 含 类 型 。<br />
名 称<br />
扩 展 名
11.3 文 件 组 织 和 访 问<br />
文 件 组 织 : 文 件 中 记 录 的 逻 辑 结 构 , 由 用 户 访 问<br />
记 录 的 方 式 确 定 , 是 指 从 用 户 观 点 出 发 讨 论 文 件<br />
内 部 的 逻 辑 结 构 (logical structure) 或 用 户 访 问 模<br />
式 ; 它 可 以 独 立 于 在 外 存 上 的 物 理 存 储 , 是 用 户<br />
可 以 直 接 处 理 的 数 据 及 其 结 构 。<br />
无 结 构 文 件 : 大 多 数 的 文 件 系 统 是 无 结 构 的<br />
文 件 系 统 , 它 们 自 身 不 提 供 任 何 数 据 结 构 ,<br />
文 件 内 容 以 字 节 流 的 形 式 存 在 。<br />
有 结 构 文 件 : 是 由 若 干 记 录 构 成 , 文 件 的 记<br />
录 可 以 有 多 种 排 列 顺 序 。 文 件 记 录 应 该 如 何<br />
组 织 呢 <br />
堆 文 件 、 顺 序 文 件 、 索 引 顺 序 文 件 、 索 引 文 件 、 哈 希 ( 直<br />
接 ) 文 件
11.3 文 件 组 织 和 访 问<br />
在 选 择 文 件 组 织 时 , 有 以 下 重 要 原 则 :<br />
访 问 快 速<br />
易 于 修 改<br />
节 约 存 储 空 间<br />
维 护 简 单<br />
可 靠 性<br />
这 些 原 则 的 相 对 优 先 级 取 决 于 将 要 使 用 这 些 文 件 的 应 用<br />
程 序 。 如 果 一 个 文 件 是 批 处 理 形 式 的 , 并 且 每 次 都 要 访 问<br />
到 它 的 所 有 记 录 , 则 会 很 少 需 要 关 注 用 于 检 索 一 个 记 录 的<br />
快 速 访 问 。<br />
这 些 原 则 可 能 互 相 矛 盾 。 如 索 引 。
11.3.1 文 件 的 组 织 结 构 - 堆 文 件<br />
堆 文 件 (pile): 是 最 简 单 的 文<br />
件 组 织 形 式 。 数 据 按 它 们 到<br />
达 的 时 间 顺 序 存 放 , 每 个 记<br />
录 由 一 串 数 据 组 成 。<br />
由 于 堆 文 件 没 有 结 构 , 当 数<br />
据 难 以 组 织 时 使 用 。 当 数 据<br />
大 小 和 结 构 都 不 同 时 , 这 种<br />
类 型 的 文 件 空 间 使 用 情 况 好<br />
, 能 较 好 地 用 于 穷 举 搜 索 ,<br />
且 易 于 修 改 ( 需 要 自 描 述 文<br />
件 )<br />
访 问 效 率 极 低 。 对 大 多 数 应<br />
用 都 不 可 用 。
11.3.2 文 件 的 组 织 结 构 - 顺 序 文 件<br />
顺 序 文 件 (sequential file): 可 按 关 键 字 域 的 某<br />
种 顺 序 排 列 。 所 有 记 录 都 既 有 相 同 的 长 度 , 是 一<br />
种 常 用 的 文 件 组 织 。<br />
应 用 :<br />
顺 序 文 件 通 常 用 于 批 处 理 中 , 涉 及 到 对 所 有 记 录 的<br />
处 理 ( 如 关 于 记 帐 或 工 资 单 的 应 用 ), 顺 序 文 件 通<br />
常 是 最 佳 的 。( 折 半 查 找 等 )<br />
访 问 大 型 顺 序 文 件 时 性 能 差<br />
查 询 或 更 新 记 录 的 交 互 式 应 用 , 顺 序 文 件 性 能 很 差<br />
-- 顺 序 搜 索 。
11.3.3 文 件 的 组 织 结 构 - 顺 序 文 件<br />
性 能 改 进 :<br />
将 新 记 录 存 放 在<br />
一 个 单 独 的 堆 文<br />
件 中 , 称 为 日 志<br />
文 件 或 事 务 文 件<br />
, 通 过 周 期 性 地<br />
执 行 一 个 成 批 更<br />
新 , 将 日 至 文 件<br />
合 并 到 主 文 件 中<br />
, 并 按 正 确 的 关<br />
键 字 顺 序 产 生 一<br />
个 新 文 件 。
11.3.4 文 件 的 组 织 结 构 - 索 引 顺 序 文 件<br />
索 引 顺 序 文 件 (indexed-sequential file): 在 顺 序 文 件<br />
的 基 于 关 键 字 排 序 基 础 上 , 另 外 建 立 索 引 (index) 文 件 和<br />
备 份 文 件 (overflow file)。<br />
索 引 文 件 用 于 加 快 顺 序 文 件 的 检 索 速 度 , 备 份 文 件 , 相<br />
当 于 顺 序 文 件 中 的 日 志 文 件 , 可 以 根 据 它 前 面 记 录 的 指<br />
针 进 行 定 位 。<br />
建 立 索 引 的 方 法<br />
将 顺 序 文 件 中 的 记 录 按 照 某 种 标 准 分 组 , 如 可 将 打 头 字<br />
母 相 同 的 记 录 分 为 一 组 , 可 按 每 小 时 或 固 定 长 度 的 时 间<br />
将 记 录 分 组 等<br />
一 级 索 引 : 索 引 文 件 中 的 记 录 由 关 键 字 域 和 指 向 主 文 件<br />
的 指 针 组 成 。<br />
在 查 找 时 , 首 先 搜 索 索 引 , 查 找 关 键 字 值 等 于 目 标 关 键 字 或 者 位 于<br />
目 标 关 键 字 值 之 前 且 最 大 的 索 引 ,<br />
然 后 在 该 索 引 的 指 针 所 指 的 主 文 件 中 的 位 置 处 开 始 搜 索 。<br />
多 级 索 引
关 键 字 逻 辑 地 址<br />
A<br />
B<br />
Z<br />
索 引 文 件<br />
姓 名<br />
An Bing<br />
An Kang<br />
An Qing<br />
Bao Rong<br />
Bi Jing<br />
Bon Long<br />
其 它 属 性<br />
顺 序 文 件
11.3.5 文 件 的 组 织 结 构 - 索 引 顺 序 文 件<br />
插 入 一 个 记 录 时 的 处 理 方 式 : 主 文 件 中 的 每 个 记 录 包 含 一 个 附 加<br />
域 , 附 加 域 对 应 用 程 序 是 不 可 见 的 , 它 是 指 向 备 份 文 件 的 一 个 指<br />
针 :<br />
当 往 文 件 中 插 入 一 个 新 记 录 时 , 它 被 添 加 到 备 份 文 件 ,<br />
然 后 修 改 主 文 件 中 逻 辑 顺 序 位 于 这 个 新 记 录 之 前 的 记 录<br />
, 使 其 包 含 指 向 备 份 文 件 中 新 记 录 的 指 针 。<br />
如 果 新 记 录 前 面 的 那 个 记 录 也 在 备 份 文 件 中 , 那 么 修 改<br />
该 记 录 的 指 针 。<br />
有 时 也 会 按 批 处 理 的 方 式 合 并 备 份 文 件 。( 新 记 录 暂 时<br />
保 存 在 备 份 文 件 中 , 定 期 归 并 入 主 文 件 。 )<br />
好 处 : 极 大 减 少 访 问 单 个 记 录 的 时 间 , 同 时 保 留 了 文 件 的 顺 序 特<br />
性 。 可 以 按 顺 序 处 理 主 文 件 中 的 记 录 , 直 到 遇 到 一 个 指 向 备 份 文<br />
件 的 指 针 , 然 后 继 续 访 问 备 份 文 件 中 的 记 录 , 直 到 遇 到 一 个 空 指<br />
针 , 然 后 恢 复 在 主 文 件 中 的 访 问 。
11.3.5 文 件 的 组 织 结 构 - 索 引 顺 序 文 件
11.3.6 文 件 的 组 织 结 构 - 索 引 文 件 (indexed file)<br />
索 引 顺 序 文 件 限 制 : 基 于 文 件 的 一 个 关 键 字 域 ( 属 性<br />
) 进 行 处 理 。 当 需 要 基 于 其 它 域 而 不 是 关 键 字 域 进 行<br />
搜 索 一 个 记 录 时 , 将 会 受 到 限 制 。<br />
索 引 文 件 : 每 种 可 能 成 为 搜 索 条 件 的 域 都 有 一 个 索 引<br />
( 多 索 引 ), 通 过 索 引 来 访 问 记 录 。<br />
每 个 索 引 项 指 向 一 个 记 录 , 索 引 项 按 照 记 录 中 的 某 个 关 键<br />
字 域 排 序<br />
对 同 一 主 文 件 , 可 以 对 不 同 的 关 键 字 域 相 应 建 立 多 个 索 引<br />
索 引 文 件 的 记 录 项 通 常 较 小 , 查 找 速 度 快 , 便 于 随 机 访 问<br />
记 录 大 小 不 必 相 同 , 不 必 排 序 , 存 放 在 主 文 件 中 。<br />
可 以 有 完 全 索 引 ( 包 含 主 文 件 中 每 条 记 录 的 索 引 项 )<br />
和 部 分 索 引 ( 只 包 含 那 些 有 感 兴 趣 域 的 记 录 中 的 索 引<br />
项 )。<br />
当 往 主 文 件 中 增 加 一 个 新 记 录 时 , 索 引 文 件 必 须 全 部
11.3.6 文 件 的 组 织 结 构 - 索 引 文 件 (indexed file)
11.3.7 文 件 的 组 织 结 构 - 直 接 文 件 或 散 列 文 件 、 哈 希 文<br />
件 (hashed file or direct file)<br />
直 接 文 件 中 的 记 录 包 含 关 键 字 字 段 , 但 记 录 的 存<br />
储 位 置 是 通 过 以 关 键 字 值 为 参 数 的 哈 希 函 数 计 算<br />
出 来 的 。 记 录 大 小 相 同 。 记 录 位 置 由 哈 希 函 数 确<br />
定 。<br />
检 索 时 给 出 记 录 的 关 键 字 值 , 通 过 哈 希 函 数 计 算<br />
出 该 记 录 在 文 件 中 的 相 对 位 置 。<br />
访 问 速 度 快 , 一 次 只 需 访 问 一 条 记 录 时 使 用 ,<br />
如 目 录 、 价 格 表 、 调 度 和 名 字 列 表 等 。
11.4 文 件 访 问 方 法 (access)<br />
存 取 方 法 : 指 用 户 在 使 用 文 件 时 按 何 种 次 序 存 取 文 件<br />
<br />
顺 序 存 取 法 : 按 照 文 件 信 息 的 逻 辑 顺 序 ( 记 录 的 排 列 顺 序 )<br />
依 次 存 取 。 如 : 为 了 存 取 记 录 R i , 必 须 先 通 过 记 录 R 1 R 2…<br />
R i-1<br />
随 机 存 取 法 ( 直 接 存 取 ): 可 以 按 任 意 的 次 序 对 文 件 进 行 读<br />
写 操 作 , 如 可 根 据 记 录 的 编 号 来 直 接 存 取 文 件 中 的 任 意 一<br />
个 记 录<br />
索 引 存 取 : 对 文 件 中 的 记 录 按 某 个 数 据 项 的 值 进 行 排 列<br />
, 从 而 可 以 根 据 键 值 来 快 速 存 取 。<br />
文 件 的 存 取 方 法 的 相 关 因 素<br />
与 怎 样 使 用 文 件 有 关 : 如 源 程 序 文 件 用 顺 序 存 取 法 、 数<br />
据 库 文 件 用 随 机 存 取 法<br />
与 存 储 介 质 的 特 性 有 关 : 磁 带 、 磁 盘
11.4 文 件 访 问 方 法 (access)<br />
顺 序 存 取<br />
read next<br />
write next<br />
reset<br />
no read after last write<br />
(rewrite)<br />
直 接 存 取<br />
read n<br />
write n<br />
position to n<br />
read next<br />
write next<br />
rewrite n<br />
n = relative block number
11.5 文 件 目 录 -11.5.1 目 录 内 容<br />
一 个 计 算 机 系 统 中 有 许 多 文 件 , 为 了 有 效 利 用 存 储<br />
空 间 及 迅 速 准 确 的 完 成 由 文 件 名 到 文 件 物 理 块 的 转<br />
换 , 实 现 按 名 存 取 , 须 将 文 件 名 及 其 结 构 信 息 等 按<br />
一 定 的 组 织 结 构 排 列 , 以 方 便 文 件 的 搜 索 。<br />
为 了 对 文 件 进 行 控 制 和 管 理 , 在 文 件 系 统 内 部 , 给<br />
每 个 文 件 唯 一 地 设 置 一 个 文 件 控 制 块 (FCB)。<br />
文 件 目 录 : 为 了 加 快 对 文 件 的 检 索 , 一 般 将 文 件 控<br />
制 块 集 中 在 一 起 进 行 管 理 。 这 种 文 件 控 制 块 的 有 序<br />
集 合 称 为 文 件 目 录 。 文 件 控 制 块 就 是 其 中 的 目 录 项<br />
。 完 全 由 目 录 项 构 成 的 文 件 成 为 目 录 文 件 。 目 录 是<br />
由 文 件 说 明 索 引 组 成 的 用 于 文 件 检 索 的 特 殊 文 件 。<br />
类 似 于 图 书 馆 中 的 图 书 目 录 。
11.5 文 件 目 录 -11.5.1 目 录 内 容<br />
目 录 内 容 : 包 括 有 关 文 件 的 信 息 : 属 性<br />
、 位 置 和 所 有 权 等 。<br />
文 件 目 录 提 供 的 最 基 本 的 功 能 :<br />
将 文 件 名 转 换 成 该 文 件 在 外 存 的 物 理<br />
位 置 , 实 现 文 件 名 与 磁 盘 块 之 间 的 映<br />
射
11.5 文 件 目 录 -11.5.1 目 录 内 容<br />
1、 基 本 信 息<br />
文 件 名 : 字 符 串 , 通 常 在 不 同 系 统 中 允 许 不<br />
同 的 最 大 长 度 。 可 以 修 改 。 有 些 系 统 允 许 同<br />
一 个 文 件 有 多 个 别 名 (alias);<br />
文 件 类 型 : 可 有 多 种 不 同 的 划 分 方 法 , 如 :<br />
有 无 结 构 ( 记 录 文 件 , 流 式 文 件 )<br />
内 容 ( 二 进 制 、 文 本 )<br />
用 途 ( 源 代 码 、 目 标 代 码 、 可 执 行 文 件 、 数 据 )<br />
属 性 attribute( 如 系 统 , 隐 含 等 )<br />
文 件 组 织 ( 如 顺 序 , 索 引 等 )<br />
文 件 组 织 : 见 访 问 方 法 层
11.5.1 目 录 内 容<br />
地 址 信 息<br />
卷 : 包 括 哪 个 设 备 或 文 件 卷 volume<br />
起 始 地 址 : 在 辅 存 中 的 起 始 物 理 地 址 ( 柱 面 、 磁 道 、 块<br />
号 )<br />
使 用 大 小 : 文 件 的 当 前 大 小<br />
分 配 大 小 : 文 件 的 最 大 大 小<br />
访 问 控 制 信 息<br />
文 件 所 有 者 ( 属 主 ): 通 常 是 创 建 文 件 的 用 户 , 或 者 改<br />
变 已 有 文 件 的 属 主<br />
访 问 权 限 ( 控 制 各 用 户 可 使 用 的 访 问 方 式 ): 如 读 、 写<br />
、 执 行 、 删 除 等 ;<br />
访 问 信 息 : 每 个 授 权 用 户 的 用 户 名 和 口 令<br />
使 用 信 息<br />
创 建 时 间<br />
最 后 一 次 读 访 问 的 时 间 和 用 户
文 件 系 统<br />
目 录<br />
目 录 文 件<br />
根 目 录 文 件 的 内 容 :<br />
文 件 名 文 件 类 型 外 存 地 址 …<br />
作 业 目 录 文 件<br />
作 业 目 录 文 件 的 内 容 :<br />
文 件 名 文 件 类 型 外 存 地 址<br />
…<br />
C 目 录 文 件<br />
软 件<br />
目 录 文 件<br />
OS<br />
目 录 文 件<br />
娱 乐<br />
目 录 文 件<br />
F1.C<br />
数 据 文 件<br />
F1<br />
数 据 文 件<br />
F2.C<br />
数 据 文 件<br />
OS1<br />
数 据 文 件
文 件 系 统<br />
索 引 节 点 (I 节 点 )<br />
文 件 名<br />
索 引 节 点 编 号<br />
games<br />
mail<br />
News<br />
work
11.5.2 目 录 基 本 操 作<br />
搜 索 文 件 : 通 过 查 找 目 录 结 构 , 实 现 特 定 文 件 的 按 名 查<br />
找<br />
创 建 文 件 : 建 立 新 文 件 , 将 相 应 控 制 块 加 到 目 录 中 去<br />
删 除 文 件 : 当 一 个 文 件 不 再 需 要 时 , 从 目 录 中 删 除<br />
列 出 目 录 :<br />
重 命 名 文 件<br />
跟 踪 文 件 系 统
11.5.3 目 录 的 组 织<br />
如 何 组 织 文 件 目 录 是 文 件 系 统 的 主 要<br />
内 容 之 一<br />
有 效 性 – 快 速 定 位 一 个 文 件<br />
命 名 – 用 户 使 用 方 便<br />
两 个 用 户 对 不 同 的 文 件 可 以 使 用 同 一<br />
个 文 件 名<br />
同 一 个 文 件 可 能 由 不 同 的 文 件 名
11.5.3 目 录 的 组 织 - 单 级 目 录 结 构<br />
所 有 文 件 都 包 含 在 同 一 目 录 中 , 简 单 、 能<br />
够 实 现 按 名 存 取<br />
问 题 :<br />
查 找 速 度 慢<br />
不 允 许 重 名<br />
不 便 于 共 享
11.5.3 目 录 的 组 织 - 两 级 目 录 结 构 ( 双 层 目 录<br />
为 每 个 用 户 创 建 单 独 的 目 录<br />
用 户 文 件 目 录 UFD<br />
主 文 件 目 录 MFD<br />
优 点 :<br />
不 同 用 户 可 以 有 相 同 的 文 件 名<br />
提 高 了 检 索 速 度<br />
将 一 个 用 户 与 另 一 个 用 户 有 效 隔 开<br />
缺 点
11.5.3 目 录 的 组 织 - 树 状 目 录 结 构<br />
• 每 一 级 目 录 可 以 包<br />
含 文 件 , 也 可 以 包<br />
含 下 一 级 目 录 。<br />
• 只 有 一 个 根 目 录 ,<br />
而 且 除 根 目 录 外 ,<br />
其 余 每 个 目 录 或 者<br />
文 件 都 有 唯 一 的 一<br />
个 上 级 目 录 。<br />
• 父 目 录 、 子 目 录
11.5.3 目 录 的 组 织 - 树 状 目 录 结 构 - 路 径<br />
路 径 名 : 任 何 文 件 可 以 按 照 根 目 录 或 主 目 录 向 下<br />
到 各 个 分 支 最 后 达 到 该 文 件 的 路 径 来 定 位 。 这 一<br />
系 列 目 录 名 和 最 后 达 到 的 文 件 名 自 身 组 成 了 该 文<br />
件 的 路 径 名 。 多 个 文 件 可 以 同 名 , 只 要 保 证 它 们<br />
的 路 径 名 是 唯 一 的 即 可 。<br />
工 作 目 录 (working directory): 对 交 互 用 户 或<br />
进 程 而 言 , 总 有 一 个 当 前 路 径 与 之 相 关 联 , 称 作<br />
工 作 目 录 , 文 件 通 常 按 照 相 对 于 工 作 目 录 的 方 式<br />
被 访 问 。 当 交 互 式 用 户 登 录 时 , 或 者 当 创 建 一 个<br />
进 程 时 , 默 认 的 工 作 目 录 是 用 户 目 录 。<br />
绝 对 路 径 : 从 根 目 录 开 始 指 定 的 目 录<br />
相 对 路 径 : 从 当 前 工 作 目 录 开 始
11.5.3 目 录 的 组 织 - 树 状 目 录 结 构<br />
系 统 将 当 前 工 作 目 录 中 的 内 容 复 制 到 内 存 缓 冲 区<br />
中 , 在 访 问 文 件 时 先 访 问 内 存 中 的 工 作 目 录 。 当<br />
要 访 问 的 文 件 不 在 当 前 目 录 中 时 , 再 访 问 外 存 中<br />
的 目 录 , 提 高 了 查 找 速 度 。<br />
优 点 :<br />
文 件 的 层 次 和 隶 属 关 系 清 晰<br />
便 于 实 现 不 同 级 别 的 存 取 保 护 和 文 件 系 统 的<br />
动 态 装 卸<br />
如 何 处 理 删 除 目 录<br />
等 到 该 目 录 为 空 时 再 删 除<br />
当 出 现 删 除 一 个 目 录 的 请 求 时 , 就 删 除 它 的<br />
所 有 文 件 和 子 目 录 , 如 Unix 的 rm
11.5.3 目 录 的 组 织 - 无 环 图 目 录<br />
树 形 结 构 禁 止 共 享 文 件 和 目 录 。 无 环 图 目 录 结 构 则 是<br />
在 树 型 目 录 的 基 础 上 , 进 一 步 允 许 多 个 目 录 项 指 向 同<br />
一 个 数 据 文 件 或 者 目 录 文 件 , 实 现 了 多 个 用 户 或 者 多<br />
个 目 录 对 目 录 或 者 数 据 文 件 的 共 享 . 允 许 目 录 含 有 共<br />
享 子 目 录 和 文 件 。<br />
同 一 个 文 件 或 子 目 录 可 能 出 现 在 两 个 不 同 目 录 中 。 它<br />
们 通 过 指 针 与 文 件 相 连 , 即 它 允 许 一 个 文 件 或 者 目 录<br />
在 多 个 父 目 录 中 占 有 项 目 。<br />
这 样 的 目 录 结 构 不 再 是 一 颗 树 , 而 构 成 了 一 个 无 循 环<br />
图 。<br />
在 无 环 结 构 目 录 结 构 中 , 不 同 的 主 目 录 可 以 共 享 一 个<br />
文 件 和 分 目 录 , 而 不 是 各 自 拥 有 文 件 或 分 目 录 的 拷 贝<br />
Unix 的 目 录 结 构 即 属 于 无 循 环 图 结 构 。
11.5.3 目 录 的 组 织 - 无 环 图 目 录<br />
无 环 图 目 录 结 构 的 一 个 主 要 问 题 是 : 如 何 删 除 一 个 目 录 项 <br />
2 种 方 法 :<br />
当 删 除 一 个 引 用 时 , 同 时 删 除 该 文 件 。<br />
只 删 除 引 用 , 而 不 删 除 文 件 。 只 有 在 所 有 文 件 引 用 都 被 删 除 后<br />
才 删 除 文 件 。 这 时 需 要 在 文 件 中 新 增 一 个 引 用 表 或 者 增 加 一 个<br />
引 用 计 数 。
11.5.4 目 录 的 组 织 - 通 用 图 目 录
在 无 环 图 目 录 结 构 中 , 因 一 步 允 许 子 目 录 对 上 层 目 录 的 引<br />
用 , 就 产 生 了 通 用 图 目 录 结 构 。<br />
通 用 图 目 录 结 构 的 主 要 优 点 是 : 可 用 简 单 的 算 法 来 遍 历 图<br />
并 确 定 是 否 存 在 引 用 。<br />
存 在 问 题 :<br />
由 于 图 中 存 在 环 , 在 搜 索 某 一 子 目 录 时 要 避 免 无 穷 地 循 环<br />
搜 索 。 可 以 限 制 访 问 目 录 的 次 数 来 确 定 。<br />
在 判 断 一 个 文 件 是 否 可 被 删 除 时 , 由 于 存 在 文 件 的 自 我 引<br />
用 , 所 以 不 能 简 单 的 通 过 引 用 计 数 是 否 为 0 来 判 断 文 件 是 否<br />
可 被 删 除 。
(root)<br />
user<br />
dev<br />
bin<br />
wei<br />
liu<br />
tty01 tty02 lp<br />
star<br />
readme<br />
man<br />
src<br />
stt<br />
dkt<br />
kky<br />
p01<br />
Unix 的 无 循 环 图 目 录 结 构
11.6 共 享 文 件<br />
文 件 共 享 指 多 个 用 户 同 时 访 问 一 个 文 件 。 文 件 共<br />
享 可 大 大 节 约 存 储 空 间 。 三 种 共 享 形 式 :<br />
被 多 个 用 户 使 用 , 由 存 取 权 限 控 制<br />
被 多 个 程 序 使 用 , 但 各 用 自 己 的 读 写 指 针<br />
被 多 个 程 序 使 用 , 但 共 享 读 写 指 针<br />
目 的<br />
节 省 时 间 和 存 储 空 间 , 减 少 了 用 户 工 作 量 ;<br />
进 程 间 通 过 文 件 交 换 信 息<br />
如 何 有 效 控 制 文 件 共 享
11.6 共 享 文 件 - 实 现<br />
由 系 统 实 现 对 文 件 的 共 享<br />
用 户 通 过 全 路 径 名 共 享 地 访 问 这 些 文 件 。<br />
方 法 的 访 问 速 度 慢 , 适 用 于 不 经 常 访 问 的 文<br />
件 共 享<br />
对 要 共 享 的 文 件 进 行 链 接<br />
通 过 “ 链 接 (Link)” 命 令 , 在 用 户 自 己 的<br />
目 录 项 中 对 要 共 享 的 文 件 建 立 起 相 应 的 表 目<br />
, 即 建 立 两 个 文 件 的 等 价 关 系 即 利 用 多 个 目<br />
录 中 的 不 同 文 件 名 来 描 述 同 一 共 享 文 件 。
11.6 共 享 文 件 - 链 接<br />
链 接 : 指 向 另 一 个 文 件 或 者 目 录 的 指 针 。 用 户 在<br />
自 己 的 文 件 目 录 中 对 欲 共 享 的 文 件 建 立 起 相 应 的<br />
表 目 , 从 而 指 一 个 文 件 或 目 录 在 目 录 树 中 多 处 出<br />
现 , 但 实 际 在 外 存 上 只 有 一 份 物 理 存 储 。<br />
实 际 上 是 给 系 统 中 已 有 的 某 个 文 件 指 定 另 外 一<br />
个 可 用 于 访 问 它 的 名 称 。 对 于 这 个 新 的 文 件 名<br />
, 可 以 为 之 指 定 不 同 的 访 问 权 限 。<br />
例 : 如 果 链 接 指 向 目 录 , 用 户 就 可 以 利 用 该 链<br />
接 直 接 进 入 被 链 接 的 目 录 而 不 用 打 一 大 堆 的 路<br />
径 名 。 而 且 , 即 使 我 们 删 除 这 个 链 接 , 也 不 会<br />
破 坏 原 来 的 目 录 。
11.6 共 享 文 件 - 链 接<br />
语 法 :ln [ 选 项 ] 目 标 [ 链 接 名 ] ( 如 :ln [ 选 项 ] 目<br />
标 目 录 )<br />
如 果 已 有 一 个 文 件 为 C:\Home\Doc\NtBook\Chap5.doc,<br />
且 为 其 创 建 一 个 硬 链 接 为 C:\chap5.doc, 那 么 这 两 个 路 径<br />
指 向 同 一 文 件 , 因 此 可 以 通 过 任 一 路 径 来 对 该 文 件 进 行<br />
操 作 。
11.6 共 享 文 件 - 链 接 ( 自 学 )<br />
对 共 享 文 件 通 过 两 种 链 接 方 式 实 现<br />
基 于 索 引 结 点 ( 硬 链 接 )<br />
基 于 符 号 链 接 ( 软 链 接 )
1. 硬 链 接 ( 基 于 索 引 结 点 (index node) 的 方 法 )<br />
建 立 硬 链 接 时 , 链 接 文 件 和 被 链 接 文 件 必 须 位 于 同<br />
一 个 文 件 系 统 中 , 并 且 不 能 建 立 指 向 目 录 的 硬 链 接 。<br />
而 对 符 号 链 接 , 则 不 存 在 这 个 问 题 。 默 认 情 况 下 ,ln<br />
产 生 硬 链 接 。<br />
实 现 时 , 采 用 基 于 改 进 的 多 级 目 录 结 构 , 将 目 录 内<br />
容 分 为 两 部 分 : 文 件 名 和 索 引 结 点 。 前 者 包 括 文 件 名<br />
和 索 引 结 点 编 号 , 后 者 包 括 文 件 的 其 他 内 容 ( 包 括 属<br />
主 和 访 问 权 限 )。 通 过 多 个 文 件 名 链 接 (link) 到 同 一<br />
个 索 引 结 点 , 可 建 立 同 一 个 文 件 的 多 个 彼 此 平 等 的 别<br />
名 。 别 名 的 数 目 记 录 在 索 引 结 点 的 链 接 计 数 中 , 若 其<br />
减 至 0, 则 文 件 被 删 除 。
2. 符 号 链 接 (symbolic link, shortcut)<br />
它 是 一 种 特 殊 类 型 的 文 件 , 其 内 容 是 到 另 一 个 目 录 或<br />
文 件 路 径 的 链 接 。 建 立 符 号 链 接 文 件 , 并 不 影 响 原 文<br />
件 , 实 际 上 它 们 各 是 一 个 文 件 。<br />
举 例 :<br />
例 :$ ln - s lunch /home/xu<br />
用 户 为 当 前 目 录 下 的 文 件 lunch 创 建 了 一 个 符 号 链 接<br />
/home/xu。<br />
"ln -s a b ; rm a" 则 文 件 a 不 存 在 ,b 能 被 控 制 但 无 法 访 问 。 若<br />
a 是 目 录 ,"ln -s /user/a /tmp/b" 则 "cd /tmp/b ; cd .." 是 进 入<br />
目 录 "/user" 而 不 是 "/tmp";<br />
缺 点 : 空 间 和 时 间 开 销 更 大 。 如 果 设 置 不 当 , 上 下 级<br />
目 录 关 系 可 能 会 形 成 环 状 。
硬 链 接 :<br />
只 允 许 文 件 链 接 , 不 允 许 目 录 链 接 ;<br />
只 允 许 在 同 一 个 文 件 系 统 范 围 内 进 行 , 不 允 许 跨 文 件 系 统<br />
。<br />
删 除 文 件 时 , 如 果 还 有 其 他 链 接 链 至 该 文 件 , 则 该 文 件 不<br />
能 被 删 除 。<br />
符 号 链 接 :<br />
虽 然 实 现 起 来 相 对 麻 烦 一 些 , 访 问 速 度 相 对 慢 一 些 , 但 适<br />
用 范 围 和 灵 活 性 要 大 一 些 。<br />
允 许 目 录 链 接 , 允 许 运 行 在 不 同 的 文 件 系 统 间 进 行 链 接 ,<br />
这 两 个 文 件 系 统 可 以 在 同 一 个 计 算 机 上 , 也 可 以 在 不 同 的<br />
计 算 机 上 。<br />
被 链 接 文 件 的 删 除 和 符 号 链 接 的 删 除 是 完 全 相 互 独 立 的 (<br />
返 回 “ 被 链 接 文 件 不 存 在 ” 的 错 误 )
11.7 文 件 保 护<br />
文 件 的 存 取 控 制 : 与 文 件 共 享 、 文 件 保 护 、<br />
文 件 保 密 有 关 。<br />
文 件 共 享 : 不 同 的 用 户 共 同 使 用 一 个 文 件<br />
文 件 保 护 : 防 止 文 件 内 容 被 破 坏<br />
文 件 保 密 : 未 经 文 件 拥 有 者 许 可 , 任 何 用 户 不 得 访 问<br />
该 文 件<br />
应 作 到 :<br />
<br />
对 拥 有 权 限 的 用 户 , 应 该 让 其 进 行 相 应 操 作 , 否 则<br />
, 应 禁 止<br />
防 止 其 他 用 户 冒 充 对 文 件 进 行 操 作 )<br />
由 存 取 验 证 模 块 来 实 现
11.7 文 件 保 护 - 存 取 验 证 模 块<br />
分 三 步 来 实 现<br />
审 定 用 户 的 存 取 权 限<br />
比 较 用 户 权 限 的 本 次 存 取 要 求 是 否 一 致<br />
将 存 取 权 限 和 别 访 问 文 件 的 保 密 性 比 较 , 看<br />
是 否 有 冲 突<br />
一 般 有 4 种 方 法 来 验 证<br />
存 取 控 制 矩 阵<br />
存 取 控 制 表<br />
口 令<br />
密 码 术
(1) 存 取 控 制 矩 阵<br />
文 件<br />
用 户 A B C ……<br />
User1 rw r w<br />
User2 e − − ……<br />
特 点 : 简 单 ; 但 当 文 件 和 用 户 较 多 时 , 存 取 控<br />
制 矩 阵 变 大 , 增 加 占 用 空 间 和 扫 描 时 间 开 销
(2) 存 取 控 制 表<br />
以 文 件 为 单 位 , 把 用 户 按 某 种 关 系 划 分 为 若 干 组 ,<br />
同 时 规 定 每 组 的 存 取 权 限 。 实 现 时 , 该 表 放 在 文 件<br />
说 明 中 , 打 开 文 件 时 , 被 复 制 了 内 存 中 ; 效 率 高 ;<br />
用 户<br />
文 件<br />
A 组<br />
B 组<br />
wang<br />
其 他<br />
文 件<br />
a.c<br />
RWE<br />
RE<br />
E<br />
RWE<br />
None<br />
(3) 口 令 和 密 码 ( 略 )
例 题<br />
有 一 个 请 求 分 页 存 储 管 理 系 统 , 页 面 大 小 为 每 页 100 字<br />
节 。 有 一 个 50×50 的 整 型 数 组 按 行 连 续 存 放 , 每 个 整<br />
数 占 2 个 字 节 , 将 数 据 初 始 化 为 0 的 程 序 描 述 如 下 :<br />
int a[50][50];<br />
Int i,j;<br />
程 序 A:<br />
for (i=0;I
数 组 中 有 2500 个 整 数 , 每 个 整 数 占 用 2 个 字 节 , 共 需 存 储 空<br />
间 5000 个 字 节 , 而 页 面 大 小 为 每 页 100 个 字 节 。 数 组 占<br />
用 空 间 50 页 。 假 设 数 据 从 该 作 业 的 第 m 页 开 始 存 放 , 则<br />
数 组 分 布 在 第 m 页 到 第 m+49 页 中 , 它 在 主 存 中 的 排 列 顺<br />
序 为 :<br />
a[0][0], a[0][1],,…, a[0][49] 第 m 页<br />
a[1][0], a[1][1],,…, a[1][49] 第 m+1 页<br />
…………………………..<br />
a[49][0], a[49][1],,…, a[49][49] 第 m+49 页<br />
由 于 该 初 始 化 程 序 是 按 行 进 行 的 , 因 此 , 每 次 缺 页 中 断 调<br />
进 一 页 后 , 位 于 该 页 内 的 数 组 元 素 全 部 赋 予 0 值 , 然 后 再<br />
调 入 下 一 页 , 所 以 涉 及 的 页 面 走 向 为 m,m+1,…,m+49, 故<br />
缺 页 次 数 为 50 次 .<br />
程 序 B:50×50=2500 次 。
11.7