操作系统复习
第四章 内存管理
4.1 存储管理
一、存储管理的基本概念
1.存储器层次结构
- 通用寄存器堆
- 高速缓存(硬件实现)
- 主存(内存)
- 磁盘缓存
- 固定磁盘(外存)
- 可移动存储介质
2.存储管理的任务
- 存储空间的管理、分配 和回收
- 存储分配算法
- 地址再定位
- 存储共享与存储保护
- 虚拟内存
- 页面淘汰算法
3.地址空间
- 内存
- 物理地址:内存中存储单元的地址
- 逻辑地址:相对某个基准量的相对地址
- 地址再定位:逻辑地址→物理地址
二、程序的装入
1.程序装入技术:从外存装入内存
- 绝对装入/固定地址再定位
- 可重定位装入
- 静态地址再定位
- 动态地址再定位
2.静态地址再定位
- 在程序装入时、执行前 进行地址再定位,由装配程序完成
- 把逻辑地址修改 为物理地址(加上内存中的起始地址),之后不再改变
- 优点:不需硬件支持
- 缺点
- 程序装入内存后不能移动(因为装入完成后地址不再修改)
- 一个程序占用连续内存空间
- 不易实现共享
3.动态地址再定位
- 在程序装入后不修改逻辑地址,运行中 才进行地址变换,由硬件地址映射机制完成,需要重定位寄存器 支持
- 优点:程序占用的空间动态可变
- 可以移动
- 可以不连续
- 可以共享
- 缺点
- 需要硬件支持
- 实现存储管理的软件算法复杂
三、内存分配存储管理方式
1.单道连续存储管理:单道程序环境
- 内存分为两个区域:系统区和用户区,单道程序占用整个用户区
2.分区存储管理:多道程序系统和分时系统
-
固定分区分配
- 内存分为多个固定大小的连续分区,每个分区装一道程序
- 实现:分区使用表
- 分类
- 分区大小相等
- 分区大小不等
- 缺点
- 大程序放不下
- 小程序带来内碎片
- 分区总数限制并发数
- 无法动态扩充内存
-
动态分区分配
- 程序装入时按需创建并分配相应大小的分区
- 实现:已分配区表、未分配区表:链表
- 分区分配算法
- 首次适应 First fit
- 临近适配 Next fit
- 最佳适配 Best fit
- 最差适配 Worst fit
- 分区回收方法:合并
- 缺点
- 内存管理复杂
- 外碎片问题
- 解决方法
- 可重定位分区:紧凑技术
- 多重分区:非连续存储
-
可重定位分区:紧凑
- 将多个空闲分区拼成大分区
-
多重分区:非连续存储
- 将程序分块,放到各个空闲分区里
-
伙伴系统
四、覆盖与交换技术
-
覆盖技术:一个作业的若干程序段,或几个作业的某些部分共享某一个存储空间。
-
交换技术:系统将内存中某些进程暂时移到外存,把外存中某些进程换进内存,占据前者所占用的区域。
五、分页存储管理
- 基本思想
- 将逻辑地址空间划分为页面(连续)
- 将物理内存空间划分为页帧/块(离散)
- 页面=页帧/块
- 页表:长度和首地址放在PCB中
- 页号:逻辑地址空间的页号(连续):0、1、2……
- 块号:内存空间块号(离散):5、65、13……
- 其他
- 地址结构:页号+偏移量
- 前一部分为页号P(逻辑,连续)
- bit位数:计算最大页数,如20位:最多1M个页
- 后一部分为偏移量W,即页内地址
- bit位数:计算每页大小,如12位:页面大小4KB
- 前一部分为页号P(逻辑,连续)
- 地址变换机构:通过查页表,把地址中的页号转换为块号
- 快表
- 地址变换过程:访问2次主存:访问主存中页表+访问主存
- 引入快表:访问1次主存:查快表+访问主存
计算:引入快表后,给定命中率,求平均存取时间
- 多级页表
- 地址结构:外部页号P1+外部页内地址P2+页内地址d
- 例:计算题
- 逻辑地址为32bit,页面大小为4KB(12bit)
- 则共有32bit-12bit=20bit=1M个页面=1M个页表项
- 1个页表项1B,则页表大小为1MB
- 将1MB页表分为1K×1KB,故外页表的页表项为1K=10bit=1024个,外层页表页内地址也为10bit