存储器功能需求
- 容量足够大
- 速度足够快
- 信息永久保存
- 多道程序并行
多道程序并行带来的问题
共享
- 代码和数据共享,节省内存
保护
- 不允许内存中的内存中的程序相互非法访问
实际存储器体系
- 三级存储体系
- Cache(快,小,贵)+内存(适中)+辅存(慢,大,廉)
基本原理:
- 当内存太小不够用时,用辅存来支援内存
- 暂时不运行的模块换出到辅存,必要时再换入内存
存储管理的功能
1、地址映射
定义:把程序中的地址(虚拟地址/逻辑地址)变换成内存的真实地址(实地址/物理地址)的过程
地址重定位,地址重映射
方式:
- 固定地址映射
- 静态地址映射
- 动态地址映射
固定地址映射
定义:编程或编译时确定逻辑地址和物理地址映射关系
特点:
- 程序加载时必须放在指定的内存区域
- 容易产生地址冲突,运行失败
静态地址映射
定义:程序装入时由操作系统完成逻辑地址到物理地址的映射
过程:
- 逻辑地址:VA
- 装入基址:BA
- 物理地址:MA
MA=BA+VA
特点:
- 程序运行之前确定映射关系
- 程序装入后不能移动(如果移动必须放回原来的位置)
- 程序占用内存连续的内存空间
动态地址映射
定义:在程序执行过程中把逻辑地址转换为物理地址
过程:与静态地址映射一致:MA=BA+VA
特点:
- 程序占用的内存空间可动态变化
- 程序不要求占用连续内存空间
- 便于多个进程共享代码
缺点:
- 硬件支持(MMU:内存管理单元)
- 软件复杂
2、虚拟存储
解决的问题
- 程序过大或过多时,内存不够,不能运行
- 多个程序并发时地址冲突,不能运行
概念
虚拟内存是面向用户的虚拟封闭存储空间
- 线性地址空间
- 容量4GB
- 封闭空间(进程空间)
- 和物理地址分离(地址无冲突)
- 程序员编程时使用虚拟内存
目标
使得大的程序能在较小的内存中运行
使得多个程序能在较小的内存中运行(能容纳下)
使得多个程序并发运行时地址不冲突(方便、高效)
使得内存利用率高:无碎片,共享方便
3、内存分配功能
为程序运行分配足够的内存空间
需要解决的问题
- 放置策略
- 调入策略
- 淘汰策略
4、存储保护
保证在内存中的多道程序只能在给定的存储区域内活动并互不干扰
- 防止访问越界
- 防止访问越权
方法:界地址寄存器
在CPU中设置一个下限寄存器和上限寄存器存放程序在内存中的下限地址和上限地址。