17.01.2015 Views

在线观看

在线观看

在线观看

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!