操作系统(第四章)
存储器管理
存储器
- 内存
- 主存
- 连续分配
- 单一
- 分区
- 离散分配
- 分页式
- 分段式
- 段页式
- 连续分配
- 虚拟(主+辅)
- 请求式分页
- 请求式分段
- 请求式段页
- 主存
- 外存(第五章)
程序的运行与存储器的关系
-
地址转换
- 逻辑地址|相对地址
- 物理地址|绝对地址
重定位:$逻辑地址 \rightarrow 物理地址$
-
两种重定位
- 静态:地址只能一次修改
- 动态:地址的多次修改
区别:增加了一个重定位寄存器(存放内存的起始地址)
连续分配
为用户作业分配的内存空间
-
单一连续
-
分区式
把内存分成若干个连续的分区,每个分区都可以存储一个作业
-
固定式
- 分区大小相等
- 分区大小不相等
-
可变式(动态分区分配)
$分区分配算法 \rightarrow 分区链接的要求$
- 首次适应算法
要求:$由低地址 \rightarrow 高地址链接$
-
循环首次适应算法
要求:$由低地址 \rightarrow 高地址链接$
-
最佳适应算法(最容易产生外零头)
要求:按大小:$从小 \rightarrow 大链接$
-
最坏性算法
要求:按大小:$从大 \rightarrow 小链接$
碎片的处理方式:
设置分区单位:粒度(1KB)
- $碎片 \leq 粒度$:可以分配作业
- $碎片 \geq 粒度$:可以进行二次分配
-
-
重定位
动态重定位:程序可以移动(整理碎片)$\rightarrow$紧凑
离散分配
-
分页式
页/页面,页框/物理块,逻辑地址/物理地址,页表,逻辑地址$\rightarrow$物理地址
例:
某虚拟存储器的用户编程空间共32个页面,每页为1KB,内存为16KB。假定某时刻一用户页表中已调入内存的页面对应的物理块号如下表
则逻辑地址093C(H)所对应的物理地址为 ?
解:
逻辑地址:$32 \times 1KB = 32KB \rightarrow 2^{15} \rightarrow 15bit$
每页大小:$1KB \rightarrow 2^{10} \rightarrow 10bit(页内地址)$
15-10=5bit(页号)
000(0) 1001(9) 0011(3) 1100(C) (逻辑地址为15位,所以093C转换为2进制也为15位)
内存:$16KB=2^{14}$ 物理地址:14bit
低10bit,块内地址(页内地址)
高 4bit,块号
01/0001/0011/1100
即物理地址为:113C(H)
例:
对于表所示的段表:请将逻辑地址(0,137),(1,4000),(2,3600),(5,230)转换成物理地址
解:
(0,137)
137<10K ,段号0存在
转换为物理地址为:$50 \times 1024 + 137=51337$
(1,4000)
4000>3K,产生中断,无法转换
(2,3600)
3600<5K,段号2存在
转换为物理地址为:$70 \times 1024 + 3600=75280$
(5,230)
段号不存在,无法转换
例:
已知分页系统,逻辑空间32个页面,每页大小2KB,内存空间1MB
-
画出逻辑地址格式
-
如果不考虑访问权限,页表有多少项,每项至少需要多少位
32个页面=32项
内存(MB):$\frac{1MB}{2KB}=\frac{1\times 2^{20}}{2^{11}}=2^9$个
每项至少需要多9位
-
如果内存减少一半,则页表会发生怎么变化?
32个页表项不变
内存:$1MB \rightarrow 512KB$
$\frac{2^{19}}{2^{11}}=2^8$
每项至少需要的位从9位变为8位
地址变换机构(逻辑$\rightarrow$ 物理)
-
基本的地址变换(5个部分)
- 页表寄存器:页表地址,页表长度
- 越界中断机构:页表与页表长度
- $\geq$,越界
- <,访问页表
- 逻辑地址
- 页表:页表起始+页号
- 物理地址:块号与页内地址拼接而成
访问内存两次
- 访问页表
- 物理地址
-
有快表的地址转换
增加了快表寄存器:将经常会访问的页面以及它的块号
内存
- 命中快表:1次
- 未命中快表:2次
分段式
段,逻辑地址,物理地址,段表,地址转换
段表:段号,段长,基址组成
地址变换:$逻辑地址 \rightarrow 物理地址$
-
段表寄存器:段表始址,段表长度
-
越界中断机构
两次越界中断比较
- 段号与段长关系
- >,中断
- <,访问段表
- 段内地址连续与段长
- >,中断
- $\leq$,可以转换
- 段号与段长关系
-
逻辑地址
-
段表
-
物理地址(基址+段内地址)
两次访问内存
- 访问段表
- 物理地址
分页与分段区别
- 页是信息的物理单位,段是逻辑单位
- 页长度是固定的,段长度不固定(由用户指定)
- 一维与二维
问:分页与分段实现共享,哪个更容易实现信息共享?
答:分段