内存管理PPT课件
合集下载
第4章1-存储器管理PPT课件
28.01.2021
.
13
⑵ 不必给程序分配连续的内存空间,可以较好地利 用较小的内存块,这便于存储器用紧缩来解决存储 器的碎片问题。 动态地址再定位的缺点:需要附加的硬件支持,而 且实现存储管理的软件算法比较复杂。
28.01.2021
.
14
4.3 连续分配存储方式
计算机对装入内存的程序有两种分配方式:连续分配 和离散分配。 连续分配:为一个用户程序分配一个连续的内存空间, 主要用于60-70年代。它又分为二种:单一连续分配方 式和分区式分配方式 离散分配:将一个用户程序离散的分配到内存空间中 去,它有分页和分段两种分配方式。
区没有被使用的空间最小;
☻仅仅保证所选择的分区能够放得下相关进程即可。
28.01.2021
.
20
☻长处:
实现简单; 系统开销小。
☻不足:
因已分配分区存在内零头(Internal Fragment)而
使存储利用率不高;
因分区尺寸固定而使系统无法运行大程序; 因分区数目固定而使活动进程的数目受限。
28.01.2021
28.01.2021
.
5
逻辑地址(相对地址):相对用户程序模块,以0
地址为起始地址的编址方式。
物理地址(绝对地址):相对于内存,每一单元有
唯一地址的编址方式。
地址重定位(Relocation):把相对地址转换成内存
中的绝对地址的过程,也叫地址映射(map)。
28.01.2021
.
6
4.2.1 程序的装入
28.01.2021
.
12
当CPU取一条访问内存的指令时,地址变换硬件逻辑 自动将指令中的相对地址与重定位寄存器中的值相加, 再根据和值作为内存的绝对地址去访问该单元的数据。
内存管理第5章PPT课件
正确运行
(4)内存信息的共享与保护
保证用户程序(或进程映象)在各自的存储区域内操作,互不 干扰,同时又可以共享系统的资源
-
4
地址映射
物理地址:
把内存分成若干个大 小相等的存储单元,每 个单元给一个编号,这 个编号称为内存地址
(物理地址、绝对地址、
实地址),存储单元占 8位,称作字节 (byte)。
⑶.采用覆盖技术
在为程序分配内存空间时,操作系统根据程序结构将第0层设
置为常驻内存区。从第一层起,为该层中的多个模块设置
一个共享覆盖区,其容量与该层中最大模块的容量相当。
程序执行到哪个模块就将该模块送到它所共享的覆盖区中。
-
18
虚拟存储器
-
19Байду номын сангаас
内存信息的共享与保护
在多道程序设计的环境下,系统中有系统程序 和多个用户程序同时存在,如何保证用户程 序不破坏系统程序,以及用户程序之间既共 享又不相互破坏?这就是存储保护所要解决 的问题。
-
14
内存的分配与回收
操作系统在内存分配与回收时需要确定的策略有:
⑴.内存分配策略。确定对内存的管理方式和实现该管 理方式所需要使用的数据结构。
⑵.放置策略。确定待调入内存的程序和数据在内存中 的位置,即选择将哪个内存空闲区域实施分配。
⑶.交换策略。在内存空间不够时,操作系统需要将一 些进程的映像由内存调到外存交换区,以便使内存中 有足够的周转空间。交换策略决定了需要将哪些进程
-
17
虚拟存储器
实现虚拟存储的方法:
⑴.采用请求调入策略
基于局部性理论,程序运行时只将需要执行的那部分程序调 入内存,而不是调入程序的全部,比如请求分页、请求分 段。
(4)内存信息的共享与保护
保证用户程序(或进程映象)在各自的存储区域内操作,互不 干扰,同时又可以共享系统的资源
-
4
地址映射
物理地址:
把内存分成若干个大 小相等的存储单元,每 个单元给一个编号,这 个编号称为内存地址
(物理地址、绝对地址、
实地址),存储单元占 8位,称作字节 (byte)。
⑶.采用覆盖技术
在为程序分配内存空间时,操作系统根据程序结构将第0层设
置为常驻内存区。从第一层起,为该层中的多个模块设置
一个共享覆盖区,其容量与该层中最大模块的容量相当。
程序执行到哪个模块就将该模块送到它所共享的覆盖区中。
-
18
虚拟存储器
-
19Байду номын сангаас
内存信息的共享与保护
在多道程序设计的环境下,系统中有系统程序 和多个用户程序同时存在,如何保证用户程 序不破坏系统程序,以及用户程序之间既共 享又不相互破坏?这就是存储保护所要解决 的问题。
-
14
内存的分配与回收
操作系统在内存分配与回收时需要确定的策略有:
⑴.内存分配策略。确定对内存的管理方式和实现该管 理方式所需要使用的数据结构。
⑵.放置策略。确定待调入内存的程序和数据在内存中 的位置,即选择将哪个内存空闲区域实施分配。
⑶.交换策略。在内存空间不够时,操作系统需要将一 些进程的映像由内存调到外存交换区,以便使内存中 有足够的周转空间。交换策略决定了需要将哪些进程
-
17
虚拟存储器
实现虚拟存储的方法:
⑴.采用请求调入策略
基于局部性理论,程序运行时只将需要执行的那部分程序调 入内存,而不是调入程序的全部,比如请求分页、请求分 段。
第4章内存管理PPT课件
(2)链接。由链接程序将编译后形成的目标模块以 及它们所需要的库函数,链接在一起,形成一个 装入模块。
(3)装入。由装入程序将装入模块装入主存的过程。
2020/8/1
3
源程序的执行过程
通常要经过编译、链接和装入几个步骤
库
编 译程 序产 生 的目 标模 块
内存
链接 程序
装 入模 块
装入 程序
…
第 一步
第4章 存储器管理
计算机系统中的存储器可以分为两种:内存储器 和辅助存储器。前者可被CPU直接访问,后者不 能。辅助存储器与CPU之间只能够在输入输出控 制系统的管理下,进行信息交换。
既然内存储器可被CPU直接访问,因此它是计算 机系统中的一种极为重要的资源。在操作系统中, 把管理内存储器的部分称为“存储器管理”。能 否合理地使用内存,会在很大程度上影响到整个 计算机系统的性能。
第 二步
第 三步
2020/8/1
4
4.2.1 程序的装入
程序的装入就是把程序装入内存空间。
采用三种方式
(1)绝对装入方式:是由装入程序根据装入模块中 的地址,将程序和数据装入内存。 (2)可重定位方式 :是由装入程序根据内存当前的 实际使用情况,将装入模块装入到内存适当的地方。 (3)动态运行时装入方式:动态运行时的装入程序, 在把装入模块装入内存后,并不立即把装入模块中的 相对地址转换为绝对地址,而是把这种地址转换推迟 到程序要真正执行时才进行。
2020/8/1
5
程序的装入
绝对装入方式:是由装入程序根据装入模 块中的地址,将程序和数据装入主存
若知道程序在内存的位置,编译程序将产生 绝对地址目标模块 绝对地址一般由编译程序给出 程序被装入内存后,由于程序中的逻辑地址 与实际内存地址完全相同,所以不允许改变 程序和数据的地址 只适于单道环境
(3)装入。由装入程序将装入模块装入主存的过程。
2020/8/1
3
源程序的执行过程
通常要经过编译、链接和装入几个步骤
库
编 译程 序产 生 的目 标模 块
内存
链接 程序
装 入模 块
装入 程序
…
第 一步
第4章 存储器管理
计算机系统中的存储器可以分为两种:内存储器 和辅助存储器。前者可被CPU直接访问,后者不 能。辅助存储器与CPU之间只能够在输入输出控 制系统的管理下,进行信息交换。
既然内存储器可被CPU直接访问,因此它是计算 机系统中的一种极为重要的资源。在操作系统中, 把管理内存储器的部分称为“存储器管理”。能 否合理地使用内存,会在很大程度上影响到整个 计算机系统的性能。
第 二步
第 三步
2020/8/1
4
4.2.1 程序的装入
程序的装入就是把程序装入内存空间。
采用三种方式
(1)绝对装入方式:是由装入程序根据装入模块中 的地址,将程序和数据装入内存。 (2)可重定位方式 :是由装入程序根据内存当前的 实际使用情况,将装入模块装入到内存适当的地方。 (3)动态运行时装入方式:动态运行时的装入程序, 在把装入模块装入内存后,并不立即把装入模块中的 相对地址转换为绝对地址,而是把这种地址转换推迟 到程序要真正执行时才进行。
2020/8/1
5
程序的装入
绝对装入方式:是由装入程序根据装入模 块中的地址,将程序和数据装入主存
若知道程序在内存的位置,编译程序将产生 绝对地址目标模块 绝对地址一般由编译程序给出 程序被装入内存后,由于程序中的逻辑地址 与实际内存地址完全相同,所以不允许改变 程序和数据的地址 只适于单道环境
第4章存储管理PPT课件
装入方式汇总
• 绝对装入方式 • 可重定位装入方式 • 动态运行时装入方式
简单分析比较 ——
4.1.2 程序的链接
源程序经过编译后,可能会得到一组目标模块,各个模块都有 自己的独立空间,从执行的角度看这些模块又是一个整体,各 个模块所涉及的地址最终都要合并为统一的地址。
链接分类
静态链接 动态链接
4.1 程序的装入和链接的有关概念
用高级、汇编语言上机步骤:编译、链接、装入。
编辑:得到如test.cpp ,a.asm等源文件
编译:从每个源文件得到对应的目标文件(PC机系统后缀为OBJ 的文件)
链接:将若干有关目标文件(在VC++环境中为一个workspace中 的文件)及有关系统支撑的库目标文件进行链接,得到相应的可 执行文件(PC机系统后缀为EXE的文件或动态连接文件DLL)
4.2.2 固定分区分配
1、把内存划分为若干个固定的连续分区。 • 分区大小相等:只适合于多个相同程序的并发执行(处理 多个类型相同的对象)。 • 分区大小不等:多个小分区、适量的中等分区、少量的大 分区。根据程序的大小,分配当前空闲的、适当大小的分区。
分配策略: •当作业到达时,选择适合作业要求的最小空闲区分给作业,若 该分区不空,让其在该分区队列中等待。 • 为了充分利用存储器,系统只维持一个等待存贮器的队列。 任何时候,只要有一个分区变为空闲,队列中的一个作业就可 装入运行。
第4章_存储管理
所以,即使是现代的计算机系统,存储容量极大,速度 也飞快,内存管理的重要性丝毫没有削弱。
对于一个单用户、单任务的操作系统的实现相对非常简单, 支撑这种系统甚至不需要任何存储保护的硬件。在最严重的情 况下即使内存崩溃也不会引起严重后果。
内存管理.ppt
将内存划分成若干个 固定大小的区域:
等长 不等长
计算机科学系 操作系统课程组 李才伟&凌应标制作 @2015年5月 15
固定分区
等长分区:任何小于或等于分区大小的进程都可 以全部载入某一可用分区中(无可用分区时,可 以应用交换技术)
等长分区存在问题:
若进程大于分区,则只能部分载入,要应用覆盖技术 “小”进程将产生内碎片(internal fragmentation),导致
主存有限致使程序员采用覆盖技术,浪费程序员精力和 时间
多道程序环境中,程序员编写代码时无法预知可用主存 的数量和位置
物理组织是操作系统的责任(资源管理)
计算机科学系 操作系统课程组 李才伟&凌应标制作 @2015年5月 10
覆盖技术和交换技术
在多道环境下扩充内存的方法 覆盖技术主要用在早期的操作系统中 交换技术被广泛用于小型分时系统中,交换技术
简单内存分页(不单独使用)——大小相等,需 一次装入一个进程的所有页
简单进程分段(不单独使用)——需一次装入一 个进程的所有段
虚拟内存分页——不需一次装入一进程的所有页 虚拟内存分段-不需一次装入一进程的所有段
计算机科学系 操作系统课程组 李才伟&凌应标制作 @2015年5月 14
7.2.1固定分区
织用户程序及数据
模块化有利于设计期间的编程 模块化有利于运行时刻的保护 模块化有利于运行时刻的共享
分段存储管理技术最符合用户(程序员)组织程 序的观点
计算机科学系 操作系统课程组 李才伟&凌应标制作 @2015年5月 9
7.1.4 物理组织
主存与辅存间的信息交换能更好地实现系统目标 程序员关心物理组织是不切实际的
程序的内存引用只能在运行时检查 重定位导致无法在编译时检查绝对地址 多数程序设计语言允许地址的动态计算(如数组下标、 指向某种数据结构的指针等) 通常整合在重定位硬件机制中(从软件上,难以预计 所有非法情况,开销也太大)
等长 不等长
计算机科学系 操作系统课程组 李才伟&凌应标制作 @2015年5月 15
固定分区
等长分区:任何小于或等于分区大小的进程都可 以全部载入某一可用分区中(无可用分区时,可 以应用交换技术)
等长分区存在问题:
若进程大于分区,则只能部分载入,要应用覆盖技术 “小”进程将产生内碎片(internal fragmentation),导致
主存有限致使程序员采用覆盖技术,浪费程序员精力和 时间
多道程序环境中,程序员编写代码时无法预知可用主存 的数量和位置
物理组织是操作系统的责任(资源管理)
计算机科学系 操作系统课程组 李才伟&凌应标制作 @2015年5月 10
覆盖技术和交换技术
在多道环境下扩充内存的方法 覆盖技术主要用在早期的操作系统中 交换技术被广泛用于小型分时系统中,交换技术
简单内存分页(不单独使用)——大小相等,需 一次装入一个进程的所有页
简单进程分段(不单独使用)——需一次装入一 个进程的所有段
虚拟内存分页——不需一次装入一进程的所有页 虚拟内存分段-不需一次装入一进程的所有段
计算机科学系 操作系统课程组 李才伟&凌应标制作 @2015年5月 14
7.2.1固定分区
织用户程序及数据
模块化有利于设计期间的编程 模块化有利于运行时刻的保护 模块化有利于运行时刻的共享
分段存储管理技术最符合用户(程序员)组织程 序的观点
计算机科学系 操作系统课程组 李才伟&凌应标制作 @2015年5月 9
7.1.4 物理组织
主存与辅存间的信息交换能更好地实现系统目标 程序员关心物理组织是不切实际的
程序的内存引用只能在运行时检查 重定位导致无法在编译时检查绝对地址 多数程序设计语言允许地址的动态计算(如数组下标、 指向某种数据结构的指针等) 通常整合在重定位硬件机制中(从软件上,难以预计 所有非法情况,开销也太大)
内存管理课件
“先将一部分程序放入内存”,哪部分?
局部性原理
局部性原理是虚拟内存得以实现的本质
在一较短的时间内,程序的执行仅局限于某个部分;相应地, 它访问的存储空间也局限于某个区域。
(1)时间局部性: 一个数据结构被访问,不久可能再次被访问。 典型原因: 程序中存在大量的循环操作。
(2)空间局部性:一段时间访问的地址可能集中在一定范围 。 典型原因:程序顺序执行
第四章:内存管理
存储器的层次结构
存储层次:CPU寄存器,主存,辅存。 现代计算机中:寄存器、高速缓存、主存储器、磁盘缓存、固定
磁盘、可移动存储介质。
CPU寄存器 主存
辅存
在存储层次中越往上,存储 介质的访问速度越快,价格也 越高,相对存储容量也越小。
计算机系统存储层次示意
1. 寄存器
寄存器访问速度最快,协调CPU工作,价格昂贵,容量很小。
区分为多个帧,将页面分配到帧
❖ 将物理内存(真正内存空间)分为固定大小的 块(称为帧)
❖ 将逻辑内存(进程所占空间)分成同样大小的 块(称为页)
❖ 管理所有的空闲帧 ❖ 执行一个大小为n页的进程,要发现n个空闲帧
并把程序装入其中 ❖ 利用页表进行逻辑到物理地址的映射
帧号
进程(页)
页表
主存(帧)
14
该算法要扫描整个空闲分区表或链表,总是挑选一个最 大的空闲区分割给进程使用,其优点是可使剩下的空闲区不 至于太小,产生碎片的几率最小,但查找效率很高。
所有的空闲分区按容量从大到小的顺序形成空闲分区链,查 找时只要看第一个分区能否满足作业要求。该算法的缺点是 它会使存储器中缺乏大的空闲分区。
最坏适应算法与首次适应算法、循环首次适应算法、最 佳适应算法一起,也称为顺序搜索法。
第3讲现在的操作系统怎么管理内存PPT课件
3 有效位为0表示页不在内存,产生 缺页中断,中断处理完后返回产 生缺页中断的指令重新执行,设 有虚地址访问序列:
2362H、1565H、25A5H,请问
页页有 号框效
号位
0
101H 1
1
---- 0
2
254H 1
1、依次访问上述3个 地址,各需要多少时 间? 2、基于上述访问序 列,1565H的物理地 址是多少?说明理由
-
页框是硬性划分,逻辑地址空间怎么分页
• 保留段,段中分页(段页式) • 将二维的段地址变为一维的地址后再分页(页式)
0
1
3 2
这时,需要段表和页表
-
段\页
• 保留段,段中分页(段页式) • 将二维的段地址变为一维的地址后再分页(页式)
-
段、页同时存在:段面向用户/页面向硬件
4G 用户栈段
cs:ip 逻辑地址
0
用户代码段 用户数据段 操作系统段
虚拟内存
物理地址
0x7008
0x00345008
虚拟地址 对用户是 透明的
-
内存
第3单元 主存管理
第3节 分页存储管理
什么是页 分页管理方案 举例
-
分页管理方案要解决的问题
✓ 地址映射 ✓ 多级页表/快表 ✓ 虚存
-
分页重定位
页中的逻辑地址
Page#
Offset
R=0
R=0
R=0
R=1
用来选择淘汰页,移动速度慢! 更像Clock吧!
R=1
R=1
R=0 R=0 R=1
-
总结:请求分页过程
页表 缺页中断处理
磁盘
load [addr]
重新执行
2362H、1565H、25A5H,请问
页页有 号框效
号位
0
101H 1
1
---- 0
2
254H 1
1、依次访问上述3个 地址,各需要多少时 间? 2、基于上述访问序 列,1565H的物理地 址是多少?说明理由
-
页框是硬性划分,逻辑地址空间怎么分页
• 保留段,段中分页(段页式) • 将二维的段地址变为一维的地址后再分页(页式)
0
1
3 2
这时,需要段表和页表
-
段\页
• 保留段,段中分页(段页式) • 将二维的段地址变为一维的地址后再分页(页式)
-
段、页同时存在:段面向用户/页面向硬件
4G 用户栈段
cs:ip 逻辑地址
0
用户代码段 用户数据段 操作系统段
虚拟内存
物理地址
0x7008
0x00345008
虚拟地址 对用户是 透明的
-
内存
第3单元 主存管理
第3节 分页存储管理
什么是页 分页管理方案 举例
-
分页管理方案要解决的问题
✓ 地址映射 ✓ 多级页表/快表 ✓ 虚存
-
分页重定位
页中的逻辑地址
Page#
Offset
R=0
R=0
R=0
R=1
用来选择淘汰页,移动速度慢! 更像Clock吧!
R=1
R=1
R=0 R=0 R=1
-
总结:请求分页过程
页表 缺页中断处理
磁盘
load [addr]
重新执行
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 重定位寄存器,含有最小的物理地址值 – 界限寄存器,含有逻辑地址的值。每个逻辑地址必须
小于界限寄存器
15
重定位和界限寄存器的硬件支持
16
连续内存分配
多个固定大小的分区:多道程序的程度受限制
固定分区方案的推广
– 孔: 可用的内存块,不同大小的孔分布在整个内存
中。
– 当一个进程到来的时候,它将从一个足够容纳它的 孔中分配内存。)
3
进程在执行时,会访问内存中的指令和数据。将指令和 数据捆绑到内存地址可以在以下步骤的任何一步中执行。
编译时期 : 如果内存位置已知,可生成绝对代码;如果开 始位置改变,需要重新编译代码。 加载时 : 如果存储位置在编译时不知道,则必须生成可重 定位代码。
– 静态地址映射是在程序装入内存时完成从逻辑地址到物理地址的 转换的。
17
动态存储分配问题
根据一组空闲孔来分配大小为n的请求,常用方法有:
First-fit (首次适应) : 分配最先找到的合适的孔。 Best-fit (最佳适应) : 搜索整个序列,找到适合 条件的最小的孔进行分配。 Worst-fit (最差适应) : 搜索整个序列,寻找最 大的孔进行分配。
在速度和存储的利用上,首次适应和最佳适应要 比最差适应好。
8
内外存数据传输的控制
内存和外存之间必须经常地交换数据, 按什么样地方式来控制内存和外存之间 地数据流动呢?最基本的控制办法有两 种:
– 用户程序自己控制 覆盖 – 操作系统控制 交换
9
覆盖
覆盖的思想是在内存中只保留那些在特定时间所 需要的指令和数据。 当进程比所分配的内存大时,覆盖是必需的 由用户执行,不需要操作系统的特别支持,覆盖 结构的程序设计很复杂。要求用户清楚地了解程 序地结构,负担很大,且程序段地最大长度仍受 内存容量限制。 局限于微处理机和只有有限物理内存且缺乏更先 进硬件支持的其它系统
第九章 内存管理
背景
程序必需放入一个进程,并且送入内存才能被 执行
多道程序设计
– 共享CPU => CPU 调度
– 共享内存 => 内存管理
内存由很大一组字或字节所组成,每个字或字 节都有自己的地址 输入队列— 磁盘上等待进入内存并执行的进程 的集合
2
地址映射
逻辑地址(虚拟地址)-CPU所生成的地址 物理地址-内存单元所看到的地址
– 在一些早期的系统中都有一个装入程序(加载程序),它负责将 用户程序装入系统,并将用户程序中使用的访问内存的逻辑地址 转换成物理地址。
– 优点是实现简单,不要硬件的支持。 – 缺点是程序一旦装入内存,移动就比较困难。有时间上的浪费。
在程序装入内存时要将所有访问内存的地址转换成物理地址。
4
执行时:如果进程在执行时可以在内存中移动, 则地址绑定要延迟到运行时。
12
交换
滚入,滚出—由于基于优先级的算法,低优先级的进 程被换出,这样高优先级的进程可以被装入和执行。 交换时间的主要部分是转移时间,总的转移时间直接 同交换的内存空间成正比。 I/O问题 – 当I/O的时候,把工作锁定在内存中。以免I/O操作
访问另一进程的内存 – 只使用操作系统缓冲。仅当换入进程后,才执行操
7
动态链接 链接被推迟到执行时期 二进制映像中对每个库程序的引用都有一个存根。 存根是小的代码片 ,用来定位合适的保留在内 存中的库程序。 存根用子程序地址来替换自己,并开始执行子程 序。 动态链接需要操作系统的帮助。操作系统需要检 查子程序是否在进程的内存空间,或是允许多个 进程访问同一内存地址。
逻辑地址空间-由程序所生成的所有逻辑地址 的合
物理地址空间-与逻辑地址相对应的内存中所 有物理地址的集合
用户程序看不见真正的物理地址。用户只生成 逻辑地址,且认为进程的地址空间为0到max。 物理地址范围从R+0到R+max,R为基地址 地址映射-将程序地址空间中使用的逻辑地址变换成
内存中的物理地址的过程。由内存管理单元(MMU) 来完成。
10
一个Two-Pass 汇编程序的覆盖
11
交换
一个进程可以暂时被交换到内存外的一个备份存 储上,随后可以被换回内存继续执行。
– e.g. round-robin CPU scheduling
备份存储—通常是快速磁盘,必须足够大,以便 容纳所有用户的内存映像拷贝,也必须提供对这 些内存映像的直接存取。
作系统缓冲与进程内存之间的数据转移。
13
使用磁盘作为备份存储空间的两个进程的交换
14
连续内存分配
主存通常被分为两部分
– 用于驻留操作系统:为操作系统保留的部分,通常用 中断向量保存在内存低端。
– 用于用户进程 :保存在内存高端。
采用连续内存分配时,每个进程位于一个连续的 内存区域 内存保护:保护操作系统不受用户进程影响,保 护用户进程不受其它用户进程影响。措施:
– 需要硬件对动态地址映射的支持,例如基址和限长 寄存器
– 基址寄存器这时称为重定位寄存器。用户进程所生 成的地址在送交内存之前,都将加上重定位寄存器 的值。
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
18
碎片
外部碎片 –当整个内存空间可以满足一个请求,但 它不是连续的。 内部碎片–分配的内存可能比申请的内存大一点, 这两者之间的数字之差。 通过紧缩来减少外部碎片 – 移动内存内容,把一些小的空闲内存结合成一
个大的块。 – 只有重置是动态的时候,才有可能进行紧缩,
紧缩在执行时期进行
19
分页
分页内存管理方案允许进程的物理地址空间可以 是不连续的。 把物理内存分成大小固定的块,称为帧。 把逻辑内存也分位同样固定大小的块,叫做页。 运行一个有N页大小的程序,需要找到N个空的 帧读入程序。 页、帧大小由硬件来决定,通常为2的幂 建立一个页表,把逻辑地址转换为物理地址。
小于界限寄存器
15
重定位和界限寄存器的硬件支持
16
连续内存分配
多个固定大小的分区:多道程序的程度受限制
固定分区方案的推广
– 孔: 可用的内存块,不同大小的孔分布在整个内存
中。
– 当一个进程到来的时候,它将从一个足够容纳它的 孔中分配内存。)
3
进程在执行时,会访问内存中的指令和数据。将指令和 数据捆绑到内存地址可以在以下步骤的任何一步中执行。
编译时期 : 如果内存位置已知,可生成绝对代码;如果开 始位置改变,需要重新编译代码。 加载时 : 如果存储位置在编译时不知道,则必须生成可重 定位代码。
– 静态地址映射是在程序装入内存时完成从逻辑地址到物理地址的 转换的。
17
动态存储分配问题
根据一组空闲孔来分配大小为n的请求,常用方法有:
First-fit (首次适应) : 分配最先找到的合适的孔。 Best-fit (最佳适应) : 搜索整个序列,找到适合 条件的最小的孔进行分配。 Worst-fit (最差适应) : 搜索整个序列,寻找最 大的孔进行分配。
在速度和存储的利用上,首次适应和最佳适应要 比最差适应好。
8
内外存数据传输的控制
内存和外存之间必须经常地交换数据, 按什么样地方式来控制内存和外存之间 地数据流动呢?最基本的控制办法有两 种:
– 用户程序自己控制 覆盖 – 操作系统控制 交换
9
覆盖
覆盖的思想是在内存中只保留那些在特定时间所 需要的指令和数据。 当进程比所分配的内存大时,覆盖是必需的 由用户执行,不需要操作系统的特别支持,覆盖 结构的程序设计很复杂。要求用户清楚地了解程 序地结构,负担很大,且程序段地最大长度仍受 内存容量限制。 局限于微处理机和只有有限物理内存且缺乏更先 进硬件支持的其它系统
第九章 内存管理
背景
程序必需放入一个进程,并且送入内存才能被 执行
多道程序设计
– 共享CPU => CPU 调度
– 共享内存 => 内存管理
内存由很大一组字或字节所组成,每个字或字 节都有自己的地址 输入队列— 磁盘上等待进入内存并执行的进程 的集合
2
地址映射
逻辑地址(虚拟地址)-CPU所生成的地址 物理地址-内存单元所看到的地址
– 在一些早期的系统中都有一个装入程序(加载程序),它负责将 用户程序装入系统,并将用户程序中使用的访问内存的逻辑地址 转换成物理地址。
– 优点是实现简单,不要硬件的支持。 – 缺点是程序一旦装入内存,移动就比较困难。有时间上的浪费。
在程序装入内存时要将所有访问内存的地址转换成物理地址。
4
执行时:如果进程在执行时可以在内存中移动, 则地址绑定要延迟到运行时。
12
交换
滚入,滚出—由于基于优先级的算法,低优先级的进 程被换出,这样高优先级的进程可以被装入和执行。 交换时间的主要部分是转移时间,总的转移时间直接 同交换的内存空间成正比。 I/O问题 – 当I/O的时候,把工作锁定在内存中。以免I/O操作
访问另一进程的内存 – 只使用操作系统缓冲。仅当换入进程后,才执行操
7
动态链接 链接被推迟到执行时期 二进制映像中对每个库程序的引用都有一个存根。 存根是小的代码片 ,用来定位合适的保留在内 存中的库程序。 存根用子程序地址来替换自己,并开始执行子程 序。 动态链接需要操作系统的帮助。操作系统需要检 查子程序是否在进程的内存空间,或是允许多个 进程访问同一内存地址。
逻辑地址空间-由程序所生成的所有逻辑地址 的合
物理地址空间-与逻辑地址相对应的内存中所 有物理地址的集合
用户程序看不见真正的物理地址。用户只生成 逻辑地址,且认为进程的地址空间为0到max。 物理地址范围从R+0到R+max,R为基地址 地址映射-将程序地址空间中使用的逻辑地址变换成
内存中的物理地址的过程。由内存管理单元(MMU) 来完成。
10
一个Two-Pass 汇编程序的覆盖
11
交换
一个进程可以暂时被交换到内存外的一个备份存 储上,随后可以被换回内存继续执行。
– e.g. round-robin CPU scheduling
备份存储—通常是快速磁盘,必须足够大,以便 容纳所有用户的内存映像拷贝,也必须提供对这 些内存映像的直接存取。
作系统缓冲与进程内存之间的数据转移。
13
使用磁盘作为备份存储空间的两个进程的交换
14
连续内存分配
主存通常被分为两部分
– 用于驻留操作系统:为操作系统保留的部分,通常用 中断向量保存在内存低端。
– 用于用户进程 :保存在内存高端。
采用连续内存分配时,每个进程位于一个连续的 内存区域 内存保护:保护操作系统不受用户进程影响,保 护用户进程不受其它用户进程影响。措施:
– 需要硬件对动态地址映射的支持,例如基址和限长 寄存器
– 基址寄存器这时称为重定位寄存器。用户进程所生 成的地址在送交内存之前,都将加上重定位寄存器 的值。
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
18
碎片
外部碎片 –当整个内存空间可以满足一个请求,但 它不是连续的。 内部碎片–分配的内存可能比申请的内存大一点, 这两者之间的数字之差。 通过紧缩来减少外部碎片 – 移动内存内容,把一些小的空闲内存结合成一
个大的块。 – 只有重置是动态的时候,才有可能进行紧缩,
紧缩在执行时期进行
19
分页
分页内存管理方案允许进程的物理地址空间可以 是不连续的。 把物理内存分成大小固定的块,称为帧。 把逻辑内存也分位同样固定大小的块,叫做页。 运行一个有N页大小的程序,需要找到N个空的 帧读入程序。 页、帧大小由硬件来决定,通常为2的幂 建立一个页表,把逻辑地址转换为物理地址。