文档介绍:第四章存储器管理
存储器是计算机系统的重要资源, 虽然存储器的容量迅速增加, 但软件的需求也同样在急剧膨胀, 存储器仍然是紧俏资源。存储器管理是操作系统的最重要部分。
“瓶颈”:关键、紧张
帕金森定律(你用的人多,你需要的人员更多)
内存多大,程序多长
概述 存储体系
Cache
主存
磁盘
存储器的层次结构:
高速缓存Cache:
数百K字节、非常快速、昂贵、易变
内存RAM:
数M到数百M字节、中等速度、中等价格、易变
磁盘:
数M到数百G字节、低速、价廉、断电仍保存
内存空间: 是由存储单元(字节或字)组成的一维连续的地址空间; 内存空间用来存放当前正在运行程序的代码及数据, 是程序中指令本身地址所指的存储器、亦即程序计数器所指的存储器。
内存的要求: 能直接存取, 访问速度尽量快, 应与CPU 取指速度相匹配, 足够大, 能装下当前运行的程序和数据, 否则CPU执行速度就会受到内存速度和容量的影响而得不到充分发挥。
内存可以分为:
系统区:用于存放操作系统
用户区:用于装入并存放用户程序和数据。
存储管理目的
1. 充分利用内存, 为多道程序并发执行提供存储基础
2. 尽可能方便用户使用
自动装入用户程序
用户程序中不必考虑硬件细节
3. 系统能够解决程序空间比实际内存空间大的问题
4. 程序在执行时可以动态伸缩
5. 存储保护与安全
6. 共享与通信
7. 了解有关资源的使用状况
8. 实现的性能和代价, 性能高时空开销小
存储管理的内容
1. 内存空间的管理、分配与回收
记录内存的使用情况(内存分配回收的依据)
设置相应的内存分配表
内存空间划分: 等长或不等长
确定分配算法, 实施内存分配
回收内存
分配回收方式: 静态分配与动态分配
2. 存储共享
内存共享:两个或多个进程共用内存中相同区域
目的:节省内存空间,提高内存利用率
实现进程通信(数据共享)
共享内容:
代码共享,要求代码为纯代码
数据共享
3. 存储保护与安全
为多个程序共享内存提供保障,使内存中的各道程序只能访问它自己的区域, 避免各道程序间相互干拢, 特别是当一道程序发生错误时, 不致于影响其他程序的运行。通常由硬件完成保护功能, 由软件辅助实现。
保护范围
保护系统程序区不被用户侵犯(有意或无意的)
不允许用户程序读写不属于自己地址空间的数据
(系统区地址空间, 其他用户程序的地址空间)
保护方法—防止地址越界
每个进程都有自己的地址空间, 应防止发生地址越界; 当程序要访问某内存单元时, 由硬件检查是否越界, 如未越界则执行, 否则产生地址越界中断。
硬件提供一对寄存器: (上界寄存器/下界寄存器)
基址寄存器: 存起始地址。限长寄存器: 存长度
权限保护: 对于多进程共享的存储区域, 各进程都有自己的访问权限; 如果越权访问, 则发生读写保护。
4. 内存“扩充”
通过虚拟存储技术实现
用户在编制程序时,不应该受内存容量限制,所以要采用一定技术来"扩充"内存的容量,使用户得到比实际内存容量大的多的内存空间。
具体实现是在硬件支持下,软硬件相互协作,将内存和外存结合起来统一使用。通过这种方法把内存扩充,使用户在编制程序时不受内存限制。
5. 程序的装入
创建进程的第一件事, 就是将程序和数据装入内存。对不同的地址映射方式对应有多种装入方式
程序的装入和链接
源程序
编译程序
或汇编程序
目标
模块
链接程序
装入
模块
装入程序
装入阶段
编译阶段
内存中
可执行
代码
链接阶段
对用户程序的处理过程
地址映射
地址映射有称为地址重定位, 地址变换
逻辑地址地址映射物理地址
(相对地址, 虚地址) (绝对地址, 实地址)
地址映射
BA=1000
.
.
.
.
Load A 200
…
3456
…
1100
物理地址空间
…
Load A d1
…
…
d1 3456
…
源程序
…
Load A 200
…
…
3456
…
000
100
200
编译连接
逻辑地址空间
1200