存储系统
本文介绍的是 主存(内存) 与 辅存(硬盘) 的存储管理,具体是:将硬盘中的程序读取到内存中
分类
分为三种:
- 页式存储
- 段式存储(解决页式存储的缺点)
- 段页式存储(解决上面两种的缺点)
页式存储【重点考察】
页式存储:将 程序 与 内存 均划分为 同样大小的块,以页为单位将程序调入内存。
页:将用户程序分成 n 块,称之为页
内存:将内存也分成 n 块。物理块号又称之为 页帧号
页表:将应用程序的 页 与内存的 块 映射
逻辑地址:指用户程序的 页
物理地址:指内存
优点
- 利用率高 (当程序较大时,内存中没有足够的连续的空间,将程序读取到内存,采用这种方式,即使内存是不连续的空间,也能读取程序)
- 碎片小
- 分配及管理简单
缺点
- 增加了系统开销(需要维护页表)
- 可能产生抖动现象(见下面)
所以提出 段式存储
考点
逻辑地址 与 物理地址 之间的转换关系
转换公式:
逻辑地址 = 页 号 + 页内地址
↓
物理地址 = 页帧号 + 页内地址
解释:页式存储是将 程序 与 内存 均划分为 同样大小的块,所以只需要将 页号 和 页帧号 转换即可,页内地址 不需要转换
题
根据上图,解答下面题:
页式存储系统中,每个页的大小为 4KB。
逻辑地址 (二进制):10 1100 1101 1110
对应的物理地址(二进制)是多少?
解答
有解答技巧:换算成相同的进制,就能知道哪个是页号,哪个页内地址
4KB 换算成 2^12B,二进制:1 0000 0000 0000
逻辑地址 (二进制):10 1100 1101 1110
二者对应关系如下:
1 0000 0000 0000
10 1100 1101 1110 // 右侧12位是页内地址,左侧的2位是页号
10 转成十进制是 2
根据上图页表映射关系,页号2 映射 页帧号6
6 换算成二进制是110
根据转换公式,只需要将 页号 转 页帧号,页内地址不变,即:
110 1100 1101 1110
抖动
抖动:因为内存有限,没有足够多的物理块,会导致现加载某一页到内存中,替换掉之前的数据
淘汰原则
如上图:由于内存有限,页号 3 和 4 的数据没有加载到内存中
当需要页号 3、4 的数据时,需要将这两块数据 替换 页帧号 2、3、5、6 的物理块
注意: 有 - 的物理块表示不可用,所以 不可以替换 - 物理块
根据 访问位、修改位 决定替换哪个页帧号的数据:
先看访问位,最近访问过的,可能还会被访问过,所有优先 替换 未被访问 的
如果有多个 未被访问,就看 修改位,优先 替换 未被修改
段式存储
段式存储:将用户程序根据 逻辑整体 分成一个个段,然后调入内存,段的长度可以不一样。
段表:段号、段长与 基址 的映射关系
基址:记录内存中 开始地址。
结束地址:段表中记录 段长,所以 结束地址 = 开始地址 + 段长
优点
程序逻辑完整,多道程序共享内存,各段程序修改互不影响
减少抖动
缺点
内存利用率低,内存碎片浪费大
考点
逻辑地址是否合法
逻辑段地址的表示方法: (段号,偏移量)
合法段地址: (0,25K),因为 0 段的段长是 30K,25K 在此范围内
非法段地址: (0,35K),因为 0 段的段长是 30K,35K 超出范围
段页式存储
段页式存储:段式与页式的综合体。先分段,再分页。
1个程序有若干个段,每个段中可以有若干页,每个 段的大小不同,每个 页的大小相同,所以 每段内 页的数量可以不同
优点
空间浪费小、存储共享容易、存储保护容易、能动态连接
缺点
复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降
考点
了解地址结构
题
某计算机系统页面大小为 4K ,进程的页面变换表如下所示。若进程的逻辑地址为 2D16H。该地址经过变换后,其物理地址应为()。
A、2048H
B、4096H
C、4D16H
D、6D16H
分析
这类题都有技巧,不需要按步骤计算,也根本算不过来
分析此题是 页式存储的 逻辑地址 与 物理地址 的转换
解答
页面大小为 4KB,换算成 2^12B,二进制:1 0000 0000 0000
逻辑地址为 2D16H,是16进制,根据 二进制转八进制、二进制转十六进制 - 分组法 可知:
4位2进制数为一组,转 1位16进制数,所以对应关系如下:
1 0000 0000 0000
2 D 1 6 // 右侧3位是页内地址,左侧1位是页号
2 是16进制,转成10进制也是 2
根据上图映射关系,页号 2 映射 4 号物理块
根据转换公式,只需要将 页号 转 页帧号,页内地址不变,即:
4D16H
答案
C
题
进程P有5个页面,页号为 0-4,页面变换表及状态位、访问位和修改位的含义如下图所示,若系统给进程P分配了 3 个存储块,当访问的页面 3 不在内存时,应该淘汰表中页号为()的页面。
A、0
B、1
C、2
D、4
分析
通过 状态位 可知:页号
1、3没有加载到内存,所以不可能是这两个页号再看 访问位,发现页号
0、2、4都访问过,无法确定淘汰哪一个最后看 修改位,发现页号
0未修改过,那么就淘汰 页号0
答案
A
题
设某进程的段表如下所示,逻辑地址()可以转换为对应的物理地址。
A、(0,1597)、((1,30)和(3,1390)
B、(0,128)、(1,30)和(3,1390)
C、(0,1597)、(2,98)和(3,1390)
D、(0,128)(2,98)和(4,1066)
分析
通过 段表 可知,是 段式存储 的题
解答
通过上图段号与段长,可知:
0号段 的数据长度是 600,所以凡是0号段逻辑地址 600 的都不对,那么 A、C 不对
4号段 的数据长度是 960,所以 D 不对,因为 4号段的逻辑地址是 1066 超过 960
答案
B
题
假设段页式存储管理系统中的地址结构如下图所示,则系统()
A、最多可有256个段,每个段的大小均为2048个页,页的大小为8K
B、最多可有256个段,每个段最大允许有2048个页,页的大小为8K
C、最多可有512个段,每个段的大小均为1024个页,页的大小为4K
D、最多可有512个段,每个段最大允许有1024个页,页的大小为4K
解答
0-12 有 13 位,所以 2^13 = 8k13-23 有 11 位,所以 2^11 = 2048,注意:每个段的页数可以不同,页大小时相同的24-31 有 8 位,所以 2^8 = 256
答案
B








