《操作系统》 4存储管理课件

  • 格式:ppt
  • 大小:2.86 MB
  • 文档页数:37

下载文档原格式

  / 37
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(a)
(b)
(c)
3. 地址定位的三种方式
(1) 绝对定位方式 即在程序装入内存之前,程序指令中的地址就已经是绝对地址,已经 正确地反映了它将要进入的存储区位置。 优点是程序中的逻辑地址与实际内存的物理地址相同,不再需要对指令中的地址进 行任何重定位,装入到指定的内存位置就可以运行了。缺点是编程人员要熟悉内存使用 情况,要小心对待指令中的地址,不能出差错;程序在内存不能移动,只能固定在该存 储区内;对程序所作的微小修改,都可能牵扯到程序整体的变动;不适用多道程序设计 环境。 (2) 静态重定位方式 要有重定位装入程序,功能是:根据当前内存使用情况,为欲装入的二进制目标程 序分配所需存储区;根据所分配的存储区,对程序中的指令地址进行重定位;将重定位 后的二进制目标程序装入到指定的存储区中。 用户提供相对于“0”编址的二进制目标程序。通过重定位装入程序的加工,目标程 序进到分配给它的物理地址空间,程序指令中的地址都被修改为正确反映该空间的情形。 由于地址重定位在程序执行前完成,因此称为“静态重定位”,或“静态地址绑 定”。特点是:重定位由软件实现,无须硬件支持;在程序运行前完成地址重定位工作; 地址重新计算和修改是在程序装入时集中完成;物理地址空间里的目标程序与原逻辑地 址空间里的目标程序已不相同;位于物理地址空间里的用户程序不能在内存中移动,除 非重新进行地址定位;适用于多道程序设计环境。
址开始的一段连续的内存空间,被称为“物理地址空间”,或“绝对地址空间”。 内存
1. 用户程序的两种地址和空间
. 在多道程序设计环境下,用户无法事先指定要占用内存的哪个 . . .
区域,也不知道自己的程序将会被放在内存的什么地方。 程序通过链接编辑,产生出相对于“0”计算的地址 空间,这个地址空间称为是用户程序的“相对地址空 间”,或“逻辑地址空间”,其地址称为“相对地址” 或“逻辑地址”。系统所接受的,就是这种相对于“0” 编址的用户程序。 这样的程序是不可能直接投入运行的,因为程序中 的地址没有能够反映出它所在存储区的真正存储位置。
第4章 基本存储管理
本章目录
4.1 存储管理预备知识
4.1.1 用户程序的四个处理阶段 4.1.2 地址重定位 4.1.3 程序的链接 4.1.4 存储管理的功能
4.3 分页式存储管理
4.3.1 分页式存储管理的基本思想 4.3.2 分页式存储管理的地址转换
4.3.3 页帧的分配与回收
4.4 分段式和段页式存储管理
2. 翻译阶段
为了程序的运行,先应使用汇编程序或编译程序对 源程序进行翻译处理,产生出称为“目标程序”的二进 制程序代码,这属于翻译阶段。
源程序 翻译阶段
3. 链接编辑阶段
把目标程序代码链接装配到一起, 成为一个统一的程序整体。经过链接编辑阶段, 得到用户程序相对于“0”编址的一个完整的二 进制目标程序代码。
wk.baidu.com
. 系统初启时将内存划分成n个分区(尺寸大小可以不等),系统运行过
. .
应该有每个分区的起 700KB 始地址、长度,以及 第4分区 第4分区 800KB 一个使用标志。当某 (a) (b) 分区的使用标志为“0” 时,表示该分区当前是空闲的,可以分配;当某分区的使用标志不为“0”时,表示该分 区已经分配给了一个作业使用,里面存放的是这个作业的名称。
用户程序的 逻辑地址空间 0
a 用户 程序的 物理 地址空间 a+k
k 逻辑 地址 装入
物理 地址
2. 地址的重定位
程序被装入到分配给它的内存储区时,必须对每 条指令里所涉及到的逻辑地址进行修改,使它们能够 正确地反映出所在的存储位置。这种把逻辑地址转换成物理地址的过程,称为地址的 “重定位”。
. 例如,假定用户程序A的相对地址空间为0~3KB(0~3071),在程序
库代码
其他 代码
目标程序 代码
链接编辑阶段 磁盘 可执行程序 代码 装入阶段 程序 地址空间
4. 装入阶段
装入阶段的任务,是根据内存的使用情况, 为进入内存的程序分配存储区,对程序中的地 址进行调整。
返回目录
4.1.2 地址重定位
. 内存单元的地址称为“绝对地址”或“物理地址”。从任何一个绝对地
.
. . 若把程序A装入到(22KB~25KB)的绝对地址空间里,那么call指令
用户程序A的 相对地址空间 xxxxxx 内存 0 20KB 20KB+100 21KB 操作系统 xxxxxx 0 20KB 20KB+100 21KB 内存
内存 0 操作系统
中地址100 所对应的绝 0 对地址就是 100 22KB+100 1KB = 22628了。 如图(d) 所示。 2KB
中地址为3000的地方,有一条调用子程序(其入口地址为100)的指令: “call 100”,如图(a)所示。 对用户程序原封不动的装入,不能使它正确运行,因为在执行到位于绝 对地址20KB+3000处的“call 100”指令时,它就会转到绝对地址100处去调用所需的子 程序,而这个地址却是在操作系统里面,如图(b)所示。 把指令“call 100”中的100变换成20580,就是地址重定位,如图(c)所示。
.
2. 固定分区存储管理
程中,分区的个数及尺寸保持不变,每个分区里只装入一个作业运行。这 就是“固定分区”存储管理。 对作业的组织 系统可以为每个分区设置一个后备作业队列,形成多队列的管理方式,如图(a)所 示;也可采用多个分区只设置一个后备作业队列的办法,如图(b)所示。 0 为管理内存中的 多个队列 操作系统 操作系统 100KB 各分区,操作系统设 第1分区 第1分区 置一张名为“分区分 200KB 配表”的表格,它随 单个队列 第2分区 第2分区 时记录各分区的信息 400KB 及当前的使用情况 。
操作系统
xxxxxx
20KB 22KB 22KB+100 23KB
xxxxxx
X
22KB 20KB+3000 call 100 23KB 22KB 24KB 20KB+3000 call 20580 23KB
3000 call 100 3KB
22KB+3000 call 22628 25KB (d)
.
1. 链接的含义
.
.
2. 静态链接和动态链接
接编辑程序将一个个程序段的相对地址空间链接成为一个大的、统一的相对地址空间。 由于这样的工作是在程序运行之前,因此称为是“静态链接”。 在程序执行过程中,有些程序段不一定会用到。比如,考虑到程序执行过程中可能 出现错误,于是编写了有关出错处理的程序段。如果程序执行中没有出错,那么静态链 接时为链接出错处理程序段所付出的花销就白费了。 可把对程序段的链接编辑工作推迟到程序执行时进行:遇到外部引用时,才对所涉 及的程序段进行链接编辑工作,才将这段程序纳入到统一的地址空间中。由于这样的链 接编辑工作是在程序运行时根据需要进行的,因此称为“动态链接”。 动态链接的实现要复杂许多,它需要得到软、硬件的支持。这将在下一章请求段式 存储管理中介绍。
. .
. . . .
返回目录
4.1.3 程序的链接
链接编辑是程序运行前经历的阶段,目的是把单独翻译出来的一个个目 标程序代码,链接编辑产生出一个统一的目标程序代码,然后提交给装入程序。 目标程序代码中, 程序段A 0 可能会出现对其他程序 相对地址 段的调用,称为“外部 外部引用 调用B: 0 长度L 引用”。 JSR L 程序段A L-1 返回 在把程序段链接成 程序段B L-1 返回 一个统一的大相对地址 0 L 空间0~L+M+N-1后, JSR L+M 就知道程序段B在这个 外部引用 调用C: 长度M 程序段B 链接编辑 空间里的入口地址是L, 返回 L+M-1 返回 M-1 程序段C的入口地址是 L+M L+M。应把原先用符号 程序段C 程序段C 0 表示的外部引用“调用 返回 L+M+N-1 长度N B”等修改成诸如“JSR 返回 L”的转移指令。这就是 N-1 “链接编辑”的含义所 在。
4.4.1 分段式存储管理 4.4.2 段页式存储管理
4.2 分区存储管理
4.2.1 固定分区存储管理 4.2.2 可变分区存储管理
4.2.3 其他管理技术:覆盖、交换、伙伴系统
4.1
4.1.1
1. 编辑阶段
存储管理预备知识
用户程序的四个处理阶段
用户 编辑阶段
用汇编语言或某高级语言编写程序,是产生用户程 序的编辑阶段,该阶段的结果是得到“源程序”文件。
1. 单一分区存储管理
. 实行静态重定位,不能阻止用户有意无意地通 过不恰当的指令闯入操作系统所占用的存储区域。 . 在单一分区存储管理中,为有效阻止用户程序
指令中的地址闯入操作系统所占用的区域,在CPU中会设置一个 用于存储保护的专用寄存器——“界限寄存器”,如图所示。
内存 0 操作系统 a 界限寄存器 a
. 单一分区存储管理的系统,任何时刻只有一个用户程序驻留内存。因此内存为两个 部分:供操作系统使用的系统区和供用户程序使用的用户区。 . 单一分区存储管理系统的特点:
(1) 总是把一个连续的用户区分配给一个用户使用,如图(a)中的a~b区域。 (2) 用户区分为“使用区”和“空闲区”两部分,如图(b)所示。使用区是用户作 业程序真正占用的连续存储区域;空闲区是分配给了用户、 内存 内存 0 0 但未被用户使用的区域,称为“内部碎片”。 操作系统 操作系统 a a (3) 这种系统只适用于单用户的情况。 (4) 进入内存的作业,独享系统 中的所有资源 ,包括内存中的整 使用区 用 作业3 作业2 作业1 用户区 个用户区。 户 区 (5) 由于整个用户区都分配给了 c 一个用户,因此作业程序进入用户区 空闲区 后,没有移动的必要。所以采用这种 b b 存储管理策略,对用户程序实行静态重定位。 (a) (b)
. 根据实施链接编辑的不同时刻,可把链接分为静态链接和动态链接两种。 . 所谓“静态链接”,是指整个链接编辑工作发生在程序运行之前,由链
.
. .
4.1.4 存储管理的功能
. 内存的分配与回收 . 地址定位
. 存储保护和共享 . 存储扩充
返回目录
4.2 分区存储管理
4.2.1 固定分区存储管理
使用区
. 界限寄存器中,总是存放内存用户区的起始地址。CPU在
c
核心态下工作时,允许访问内存中的任何地址;CPU在用户态 空闲区 下工作时,对内存的每一次访问,都要在硬件的控制下,与界 b 限寄存器中的内容进行比较。一旦发现所访问的地址小于界限 寄存器中的地址,产生“地址越界”中断,阻止这次访问的进行, 从而将作业限制在规定的存储区域内运行,确保操作系统中的信息不受外来的破坏。 单一分区存储管理的缺点 (1) 每次只能有一个作业进入内存,故不适用于多道程序设计,整个系统的工作效率 不高,资源利用率低下; (2) 只要作业比用户区小,那么在用户区里就会形成碎片,如果用户作业很小,那么 这种浪费是巨大的; (3) 若用户作业的相对地址空间比用户区大,那么该作业就无法投入运行,因为大作 业无法在小内存上运行。
.
.
. . .
(3) 动态重定位方式 若将地址定位的时间推迟到程序执行时进行,那么称其为地址的“动 态重定位”方式。 对程序实行动态重定位需要硬件支持:一个地址转换机构。它由地址 转换线路和一个“定位寄存器”(也称“基址寄存器”)组成。这时,用户程序不做任 何修改地装入到分配给它的内存空间中。当调度到程序运行时,就把它所在物理空间的 起始地址加载到定位寄存器中。CPU每执行一条指令,就把指令中的相对地址与定位寄 存器中的值相“加”,得到绝对地址。然后按这绝对地址去执行指令,访问所需要的存 内存 储位置。 (4) 静态重定位和动态重定位的比较 定位寄存器 0 用户程序A的 操作系统 静态重定位在程序运行之前完成地 22KB 20KB 相对地址空间 址转换;动态重定位则是将地址转换的 22528 0 22KB 时刻推迟到指令执行时进行。 100 xxxxxx 22KB+100 xxxxxx 22628 静态重定位由软件完成地址转换; 1KB 动态重定位由硬件地址转换机构完成。 23KB 静态重定位在装入时一次性集中 100 2KB 把程序指令中所有地址全部加以重定 24KB 位;动态重定位则是每执行一条指令 3000 call 100 22KB+3000 call 100 时,才其地址加以重定位。 3KB 25KB 静态重定位时原来的指令地址被修 (a) 改了;实行动态重定位,不对指令本身做修改。 (b)