内存管理PPT课件

  • 格式:ppt
  • 大小:1.12 MB
  • 文档页数:25

下载文档原格式

  / 25
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12
交换
滚入,滚出—由于基于优先级的算法,低优先级的进 程被换出,这样高优先级的进程可以被装入和执行。 交换时间的主要部分是转移时间,总的转移时间直接 同交换的内存空间成正比。 I/O问题 – 当I/O的时候,把工作锁定在内存中。以免I/O操作
访问另一进程的内存 – 只使用操作系统缓冲。仅当换入进程后,才执行操
10
一个Two-Pass 汇编程序的覆盖
11
交换
一个进程可以暂时被交换到内存外的一个备份存 储上,随后可以被换回内存继续执行。
– e.g. round-robin CPU scheduling
备份存储—通常是快速磁盘,必须足够大,以便 容纳所有用户的内存映像拷贝,也必须提供对这 些内存映像的直接存取。
– 需要硬件对动态地址映射的支持,例如基址和限长 寄存器
– 基址寄存器这时称为重定位寄存器。用户进程所生 成的地址在送交内存之前,都将加上重定位寄存器 的值。
5
使用重定位寄存器的动态重定位
6
动态加载
一个子程序只有在调用时才被加载。 更好的内存空间利用率;不用的子程序决不会被 装入内存。 当需要大量的代码来处理不经常发生的事情时是 非常有用的。 不需要操作系统的特别支持,通过程序设计实现。
– 操作系统包含以下信息
a) 已分配的分区
b) (hole) 空闲的分区
OS
OS
OS
OS
process 5 process 8
process 5
process 5 process 9
process 5 process 9 process 10
process 2
process 2
process 2
process 2
17
动态存储分配问题
根据一组空闲孔来分配大小为n的请求,常用方法有:
First-fit (首次适应) : 分配最先找到的合适的孔。 Best-fit (最佳适应) : 搜索整个序列,找到适合 条件的最小的孔进行分配。 Worst-fit (最差适应) : 搜索整个序列,寻找最 大的孔进行分配。
在速度和存储的利用上,首次适应和最佳适应要 比最差适应好。
作系统缓冲与进程内存之间的数据转移。
13
使用磁盘作为备份存储空间的两个进程的交换
14
连续内存分配
主存通常被分为两部分
– 用于驻留操作系统:为操作系统保留的部分,通常用 中断向量保存在内存低端。
– 用于用户进程 :保存在内存高端。
采用连续内存分配时,每个进程位于一个连续的 内存区域 内存保护:保护操作系统不受用户进程影响,保 护用户进程不受其它用户进程影响。措施:
源自文库18
碎片
外部碎片 –当整个内存空间可以满足一个请求,但 它不是连续的。 内部碎片–分配的内存可能比申请的内存大一点, 这两者之间的数字之差。 通过紧缩来减少外部碎片 – 移动内存内容,把一些小的空闲内存结合成一
个大的块。 – 只有重置是动态的时候,才有可能进行紧缩,
紧缩在执行时期进行
19
分页
分页内存管理方案允许进程的物理地址空间可以 是不连续的。 把物理内存分成大小固定的块,称为帧。 把逻辑内存也分位同样固定大小的块,叫做页。 运行一个有N页大小的程序,需要找到N个空的 帧读入程序。 页、帧大小由硬件来决定,通常为2的幂 建立一个页表,把逻辑地址转换为物理地址。
第九章 内存管理
背景
程序必需放入一个进程,并且送入内存才能被 执行
多道程序设计
– 共享CPU => CPU 调度
– 共享内存 => 内存管理
内存由很大一组字或字节所组成,每个字或字 节都有自己的地址 输入队列— 磁盘上等待进入内存并执行的进程 的集合
2
地址映射
逻辑地址(虚拟地址)-CPU所生成的地址 物理地址-内存单元所看到的地址
– 在一些早期的系统中都有一个装入程序(加载程序),它负责将 用户程序装入系统,并将用户程序中使用的访问内存的逻辑地址 转换成物理地址。
– 优点是实现简单,不要硬件的支持。 – 缺点是程序一旦装入内存,移动就比较困难。有时间上的浪费。
在程序装入内存时要将所有访问内存的地址转换成物理地址。
4
执行时:如果进程在执行时可以在内存中移动, 则地址绑定要延迟到运行时。
3
进程在执行时,会访问内存中的指令和数据。将指令和 数据捆绑到内存地址可以在以下步骤的任何一步中执行。
编译时期 : 如果内存位置已知,可生成绝对代码;如果开 始位置改变,需要重新编译代码。 加载时 : 如果存储位置在编译时不知道,则必须生成可重 定位代码。
– 静态地址映射是在程序装入内存时完成从逻辑地址到物理地址的 转换的。
– 重定位寄存器,含有最小的物理地址值 – 界限寄存器,含有逻辑地址的值。每个逻辑地址必须
小于界限寄存器
15
重定位和界限寄存器的硬件支持
16
连续内存分配
多个固定大小的分区:多道程序的程度受限制
固定分区方案的推广
– 孔: 可用的内存块,不同大小的孔分布在整个内存
中。
– 当一个进程到来的时候,它将从一个足够容纳它的 孔中分配内存。)
7
动态链接 链接被推迟到执行时期 二进制映像中对每个库程序的引用都有一个存根。 存根是小的代码片 ,用来定位合适的保留在内 存中的库程序。 存根用子程序地址来替换自己,并开始执行子程 序。 动态链接需要操作系统的帮助。操作系统需要检 查子程序是否在进程的内存空间,或是允许多个 进程访问同一内存地址。
逻辑地址空间-由程序所生成的所有逻辑地址 的集合
物理地址空间-与逻辑地址相对应的内存中所 有物理地址的集合
用户程序看不见真正的物理地址。用户只生成 逻辑地址,且认为进程的地址空间为0到max。 物理地址范围从R+0到R+max,R为基地址 地址映射-将程序地址空间中使用的逻辑地址变换成
内存中的物理地址的过程。由内存管理单元(MMU) 来完成。
8
内外存数据传输的控制
内存和外存之间必须经常地交换数据, 按什么样地方式来控制内存和外存之间 地数据流动呢?最基本的控制办法有两 种:
– 用户程序自己控制 覆盖 – 操作系统控制 交换
9
覆盖
覆盖的思想是在内存中只保留那些在特定时间所 需要的指令和数据。 当进程比所分配的内存大时,覆盖是必需的 由用户执行,不需要操作系统的特别支持,覆盖 结构的程序设计很复杂。要求用户清楚地了解程 序地结构,负担很大,且程序段地最大长度仍受 内存容量限制。 局限于微处理机和只有有限物理内存且缺乏更先 进硬件支持的其它系统