【av68676164(p41-p42)】内存管理功能
存储器的功能需求
- 容量足够大
- 速度足够快
- 信息永久保存
- 多道程序并行
多道程序并行带来的问题
- 共享:代码和数据共享,节省内存
- 保护:不允许内存中的程序相互间非法访问
实际存储器体系
- 三级存储体系
- Cache(快、小、贵)+内存(适中)+辅存(慢、大、廉)
- 基本原理
- 当内存太小不够用时,用辅存来支援内存
- 暂停不运行的模块换出到辅存上,必要时再换入内存
存储管理的功能
- 地址映射
- 虚拟存储
- 内存分配
- 存储保护
存储管理的功能1:地址映射
定义
- 把程序中的地址(虚拟地址/虚地址/逻辑地址)变换成内存的真实地址(实地址/物理地址)的过程
- 地址重定位,地址重映射
方式
- 固定地址映射
- 静态地址映射
- 动态地址映射
固定地址映射
定义:编程或编译时确定逻辑地址和物理地址的映射关系
特点:
- 程序加载时必须放在指定的内存区域
- 容易产生地址冲突,运行失败
静态地址映射
定义:程序再装入时由操作系统完成逻辑地址到物理地址的映射
静态地址映射
-
逻辑地址:VA(Virtual Addr.)
-
装入基址:BA(Base Addr.),程序装在内存中的起始地址
-
物理地址:MA(Memory Addr.)
MA = BA + VA
例子:
MA = x + BA
- 逻辑地址:VA=X,(X) = 1234
- 装入基址:BA
- MA = X + BA
特点
- 程序运行之前确定映射关系
- 程序装入后不能移动
- 如果移动必须放回原来位置
- 程序占用连续的内存空间
动态地址映射
定义:程序在执行过程中把逻辑地址转换为物理地址
例如:MOV AX, [500];访问500单元时执行地址转换
映射过程
-
MA = BA + VA
-
逻辑地址:VA(Virtual Addr.)
-
装入基址:BA(Base Addr.)
-
物理地址:MA(Memory Addr.)
- 注意:如果程序有移动,BA可能会有改变,自动计算新的MA。
特点:
- 程序占用的内存空间可动态变化
- 要求及时更新基址BA
- 程序不要求占用连续的内存空间
- 每段放置基址BA系统应该知道
- 便于多个进程共享代码
- 共享代码作为独立的一段存放
缺点
- 硬件支持(MMU:内存管理单元)
- 软件复杂
存储管理的功能2:虚拟存储
解决的问题
- 程序过大或过多时,内存不够,不能运行
- 多个程序并发时地址冲突,不能运行
虚拟内存的概念
虚拟内存时面向用户的虚拟封闭存储空间(每个进程都有,但是各个都不相关)
- 线性地址空间
- 容量4G = \(2^{32}\)Byte
- 封闭空间(进程空间)
- 和物理地址分离(地址无冲突)
- 程序员编程时使用现性虚拟地址
虚拟内存管理的目标
- 使得大的程序能在较小的内存中运行
- 使得多个程序能在较小的内存中运行(/能容纳下)
- 使得多个程序并发运行时地址不冲突(/方便、高效)
- 使得内存利用效率高:无碎片,共享方便
存储管理的功能3:内存分配功能
为程序运行分配足够的内存空间
需要解决的问题
- 放置策略:程序调入内存时将其放置在哪个/哪些内存区
- 调入策略:何时把要运行的代码和要访问的数据调入内存
- 淘汰策略:内存空间不够时,迁出(/淘汰)那些代码或数据以腾出内存
存储管理的功能4:存储保护功能
保证在内存中的多道程序只能在给定的存储区域活动并互不干扰。
- 防止访问越界
- 防止访问越权
方法:界址寄存器
在CPU中设置一对下限寄存器和上限寄存器存放程序在内存中的下限地址和上限地址,程序访问内存时硬件自动将目的地址与这两对寄存器中存放的地址界限比较,判断是否越界。