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