操作系统原 理 principles of operating systems
作者申明
本版内 容的著作权 为作者所 有。因为教 学 目的使用本版内 容时,请注 明所用资料 来自 本网站或由本作 者发送,并 保留作者版 权标 记“ 2002 孟静制作 版权所 有”。将 本 版内容用于其他 目的前,须 征得作者同 意。
2002年8月
孟静制作 版权所有
2
使用说明 ● 请注意充分利用 各张胶片中 的 和 ,从 而在相关胶片间 快速跳换。 ● 有时胶片备注视 图中会有内 容,请注意 。
2002年8月
孟静制作 版权所有
3
操作 系统原 理 第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 2002年8月
概论 CPU 管理 内存 管理 文件 系统 设备 管理 进程 通信 分布 式、并行和 网络操作系 统 性能 和设计 孟静制作 版权所有
4
第三章 内存 管理(高 教版目录) ➪3.1 ➪3.2 区) ➪3.3 ➪3.4 ➪3.5 ➪3.6
2002年8月
内存管理概 述 连续模式 ( 无管理 / 单一 / 固定 / 可变分 不连续模式 1 :页模式 不连续模式 2/3: 段式 / 段页式 内存管理实 例分析 本章总结
孟静制作 版权所有
5
第三章 内存 管理(清 华版目录) 3.1 内存管理概述 3.2 操作系统出现前 的内存无管 理模式 3.3 单一分区模式 3.4 固定分区模式 3.5 可变分区模式 3.6 页模式 3.7 段式存储管理 3.8 段页式存储管理 模式 3.9 内存管 理实例分析 ( 一 ) 2002年8月 孟静制作 版权所有 3.10 内存管理实 例分析 ( 二 )
6
七种内存 管理模式及 与章节关系 1 操作系统出 现前的内 存无管理模 式 2 单一分区模 式 3 固定分区模 式 连续模式 4 可变分区模 式 5 页模式 (目前最常用 模式) 6 段式存储管 理 不连 续模式 7 段页式存储 管理模式 2002年8月
孟静制作 版权所有
7
为什 么会有七种 内存管理 模式 ● OS 内存管 理功能决定 因素 ( 图 )( 要求 / 硬 件 / 史展 ) ●历史上 ,底层 硬件 (体系 结构 )支持 的不 同,用 户要求 的不同 ,导 致不同 的内 存管理 模式 。
● 同样的因素(图 )决定本章 第一节中的 小节 划分 用户对内存使用要求 上层所 有软件
硬件无关应用相关 OS 与上层所有软件的分界线
OS 2002年8月
硬件相关应用无关 孟静制作 版权所有
内存硬件接口特性 8
图 3. 1
2002年8月
孟静制作 版权所有
9
3. 1 内存管理概述 ➪ 3.1.1 ➪ 3.1.2 (指 ➪ 3.1.3 ➪ 3.1.4
内存概念、 作用和计算 机存储层 次 内存硬件接 口使用特性 :微观角 度 令级)和宏观 角度(程 序级) 用户程序对 内存的使用 要求 内存管理功 能的工作内 容和任务
回章首
2002年8月
孟静制作 版权所有
10
3. 1.1 内存概 念 、 作用和计算 机存储 层次 ● 存储层次 3W ● What&hoW : 图 3.2 存储层 次 存储层 次 ● Why : 局部性 原理 => 各层存储内 容和频度
表 3.1
总体 效果 : 又快 又大 又省 , 海存的 容量 , 寄存 器的 速度
● 内存 3W ●什么是 内存( What ):存 放内容 ,程 序计数 器 所指 ●内存的 作用( Why )及 其相 对性 : 内容 , 非须 , 性价衡 2002年8月 孟静制作 版权所有 11 ●内存工 作方式 ( hoW ):装入 与退 出
图 3. 2 存储层 次
2002年8月
孟静制作 版权所有
12
表 3.1 计算机 存储层次 中各层性能 指标 ( 近年数字 ) 存储层次 典型介质 寄存器 cache 内存 外存
2002年8月
SRAM(静态) DRAM(动态) ROM 磁/光
典型速度或存 取时间 10-25ns 几十 ns 几百 ns 几百 KB/s
典型成本
典型容量 典型存 取频度 几百 B 256KB 128MB/300 元 几百 MB 10GB/千元
孟静制作 版权所有
几十 GB
13
表 3. 2 目前用于 内存 的 存储介 质性能 一览 见书 P165
2002年8月
孟静制作 版权所有
14
表 3. 3 年
内存性能和价 格的历史变 化
典型容量/价格
2001 128MB/300 元¥ 1999 64MB/500 元¥ 1995 8MB/2000 元¥ 1973 512KB/25 万元$ 1964 32KW(数字取自 IBM7094 晶体管计算 机) 1958 几 KB 1952 2KW(数字取自 IBM701 电子管计算机) 2002年8月
元/字节 典型速度(ns 同时期 CPU 介 是纳秒) 典型速度 质 几十 ns(即几十 几百 MB/秒 MB/秒)
16Mb/s 1.4 微秒存储周 期
30 微秒存储周 期 孟静制作 版权所有
15
3. 1. 2 内存硬 件接口使 用特性 3.1.2.1 从微观角度 看指令对内 存的使用 3.1.2.2 从宏观角度 看程序对内 存的使用
回节首
2002年8月
孟静制作 版权所有
16
3. 1. 2.1 从微 观角度看指 令对内存 使用
的
(1) 程序对 内存的使用 体现为程序 向内存发 出 的一次次读写请 求 (2) 内存接 受的读写请 求可能来自 CPU 或 DMA (3) 内存最 小使用单位 从程序角度 为指令; 从 内存(硬件)角 度为 CPU 或 DMA 对内存发 出的一次次读写 请求 (4) 访存指令与 I/O 指令的 比较
2002年8月
孟静制作 版权所有
17
I/O 指
访存指 令 令 ● IN 、 OUT 两条 显式 I/O 指令 ● 一次 I/O 读写, 通常需 要读状 态、置 控制 码、 置源 / 目标 数据地 址、 置数据 等对各 种接 口寄 存器的 读写动 作, 每个 动作需 一条指 令完 成 ● 最小寻 址单位 和存 取单 位有一 个扇区 、一 个磁 道 2002年8月
● LOAD 、 MOVE 两条 显式读 写内存 指令 ,而 且所有 指令都 是隐 含的 内存读 写指令 ● 内存读 写的( 与 I/O 相 同)动 作是由 硬件 在一 条指令 内部自 动完 成的 ● 对内存 的访问 寻址 存取 单位一 般为字 节或 字
孟静制作 版权所有
18
3.1. 2. 2 从宏观 角度看程序 对内存使 用 ● 基本概念:内存 空间、源程 序、目标程 序、 可执行目标程序 、程序空间 ● 1. 程序在其生 命周期各阶 段表现出不 同的地 址形式 ● 2. 从程序在其 生命周期各 阶段的地址 形式变 化看程序空间的 三个编址与 结构特性
2002年8月
孟静制作 版权所有
19
1.
程序在其生 命周期各 阶段表现出 不同地址 形式
● ( 图 3.3 一个可执行 目标程序的 生命周期 ) ● 编译 ● 两个 转换 : ●将语句转 换为 机器指 令 ●将符号转 换为 内存地 址
●注意 : ●1. 转换出 的地 址可能 是相 对地 址 ●2. 可能不 是所 有符号 都已 转换 为内存 地址
● 连接 ● 静态重定位、动 态连接 2002年8月 孟静制作 版权所有 ● 动态重定位、执 行完毕释放 资源
20
图 3.3 一个可 执行目标 程序的生命 周期
2002年8月
孟静制作 版权所有
21
图 3. 4 各种地址间的 关系
2002年8月
孟静制作 版权所有
22
2. 从 1 看程序空间三 个编址与结 构 特性 (1) 若程序装入 执行时占用 的起始地 址不同于 编译连接后产生 的目标程序 的起始地址 , 则 须经特殊处理, 否则就会出 错 ●特殊处 理:重 定位 (静态 重定 位 / 动态重 定位)
(2) 编译连接产 生可执行目 标程序时 , 产生的 地址通常是连续 的 , 导致可执行 目标程序在 内存中需连续存 放 , 不连续存放 且不做特殊 处理则执行出错 ●特殊处 理:地 址映 射技术 ( 不连续 、不完 整技 术 )
(3) 程序是否可 重入孟静制作 版权所有 2002年8月
23
图 3. 5 宏观 特性 2 :连续完 整存放 要求
2002年8月
孟静制作 版权所有
24
3. 1. 3 用户 ( 程序 ) 对内存使用要求 : 方便 / 效率 / 安全 ● 1. 不涉及内存物理 细节 ( 内存物理地 址与大 小 ), 不随之 变化而变化 。因此用户程 序中不 应包含内存物理 地址 ; 不必考虑装 不下问题 ( 物理内存大 小 ) 。 ● 2. 用户程序的装入 工作 ● 3. 对内存容量和利 用率的要求 ● 4. 存取速度要快: cache, 各种技 术对速度 的影响 ● 5. 存储保护与安全 ● 6. 用户程序运行时 动态伸缩要 求:代码 / 数 2002年8月 孟静制作 版权所有 25 回节首
1. 向用户程序提供 内存逻辑地 址 2. 在编译程序配合 下负责为用 户程序完成 程序 执行前的装入工 作 3. 采用多道、不连 续、共享等 各种技术来 提高 内存利用率和减 缓大容量要 求 4. 通过操作系统与 硬件的配合 ,来实现 cache 并尽量提高其 性能,以 解决内存速度 与 CPU 速度的匹配 问题 回节首
2002年8月
孟静制作 版权所有
26
3. 1.4 内存管 理功能工 作内容和任 务 (续) 5. 采用各种与硬件 配合的软件 技术来解决 内存 保护和安全问题 6. 利用各种存储移 动与合并技 术、或不连 续分 配技术,来实现 用户程序的 动态扩缩 7. 满足用户在通讯 共享方面的 要求 8. 满足用户在了解 系统运转和 使用情况等 方面 的要求 9. 以最小代价最高 性能来完成 以上工作
2002年8月
孟静制作 版权所有
27
1. 如何使用户 ( 程序 ) 不涉 内存物理 细节 ● 关于程序起址和 重定位的四 种处理方法 ● (1) 可执行 目标程序中 使用物理地址 ,并约 定该程序每次运 行时都会从 内存中的同 一个 固定位置开始装 入,该固定 位置正是该 程序 中的物理地址的 起始值 ● (2) 由用户 在用户程序 每次执行前重 新编译 或连接 ● (3) 由操作 系统在一个 程序装入前根 据本次 装入的物理位置 来修改程序 中的所有地 址 ● (4) 由操作 系统在用户 程序执行过程 中进行 2002年8月 孟静制作 版权所有 28 动态地址映射
3. 如何提高 内存利用率 ● 三类技术(角度 ): ● (1) 空闲 空间尽可能 利用:多道 、不连续、 空闲空间分配算 法、动态伸 缩等 ● (2) 避免 冗余存储: 代码共享、 动态连接库 等 ● (3) 在不 影响程序执 行和并发程 度的前提下 ,尽量减少在内 存中的代码 和数据量
2002年8月
孟静制作 版权所有
29
容量 不够如何解 决:程序 局部行为 理 论 ● 放不下有两种情 况 ●多道中 程序多 空间 小 ( 用交换 、虚存 来解 决 ) ●( 单 / 多道 ) 程序大空 间小 ( 虚存、 覆盖、 动态 装 入)
● 局部性原理 ●① 一个 程序的 所有 代码和 数据 ,在任 一时 刻或时 间段通 常只用 到其 中的一 小部 分 ●② 最近 访问过 的, 最近再 被访 问的可 能性 也最大 ●③ 在多 道下, 当一 个程序 正在 CPU 上执行 时, 其他程 序的代 码和 数据可 以暂 时不在 内存 2002年8月
孟静制作 版权所有
30
利用局 部性原理制 定的策略 ● ① 除了处 于运行态的 程序外, 其他程序的 代 码和数据可以暂 不在内存, 利用这个策 略的 技术有交换、虚 存中的全局 页淘汰等 ● ② 一个程 序的代码和 数据可以 不完整在内 存 ,利用这个策略 的技术有覆 盖、动态装 入、 虚存等 ● (a) 不到真 正使用 时不 进入内 存 , 如动态 装入 、 虚存中 的请求 分页 或请求 分段 等 ● (b) 已在内 存却不 再使 用的, 就尽 快让出 内存 ( 尽快 释放空 间 ) ,如 覆盖、 动态 伸缩、 页淘 汰 等 2002年8月
孟静制作 版权所有
31
4. 如何使内存 速度与 CPU 速度匹 配 ● 解决问题的两个 角度 ● (1) 内存速 度跟不上 CPU 速度 ●CACHE 技术 , 由操作 系统与 CACHE 硬件共 同解 决的
● (2) CPU 与 I/O 的速度匹 配问题 ●并发 ●多任务技 术, 及内存 管理 配合技 术: 交换技 术, 多道 技术 ( 进一 步的 工作 )
2002年8月
孟静制作 版权所有
32
➪ 3.2.1 技术 ➪ 3.2.2 ➪ 3.2.3 ➪ 3.2.4
无管理模式 、覆盖技术 和动态装 入 单一分区模 式和交换技 术 固定分区模 式和多道技 术 可变分区模 式和动态存 储分配技 术
回章首
2002年8月
孟静制作 版权所有
33
3. 2.1 无管理 模式 、 覆盖 、 动态装入 技术 ● 3.2.1.1 无管理 模式 ● 3.2.1.2 覆盖技术 ● 3.2.1.3 动态(连接 与)装入 技术
2002年8月
孟静制作 版权所有
34
3.2. 1. 1 无管理模式 ● 用户程序在运行 过程中 ●对内存 和其它 任何 资源的 使用 均得不 到任 何其它 软件的 帮助和 支持 ●对整个 内存空 间及 对整个 计算 机有完 整的 控制
● 无管理模式的优 点是: (1) 提供给用户最大 的灵活性 (2) 不需要特殊硬件 、也不需 要操作系 统 软件来管理 内存 ● 无管理模式的限 制是: 2002年8月 孟静制作 版权所有 35
3. 2. 1.2 覆盖技 术 ● 以两遍汇编程序 为例 ( 图 3.6) ●两遍汇 编程序 是指 : ●在第一遍 中, 汇编程 序构 造一个 符号 表 ●在第二遍 中, 汇编程 序产 生机器 语言 代码
●两遍汇 编程序 可以 划分为 三部 分 ●第一遍的 代码 ●第二遍的 代码 ●两遍中都 用到 的公共 支持 例程
● 对覆盖的评价 ●覆盖不 需要任 何来 自操作 系统 的特殊 支持 ●程序员 必须正 确设 计覆盖 结构 和编程 , 任务 繁重
2002年8月
孟静制作 版权所有
36
图 3. 6 覆盖技 术
2002年8月
孟静制作 版权所有
37
3. 2. 1.3 动态装 入 过程 : 1. 所有子程序以 可重定位 格式驻留在盘 上 2. 主程序执行前 只装入主 程序不装入子 程序 3. 当主程序要调 用一个子 程序或者一个 子程 序要调用另一个 子程序时 ●主程序首 先检 查子程 序是 否已被 装入 ●如未装入 , 调用可 重定位 连接装 入程 序来装 入希 望调 用的 子程 序并更 新相 应表格 ●将控制传 递给 新装入 的例 程
2002年8月
孟静制作 版权所有
38
动态装入的好 处 : ● (1) 节省内 存空间,提 高内存空间利 用率 ● (2) 节省外 存空间 ● (3) 提高了 程序独立性 ● (4) 节省 装入所需的 I/O 时间
2002年8月
孟静制作 版权所有
39
动态装入 技术与覆盖 技术的区别 ●采用覆 盖的用 户程 序的所 有子 程序地 址在 执行前 已固定 ●采用动 态装入 的用 户程序 中的 子程序 地址 在装入 时才确 定
2002年8月
孟静制作 版权所有
40
3. 2. 2 单一分区模式 和交换技术 ● 3.2.2.1 单一分区模 式 ● 3.2.2.2 多任务下的 单一分区 模式——交 换 技术 ● 3.2.2.3 DOS 实例分析 : 纯粹的单任 务单一 分区模式存在吗 ?
回节首
2002年8月
孟静制作 版权所有
41
3. 2. 2.1 单一分 区模式 ● 整个物理内存分 为系统区和 用户区 , 系统区 存放操作系统代 码 / 数据 / 栈,用 户区存放用 户程序的代码 / 数据 / 栈 ● 任一时刻 , 用户区最多 只有 1 个用户 程序且 连续完整存放 ● 主要用于单任务 (例如 DOS ,注意 其相对 性),也有用于 多任务的( 例如 CTSS ,注 意需要交换技术 ) ● 系统区和用户区 的位置关系 可能有很多 种, 各有利弊。 2002年8月
孟静制作 版权所有
42
图 3.7 系统区 与用户区 的位置关系
2002年8月
孟静制作 版权所有
43
续 ● OS 升版或 扩存→同一 用户程序不同 次执行 时起址不同 →用 户程序起址在 编译连接时 不 能确定、装入时 重定位。 ● 甚至在同一用户 程序同一次 执行中起址 也可 能变化 ( 例如低端 OS 的设驱动装等 ), 需要 执行中重定位或 地址映射。 ● 单一分区在 60-70 年代曾 被一些著 名通用操 作系统采用(例 如 DOS 、 CTSS 、 CP/M ),现在只用于 一些 专用系统中。现 在的通用 OS ( UNIX 、 windows 2002年8月 孟静制作 版权所有 、 linux) 都是页 44
单一分 区模式实 现要点 ● 单一分区下 OS 内存管理工作任 务: ●装入 ●重定位 与地址 映射 ●多任务 下实现 交换 技术 ●没有分 配回收 ,不 解决装 不下 问题
● 硬件支持 ●地址映 射与保 护机 制 ●盘交换 区(多 任务 下)
2002年8月
孟静制作 版权所有
45
图 3.8 所有连 续模式地 址映射过程 / 保护
2002年8月
孟静制作 版权所有
46
图 3.9 单一分 区模式下 的工作过程
2002年8月
孟静制作 版权所有
47
对单一 分区模式 的评价 ● 与无 OS 模式比 : ●用户程 序不用 再自 己考虑 装入 问题 ●OS 占内存 ●复杂度 增加: 用户 程序起 址 / 系统区 保护
● 与以后的五种模 式比: ●简单 ●内存空 间利用 率低 ●装不下 问题( 用户 级覆盖 等) ●动态伸 缩 ●保护 2002年8月
孟静制作 版权所有
48
3. 2.2. 2 交换技术
( 辅助图 3. 6)
● 单一分区多任务 下交换技术 解释要点: ●单一分 区→用 户区 只有 1 个用 户程 序 矛 ● 多 任 务 →系统 中有 多个进 程 盾 ?! ●有了交 换技术 就不 矛盾: 每当 进程切 换时 ,原当 前进程 从内存 -> 外存, 新当前 进程 从外存 -> 内 存 ●交换概 念的广 义与 狭义
● 交换技术实现要 点: ●盘交换 区 ●换入 / 换出时 间代 价与时 间片 长度 2002年8月
孟静制作 版权所有
49
交换技 术实现中的 五个问题 ● 1. 将哪个进程换出 ( 入 ) 内存 ? ● 2. 何时应发生交换 ? ● 3. 交换时需要做那 些工作 ? ● 4. 换回位置的确定 原则 ● 5. 交换所需时间导 致对时间片 影响、对 程序 长度保存使用要 求、动态扩 充时要及时 登记 的管理要求
2002年8月
孟静制作 版权所有
50
3. 2. 3 固定分区模式 和多道技术 ● 3.2.3.1 固定分区模 式 ● 3.2.3.2 多道技术
回节首
2002年8月
孟静制作 版权所有
51
3. 2. 3.1 固定分 区模式 ● 有 OS :整个物理 内存分为系 统区和用户 区 ,由 OS 装入用户程 序 ● 多道多任务:用 户区划分为 多个分区 ( 不一 定均分等长 ) ,每个 分区存放一 个用户程序 ( 图 3.7 ) ● 固定:由系统管 理员在每次 开机时根据 当天 要运行的作业情 况对内存作 静态划分 ● 连续完整存放: 用户程序在 内存连续完 整存 放,装不下问题 由用户程序 自行解决 ( 覆盖 技术 ) 2002年8月 孟静制作 版权所有 52 ● 连续编址:在固 定分区下用 户程序连续 编址
固定分区 模式下 OS 内存管理任务 ●划分内 存分区 ●装入 ●记录空 间的使 用情 况 , 进行 分配 和回收 ●保护问 题 ●其他 ●( 图 3.11 固定分 区模式 工作 过程 )
2002年8月
孟静制作 版权所有
53
图 3. 10 固定分区模式下 内存划分情 况与等待 队列
2002年8月
孟静制作 版权所有
54
图 3. 11 固定分区模 式的工作过 程
2002年8月
孟静制作 版权所有
55
对固定 分区模式 的评价 ● 相对单一模式, 存储的分配 和释放工作 复杂 了 , 必须记录各进程 使用存储的 有关信息 ● 内存利用率比单 一模式有所 提高,但仍 未充 分利用内存空间 , 原因是 : ●分区经 常未被 填满 , 存在内 部存 储碎片 ●存在因 分区太 小而 无法装 入的 现象 ●多道度 受分区 数所 限 ●动态扩 充时需 要付 出移动 代价 ●程序间 不能共 享 2002年8月
孟静制作 版权所有
56
固定分 区模式的实 际系统与适用 范 围 ●用于多 任务环 境 ●对批处 理系统 是简 单有效 的 ●允许作 业长时 间的 占有存 储和 长时间 运行 ●对于分 时系统 ,通 常用户 作业 多于内 存能 够保留 的进程 ,超出 的进 程驻于 盘上 ,因此 需要 采用交 换技术 ,由于 固定 分区模 式不 适于采 取交 换技术 ,因此 作为一 种多 道技术 其效 果不是 很好
●
总之,现在已基 本不再使用
2002年8月
孟静制作 版权所有
57
3.2. 3. 2 多道 ● 多道技术的实现 带来的进一 步的工作 ( 1 )为防止同 时在内存的 多个用户程序 间 发生地址冲突, 必须统一记 录内存使用 情况 ,统一管理分配 、回收、重 定位等工作 及这 些工作中的效率 ( 2 )为系统程序和 每个用户程 序提供保护 措 施,以防用户程 序互相干扰 ( 3 )多道下程序动 态扩缩要考 虑更多因素 ( 4 )多道下存在共 享的必要性 与可能性 2002年8月
孟静制作 版权所有
58
3. 2. 4 可变分区模式 技术
和 动态存
储分配
3.2.4.0 可变分区模式解 释与特点 3.2.4.1 可变分区模 式的基本工 作过程 3.2.4.2 策略选择( 算法与数据 结构) 3.2.4.3 可变分区模 式评价与实 际系统采用情 况 3.2.4.4 动态存储分 配
回节首
2002年8月
孟静制作 版权所有
59
可变分区模式 解释与特点 ● 注意唯一与固定 分区不同的 就是第 3 点 ● 有 OS :整个物理 内存分为系 统区和用户 区 ,由 OS 装入用户程 序 ● 多道多任务:用 户区划分为 多个分区 ( 不一 定均分等长 ) ,每个 分区存放一 个用户程序 ( 图 3.7 ) ● 可变——动态分 区:由系统 管理员在每 次开 机时根据当天要 运行的作业 情况对内存 作静 态划分 ● 连续完整存放: 用户程序在 内存连续完 整存 2002年8月 孟静制作 版权所有 60 放,装不下问题 由用户程序 自行解决 ( 覆盖
3. 2. 4.1 可变分 区模式基本工 作过 程 ● 分析结果 ( 图 3.9,3.10)( 综合分析得图 3.11,3.12) 1. 本模式进行动态 存储分配 2. 需维持一张表记 录内存使用 情况 3. 程序进入内存时 的例行工作 是根据并针 对所 用的数据结构进 行分配;程 序执行完毕 退出 内存时的例行工 作为回收 4. 一旦一个内存块 被分配给一 个进程,这 个进 程就可能被装入 该块中执行 ,入时需重 定位 5.2002年8月 装入后运行中需 解决地址映 射、内存保 护和 孟静制作 版权所有 61
图 3. 12 可变分 区模式内存 初始 / 动 态分 布
2002年8月
孟静制作 版权所有
62
图 3. 13 可变分 区模式下 的工作过程
2002年8月
孟静制作 版权所有
63
3. 2. 4.2 策略选 择 ( 算法与 数据结 构) ● 1. 分配算法 : 分配何处 ( 五种算 法 ) ●最先适配 / 下次适 配 / 最佳适配 / 最坏适 配 / 快速 适配 法
● 2. 分配多大空间 ● 无动态扩 充要 求的: 恰好分 配法 ● 有动态扩 充要 求的: 预留空 间法 ● 一般留 法(见图 3.13 ) ● “ 数据段 与栈段合留 法”(见图 3.14 )
●有时,选 定一 个空闲 块后 ,还存 在着 分配高 端还 是低 端的 选择
● 3. 内存登记表的数 据结构选择 : 位图 / 表 / 伙伴系统 2002年8月 孟静制作 版权所有 64
图 3. 14 预留 空间法
2002年8月
孟静制作 版权所有
65
图 3. 15 几种不同的 存储合并方 案
2002年8月
孟静制作 版权所有
66
3. 2. 4.3 评价改 善与实际系统 采用 情况 ● 相对于固定分区 模式: ●存储分 配和释 放工 作更复 杂 , 除了必 须记录 各进 程使用 存储的 有关 信息 , 还必须 进行自 然划 分与 合并工 作 ●提高了 内存空 间利 用率 , 但仍存 在空间 浪费 , 表 现在外 部存储 碎片 和内部 存储 碎片这 两方 面
● 对用户要求的满 足情况: ●动态伸 缩问题 可以 通过内 存移 动解决 ,比 固定分 区好在 分区可 以动 态划定 ●大程序 问题 / 速度 匹配问 题 : 若有交换 则涉 及淘 汰策略 2002年8月 孟静制作 版权所有 67 ●限制程 序长度 不能 超过内 存大 小,不 能采 用虚存
外部存储 碎片解决办 法 : ● 1. 存储合并 ●( 图 3.15,3.10) ●( 图 3.16 存储 合并方 案 )
● 2. 不连续技术
2002年8月
孟静制作 版权所有
68
3. 2. 4.4 动态存 储分配
2002年8月
孟静制作 版权所有
69
3. 2. 4.5 多对基 寄存器 ● 解决“外部存储 碎片”问题 的不连续方 案需 要多对基寄存器 和一个地址 映射机制的 支持 ● 实现途径 ●通过最 高地址 位的 识别把 内存 划分成 两部 分 ●或将一 个程序 分成 两部分 :代 码和数 据
2002年8月
孟静制作 版权所有
70
3. 3 不连 续模式之一 :页模式 ➪ 3.3.1 实存页模式的基 本工作过 程 ➪ 3.3.2 虚存页式基本工 作过程和 结构 ➪ 3.3.3 专题 (1): 虚存的概念和作 用 ➪ 3.3.4 专题 (2): 进程页表 : 快表 , 页目录 ➪ 3.3.5 专题 (3): 大而稀疏内存使 用 ➪ 3.3.6 专题 (4): 页分配、写时复 制、页长 ➪ 3.3.7 专题 (5): 页长和页簇化 ➪ 3.3.8 专题 (6): 页淘汰、工作集 、颠簸 ➪ 3.3.9 专题 (7): 盘交换区管理 2002年8月 孟静制作 版权所有 71 ➪ 3.3.10 页式评价和实际 采用情况
回章首
页模式的定 义特征: 1.os 管理 ,整个 物理 内存分 系统 区和用 户区 2. 内存 分为等 长页 面 (frame) 3. 程序 分为等 长页 (page) ,页与 页面通 常等 长, 4. 程序 在内存 存放 时,页 内连 续、页 间不 一定 连续 (即相 邻页不 一定 放在相 邻页 面中) 5. 程序 不一定 完整 进入内 存( 实存/ 虚存 ) 6. 程序 逻辑空 间编 址分为 一维 连续顺 序编 址与稀 疏编 址两种 , 后者需 特别 支持 √连 续存 放连续 编址 x 连续存 放稀疏 编址 (hole) √ 稀疏编 址、 不连续 存放 (实 / 虚存)
7. 多道 多任务 (实 / 虚存) 或单道 单任 务(虚 存)
注意不 连续 与不完 整是 本模式 与前 4模式 的区 2002年8月 孟静制作 版权所有 72 别。旨 在克 服前几 模式 的什么 缺点 ?
3. 3. 1 实存页模式 的 基本工作过 程与 结构 ●内存页 表 :负 责记 录所有 空闲 页面情 况 ●结构 ( 图 3.18) :整个 OS一 张, 每页面 一行 ,列 值 0/1 ●初值: OS 初始化时 建立 ●读写 ( 分配 ) 过程 ( 图 3.21)
●进程页 表:负 责记 录页与 页面 的对应 关系 ●结构 ( 图 3.1 9 ) :每个 进程一 张, 每页一 行 ,列值 为页 面号 ●初值:建 立进 程时建 立 ●读(映射 )写 (分配 )过 程 ( 图 3.2 0 )
●主要过 程(子 程序 或硬件 ): 系统初 始化 时,建 立进程 时,地 址映 射时 ( 硬 ) ,撤 消进程 时 2002年8月 孟静制作 版权所有 73 ●对实存 页模式 的评 价 : 存储 碎片 / 动扩 / 等
图 3. 16 页式内存 的动态分布
2002年8月
孟静制作 版权所有
74
图 3. 17 内存 页表的结构 与初值
2002年8月
孟静制作 版权所有
75
图 3. 18 实存页 式进程页 表的基本结 构
2002年8月
孟静制作 版权所有
76
图 3. 19 页模式 下的地址 映射基本过 程
2002年8月
孟静制作 版权所有
77
图 3. 20 实存页模式下 内存空间分 配 过程
2002年8月
孟静制作 版权所有
78
图 3. 21 实存页模式 下的工作过 程
2002年8月
孟静制作 版权所有
79
3.3. 2 虚存页式基 本工作过程 / 结构 ( 与实存 页相比 )
★数据结 构+:进程页 表中要表现 是 否在内存 ★过程+ : ★建立进程 时: 开始装入 多少 ★地址映射 时: 在内存吗 ?= 》可能导 致 ★缺页中断 处理 过程 ( 图 3.23) ★页淘汰过 程 ( 内存不够时 : 等待 / 拒 绝 / 淘汰 ) 回节首
2002年8月
孟静制作 版权所有
80
图 3. 22 缺页中断处理过 程
2002年8月
孟静制作 版权所有
81
图 3. 23 虚存页 式下地址 映射基本过 程
2002年8月
孟静制作 版权所有
82
3. 3.3 专题 1 :虚存的概 念和作用 一、概 念: ● 什么是虚存技术 :程序不完 整存放的自 动透 明实现技术。 ● 什么是虚存:虚 存技术下用 户程序所看 到的 逻辑内存空间。 ● “ 透明+ 不完整”意 味着逻辑 空间大于物 理 空间。 ● 虚存在页式、段 式、段页式 下都可实现 。 回节首
2002年8月
孟静制作 版权所有
83
3. 3. 3 专题 1 :虚 存的概念和 作用 (续 ) 二、虚 存技术的 作用与优点 :提高内存 利用率 1. 程序大空间小时 :相对于覆 盖等用户级 技术 --不 再需要用户 操心,而 是自动透明 实 现 2. 程序多空间小时 :相对于交 换技术 --增 加多道数 --减 少交换所需 I/O 量:以 页为单位 3. 即使不存在 上述两种空 间不够的情况 (即 内存空间足够大 ),虚存技 术也可以减 少装 入I/O量。 2002年8月 孟静制作 版权所有 84
3. 3. 3 虚存的概念和 作用(续) ● 使用虚存的缺点 : ● 地址映射更复杂 :缺页中断 处理和页淘 汰 ● 减慢了程序运行 的速度
2002年8月
孟静制作 版权所有
85
3. 3.4 专题 2: 进程页 表实现 ( 快表 / 页目录 )
● 进程页表放在哪 儿?(图 3.24 ( a )( b )( c )) ●答案 1: 内存 --则 每次 访存变 为两 次访存 (因 为每次 地址映 射时 须额外 访问 一次进 程页 表 ) ●答案 2: 快表 -- CPU(MMU) 中联 想式寄 存器 组 (TLB,translation lookaside buffer) ●答案 3 :前 两种的 综合
● 大虚址空间下的 内存进程页 表结构: --页 表页和页目 录 2002年8月
孟静制作 版权所有
回节首
86
图 3. 24 进程页表不同实 现方案下的 地址映射 过程
2002年8月
孟静制作 版权所有
87
大虚址 内存进程页 表结构 : 页表页 / 页目 录 算一算: 4G 程序 的进程页表多大?
页表 大且空 •90%10% 规则 •虚址占不满 4G
所以进 程页表数据 结构最好是动 态分配与伸 缩 OS 动态数据结构伸缩和用户程序一样有连 进程页表的大小是多页的 ( 否则 OS 的 续 / 不连续问题 (OS 静态数据结构可连续存 小数据结构以若干字节为单位动态分 放)
配)
具体体 现为以不连 续页为单位的 动态分配和 回 收 因此形 成页表页和 页目录概念和 机制(书图 ) 2002年8月
孟静制作 版权所有
88
算一算 :32 位计算机进 程页表多大 ? 按页长 8KB 、物理地址用 满 32 位计算: 页长 8KB 则页 32 位计算机 逻辑地 址 32 位 程序空间 4GB 进程页表行数 = 程序空间页 数: 4GB/8KB=512K 页(行 )
假设物理地 内位移 13 位 址用满 32 位 物理页号 19 位 物理页号 4B
进程页表大小 = 行数 * 物理页号字节数 =512K*4B=2MB ,进程页表页数 =2MB/8KB=256 页 每个页表页 ( 或页目录 ) 行数 :8KB/4B=2K 行(或 512K 行 2002年8月 孟静制作 版权所有 /256 页)
89
页表页 / 页目录本 质 :2 级不连续致 2 级 索引 用户程序不 连续存放 导致需要地 址索引 该索引就是 进程页表 而进程 页表又是不 连续存放 的页表页 s( 因动 态 伸缩
)
因此进程页 表(页表页 s )本身也需 要地址索 引 该索引 就是页目录 孟静制作 版权所有 故 2002年8月 2 级索引 : 页目 录是页表页
90 ( 进程页表 ) 的索
图 3. 26 二级页表结构 及其地址映 射 过程
2002年8月
孟静制作 版权所有
91
图 3. 27 三级页表结构 及其地址映 射 过程
2002年8月
孟静制作 版权所有
92
3. 3.5 专题 3: 大而稀 疏内存 编址 )
( 稀疏
● 作用与目的:满 足多处动态 伸缩需求( 弹性编址,突破 一维限制和 段长限制) 对页表变小并无 作用。 ● 界面: mmap,VirtualAlloc ● 实现(在二级页 表结构前提 下):需要 的数据结构来标 别已用的虚 址范围 ● 三次怠惰及其共 同本质(尽 量少占资源 第一次怠惰:稀 疏编址;第 二次怠惰: 页表项分配;第 三次怠惰: 缺页中断和 调页。 2002年8月
孟静制作 版权所有
实现 。但
另外 ): 进程 请求 回节首
93
图 3. 28 引入稀 疏编址后 地址映射过 程
2002年8月
孟静制作 版权所有
94
3. 3. 6 专题 4: 页分配策略 ( 请求调页 / 预先调 页 / 写时复 制 ) 一、页 分配策略 有以下六方 面的问题: (1) 进程执行前 分配多少页 (2) 一个进程申 请空间时是 否有空间就分 配 (3) 多个进程同 时申请时分 配给哪个进程 (4) 有多个空闲 页面,分配 哪个页面给用 户 程序 (5) 何时分配与 装入(称为 fetch 策略) 立即 调页 / 请求调 页 / 预先 [ 期 ] 调页 / 写时复 制
(6) 分配多少页
2002年8月
孟静制作 版权所有
回节首
95
3. 3. 6 专题 4: 页分配策略 ( 请求调页 / 预先调 页 / 写时复 制 ) ● 二、写时复制 (Copy on write) ● -- 降低进 程创建的开 销 ●不拷贝 父进程 的空 间,只 拷贝 父进程 的页 表,使 父进程 和子进 程共 享物理 空间 ,并将 该共 享空间 的访问 权限置 为只 读 ● 当任 何一方 进行 写操作 ,操 作系统 当即 检测到 这个非 法操作 ,这 时才将 要写 的页进 行复 制
2002年8月
孟静制作 版权所有
96
3. 3. 7 专题 (5) : 页长和页簇化 ● 页面长是由硬件 定义的,依 赖于计算机 体系 结构,随处理机 不同而不同 ● 页面大小为 2 的指 数幂可以使 得地址映射 过 程中从逻辑地址 得到逻辑页 号与页内位 移及 从物理页号和页 内位移得到 物理地址这 两步 非常容易 ● 一般情况下,页 长与页面长 是一样的 ; 有些 情况下需要页簇 化技术 回节首
2002年8月
孟静制作 版权所有
97
3. 3. 8 专题 (6) : 页淘 汰策略 / 工作集 / 颠簸 ● 页淘汰算法 ●FIFO ●LRU ●NRU— 自由 链表, 作无 效标记
回节首
2002年8月
孟静制作 版权所有
98
3. 3. 9 专题 (7) :盘 交换区管理
2002年8月
孟静制作 版权所有
99
动态连 接库 ● 动态连接,是将 连接延迟到 执行时间而 装入 不延迟 ( 与动态装入 比较 ) ● 动态连接主要用 于系统库与 用户程序的 连接 ● 动态连接库
2002年8月
孟静制作 版权所有
100
3. 3. 10 页式评价和实 际采用情况 ● 与三种连续模式 相比 , 提高了内存 利用率 (2 点) ●不连续 可避免 自由 空间总 和够 却不能 分配 装入 ●可实现 虚存 ●页式管 理特有 的不 连续方 式彻 底消除 了内 存(及 盘交换 区)外 部存 储碎片 ,但 仍存在 内部 存储碎 片
● 与三种连续模式 相比,地址 映射等时间 代价 增大,速度效率 降低 ● 对用户要求的满 足情况:动 态伸缩/虚 存/ 共享 2002年8月 孟静制作 版权所有 101 回节首
3. 4 不连续 模式之二 三 : 段式/ 段 页式 ➪ ➪ ➪ ➪ ➪
3.4.1 3.4.2 3.4.3 3.4.4 3.4.5
段模式定义和用 段模式的基本工 段模式中的一些 段模式的评价和 段页式
户内存观 作过程和 策略的专 实际系统
点 结构 题讨论 采用情况
回章首
2002年8月
孟静制作 版权所有
102
3. 4. 1 段模 式定义和用 户内存观 点
2002年8月
孟静制作 版权所有
103
3.4. 1. 1 段模式定义 三个特 性: 1. 将用户程序空间 按逻辑划分 为几段 ( segment ),每 个段内连续 编址,段间 是不一定连续编 址的 2. 段模式是以 段为单位划 分和连续完整 存放 3. 段模式分实存段 式与段式虚 存两种
2002年8月
孟静制作 版权所有
104
图 3. 29 段式二维 编址
2002年8月
孟静制作 版权所有
105
3.4. 1. 2
用户内存观 点
● 分段是支持所示 用户内存观 点的一种内 存管 理模式 ( 图 3.26) ●正文段 ( text segment ) ●数据段 ( data segment ) ●栈段( stack segment ) ●共享内 存段( shared memory segment ) ●其他段 类型
2002年8月
孟静制作 版权所有
106
( 图 3. 30 用户内存 观点 )
2002年8月
孟静制作 版权所有
107
3. 4. 2 段模式 的基本工作 过程和结 构 对引例 的分析及 结论: 1. 内存表现为已用 块、空闲块 ,必须记录 各进 程使用存储的有 关信息 ( 数据结构见图 3.27) 2. 系统工作稳定后 ,内存必然 呈现两种随 机分 布: ●“ 第一点” 中讲 述的内 存空 闲区的 动态 随机分 布 ●对在内存 的每 个程序 来说 ,其所 有段 所对应 的分 区不 连续 的随 机分散 在内 存各处 —进 程段表 ( 结构 见图 3.28; 过程见图 3.29) 回节首
3. 建立一个进 程时,内存 的例行工作为 分配 2002年8月 孟静制作 版权所有 108 、装入 ( 可能会拒绝 或等待 )
续 4. ●一旦一 个进程 的所 有段都 找到 了适合 的块 ,则执 行相应 的装入 工作 ,然后 开始 执行 ●执行过 程中需 要重 定位 ●地址映 射过程 中需 要硬件 支持 ●装入后 运行中 还需 解决保 护与 动态伸 缩问 题
2002年8月
孟静制作 版权所有
109
图 3. 31
2002年8月
段模式 下的内存 动态分布
孟静制作 版权所有
110
图 3. 32 内存空闲块登 记表的结构 与 初值
2002年8月
孟静制作 版权所有
111
图 3. 33 进程段 表的结构
2002年8月
孟静制作 版权所有
112
图 3. 34 段模式下的 地址映射过 程
2002年8月
孟静制作 版权所有
113
图 3. 35 段模式 基本工作 过程与结构
2002年8月
孟静制作 版权所有
114
3. 4.3 策略专 题讨论 : 段表实 现、段 淘汰 ● 1. 段表实现与段的 划分 : ● ● ● ●
段表 的位置 段长 与段数 的确 定 段的 划分 进程 切换时 , 切换 程序必 须将 进程段 表置 入快 速寄存 器或进 程段 表基址 寄存 器
● 2. 段模式的分配算 法
回节首
2002年8月
孟静制作 版权所有
115
3. 4.4 段模式 的 评价 和 实际系 统采用 情况 ● 对段模式的评价 :内存利用 率比可变分 区好 ,比页式差,保 护与共享与 前几种相比 都好 ( 段的最大好 处:充分实 现共享和保护 ) ●段模式 提供二 维编 址,最 符合 用户观 点和 程序逻 辑 ●段比可 变分区 更复 杂,但 空间 利用率 提高 了 ●空闲空间 利用 情况 / 已用空间 利用 情况
●动态扩 充没有 页实 现的好 ●虚存技 术较好 的解 决装不 下问 题,但 没有 页式好 ●段模式 下的保 护 ( 图 3.29)
2002年8月
孟静制作 版权所有
回节首
116
段模式 的实际采用 情况和使用 范围 ( 1)
Intel8086 家族
该环境 下的 程序通 常划 分为代 码段 ,数 据段, 栈段
( 2) ( 3)
2002年8月
IBMOS/360VMS 在多道系统中 广泛采用
孟静制作 版权所有
117
3.4. 5 段页式存储 管理模式 ● 段页式的实 现 ● 段页式的评 价 ● 段页式的采 用情况和适 用范围
回节首
2002年8月
孟静制作 版权所有
118
图 3. 36 段页式地 址映射过程
2002年8月
孟静制作 版权所有
119
3. 5 内存管理实 例分析 ➪ 3.5.1 CPU 对内存管理 硬件支持实 例分析 : Intel&MIPS ➪ 3.5.2 Windows 2000/NT 内存管理 ➪ 3.5.3 Linux 内存管理
回章首
2002年8月
孟静制作 版权所有
120
3.5 .1 C PU 对内 存管理 硬件 支持实 例分 析 : In te l& MIP S
1.MIPS R4000 CPU 对内存管理 的硬件支持 机制 2.Intel x86/Pentium 系列 CPU 对内存管 理 的硬件支持机制
2002年8月
孟静制作 版权所有
121
1. MIPS R4000 内存管理 硬件支持 机制
2002年8月
孟静制作 版权所有
122
图 3. 37 MIPS R4000 TLB 格式
2002年8月
孟静制作 版权所有
123
图 3. 38 MIPS R4000 TLB 地址 映射
2002年8月
孟静制作 版权所有
124
图 3. 39 MIPS R4000 地址空 间
2002年8月
孟静制作 版权所有
125
2. Intel x 86 内存管 理硬件支 持机 制
2002年8月
孟静制作 版权所有
126
表 3.4 In tel x86/ 奔腾系列 CPU 存储 性能 ● 见书 P233
2002年8月
孟静制作 版权所有
127
图 3.40 x86 实方式下地址映射过程
2002年8月
孟静制作 版权所有
128
图 3.41286 以上保护方式段式地址映射
2002年8月
孟静制作 版权所有
129
图 3.42 386 以上保护方式页式地址映 射
2002年8月
孟静制作 版权所有
130
图 3.43 386 以上保护方式段页式地址 映射
2002年8月
孟静制作 版权所有
131
图 3.44 286 以上 保护方式非段非页地 址映射
2002年8月
孟静制作 版权所有
132
图 3.45 286 以上段机制
2002年8月
孟静制作 版权所有
133
图 3.46 386 以上页机制
2002年8月
孟静制作 版权所有
134
表 3.5 x86 内存管理相关指令 ● 见书 P239
2002年8月
孟静制作 版权所有
135
3. 5. 2 Windows2000/ NT 内存管 理
3.5.2.0 2000/NT 内存管 理概 述 3.5.2.1 2000/NT 内存管 理用 户 界面 3.5.2.2 2000/NT 内存管 理内 部 实现 回节首
2002年8月
孟静制作 版权所有
136
3. 5.2. 0 2000/ NT 内存管理概述 ● Windows NT 的内存管理 采用请求调 页簇 式的页式虚存管 理 ● NT 内存管理程 序由 NT 执行体中 的虚存管 理 程序负责 ● 图 3.31,3.32,3.33 ● 2. 进程虚地址空间 的构成:页 交换区、 非页 交换区、直接映 射区 ( 图 3.31) ●系统区 低端的 直接 映射地 址区 具有三 个特 性:① 该区中 的内容 永远 不会按 页交 换出内 存 ② 这一 区域由 硬件直 接映 射 ③该 区中 用于存 放核 心代 码和数 据中需 要最孟静制作 好性能 的部 分 2002年8月 版权所有 137
图 3. 47 2000/ NT 进程虚空间分 配 图
2002年8月
孟静制作 版权所有
138
图 3. 48 2000/ NT 内存管理机制 总 貌
2002年8月
孟静制作 版权所有
139
3. 5.2. 1 NT 内存管 理用户界 面 ● “ 本机服 务”主要在 进程对象 服务和段对 象 服务中提供,包 括内存共享 、内存保护 、内 存锁定、映像文 件、管理另 一进程的虚 存等 ● 本机服务主要用 在: (1) 环境子系统用来 管理客户进 程 (2) Win32 子系统将“ 本机服务” 中的 一部分传递给了 它的客户进 程
2002年8月
孟静制作 版权所有
140
表 3. 6 W in32 API 内存类函数 见书 P242
2002年8月
孟静制作 版权所有
141
1. 通过进 程对象服 务提供 的 虚存管理 服务 其部分 内容透过 Win32 API 向其 Win32 的 客户进程提供 (1) 以两阶段方 式分配内存 --保留 内存和在 用内存 (2) 将指定的页 锁定在内存 ,使其避 免被页淘 汰调出 (3) 管理另一进 程的虚存
2002年8月
孟静制作 版权所有
142
2. 通过区域对象服 务提供大数 据流 / 内存共 享 服务 2000/ NT 对用户进程 提供了出色 的共享内存 机制 : (1) 区域对 象与区域对 象服务 ( 图 3.41) ●共享进 程通过 创建 “区域 现象 ”作为 共享 的内存 区域 ●区域段 对象的 大小 可远大 于进 程虚拟 地址 空间大 小
(2) 视口 ( 图 3.40) ●系统提 供“视 口( view )” 机制, 使一 个进程 可逐个 视口的 访问 区域对 象或 访问所 要的 特殊视 口 2002年8月 孟静制作 版权所有 143
图 3. 49 区域对 象
2002年8月
孟静制作 版权所有
144
表 3. 7 区域对 象属性 见书 P244
2002年8月
孟静制作 版权所有
145
图 3. 50 映射一个区 域的一些视 口
2002年8月
孟静制作 版权所有
146
图 3. 51 在小 空间中处理 大空间
2002年8月
孟静制作 版权所有
147
3. 5. 2.2 2000/ NT 内存管理内 部实 现 1. 进程页表的实现 与地址映射 过程 2.2000/NT 的内存页 表:物理 页数据库 3. 页分配:簇式请 求调页、写 时复制 4. 虚址描述符、大 而稀疏内存 使用、保留 内存 5. 内存共享:原型 页表项和区 域对象 6. 页淘汰算法与工 作集的自动 调整 7. 对进程专有内存 设置页级保 护 8. 系统区:页交换 区、非页交 换区、直接 映射 区 孟静制作 版权所有 148 9.2002年8月 盘交换区管理
1. 进程页 表的实现与 地址映射过 程 TLB 、页表页、页目 录、虚址描 述符、原 型页 表项 (1)NT 的进程页表 采用二级页 表机制(参图 3.26) ,并采用快 表高速缓存 和高速缓存来 加快访存速度 (2)NT 的内存管理 需要考虑可 移植性问题, 这 是 NT 内存管理在实现 进程页表 和地址映射 机制时的主要考 虑 (3) 进程页表中 的虚址不是 连续的 (4) 对于共享内 存的表示中 的内容没 有指向物 2002年8月 孟静制作 版权所有 149 理页号,而是指 向原型页表 项
2. 2000/ NT 的内存页 表:物理页 数 据库 ● 物理页在任一指 定时刻可能 有以下六种 状态 之一 : ●有效 ●零初始 化 ●空闲 ●备用 ●更改 ●坏页
● 对后五种状态, 形成五个链 表:零初始 化表 、 2002年8月 孟静制作 版权所有 ● 空闲表、备用表 、更改表和 坏页表 ( 图 150
图 3. 52
2002年8月
内存页表项( PFN )结 构
孟静制作 版权所有
151
图 3. 53
2002年8月
物理页 数据库及其中 5 种 链表
孟静制作 版权所有
152
图 3. 54
2002年8月
物理页 6 种状态 间转换关 系
孟静制作 版权所有
153
3. 页分 配:簇式请 求调页、 写时复 制 (1) 按照“零初 始化或空闲 状态物理 页 -> 备用 状态物理页 -> 更改状态物理页 ”的顺序分 配 (2) 创建一个新 进程,用户 可指定 NT 虚存管 理程序使用两个 方法初始化 其虚址空间 : ① 复制另一个进程 的虚址空间 ② 当创建一个新进 程来运行一 个可执行程 序时,直接将该 可执行目标 程序文件装 入并 映射到该新进程 的虚址空间 2002年8月
孟静制作 版权所有
154
4. 虚址描述 符 、 大而稀疏内存使用 内存
、 保留
参考图 3.33
2002年8月
孟静制作 版权所有
155
5. 内存共 享:原型页 表项和区域 对 象
2002年8月
孟静制作 版权所有
156
图 3. 56 共享内存 的地址映射
2002年8月
孟静制作 版权所有
157
6. 页淘汰 算法与工作 集的自动调 整 ● 页淘汰算法:局 ● 工作集定义:该 合 ● 最小、最大、缺 ● 在进程执行过程 大小进行自动调
2002年8月
部 FIFO 算法 进程当前在 内存中的页 的集 少工作集大 小 中, 2000/NT 会对工作集 整
孟静制作 版权所有
158
在进程执行 过程中, 2000/ NT 会对工作集大 小进行自 动调整 (1) 当一个进程 的工作集降 到最小工 作集后, 如果该进程再发 生缺页中断 ,并且内存 还不 太满,则 NT 虚存管理 程序会增 加该进程的 工作集大小 (2) 当一个进程 的工作集升 到最大工 作集后, 如果没有足够内 存可用,则 该进程每发 生一 次缺页中断, NT 虚存 管理程序都 要从该工 作集中淘汰掉一 页后,再调 入此次缺页 中断 所请求的页 (3) 当物理内存 所剩不多时 ,虚存管 理程序对 内存中的每个进 程检查其当 前工作集大 小是 2002年8月 孟静制作 版权所有 159
7. 对进程专有内 存设置页级 保护 ● Windows NT 为内存 保护提供了 四种形式 : ● 每个 进程具 有单 独的地 址空 间,硬 件不 允许线 程访问 另一进 程的 虚拟地 址 ● 两种 运行状 态: 核心态 、用 户态 ● 以页 面为基 础的 保护机 制 ●每个虚 拟页面 均有 存取保 护信 息,实 现访 问监控 ● 以对 象为基 础的 内存保 护
2002年8月
孟静制作 版权所有
160
8. 系统区 : 页交换 区 、 非页 交换 区 、 直接 映射区
2002年8月
孟静制作 版权所有
161
图 3. 57 系统页 表和进程 页表的关系
2002年8月
孟静制作 版权所有
162
9. 盘交换区 管理
2002年8月
孟静制作 版权所有
163
图 3. 58 不在内 存的页的 页表项格式
2002年8月
孟静制作 版权所有
164
3.5. 3 Li nux 内存管理 ● 页式虚存,请求 分页,时钟 页淘汰算法 ,支 持共享内存,页 长随 CPU 页而异( 48KB ),进程虚空 间最大长 度随 CPU 而异 ( 4-16GB ),独 立于体系结 构的内存 管理 模型 ● 相关系统调用 :mmap 类 ,swap 类 , module 类 ... ● 图 3.59 Linux 内存管理机制 总图 ● 图 3.60 Linux 进程虚空间用 户段结构 ● 三级地址映射( 参图 3.27 ) 回节首
2002年8月
孟静制作 版权所有
165
图 3. 59 Li nux 内存管理 机制总图
2002年8月
孟静制作 版权所有
166
图 3. 60 Li nux 进程虚空 间用户段 结构
2002年8月
孟静制作 版权所有
167
3.6 内存管 理总结和 有关进一步 理 论 ● 四空间概念:进 、内存逻辑空间 ● 从四空间及其关 ● 七模式的关系和
程逻辑空间 、进程物理 空间 、内存物理 空间 系看本章概 念和模式 比较
回章首
2002年8月
孟静制作 版权所有
168
表 3. 8 内存管 理模式总结表 (在单 独的 WORD 文件中 )
2002年8月
孟静制作 版权所有
169