1 概述
1.1 页式存储
- 页式存储:将 程序 与 内存 划分为 同样大小的块,以 页 为单位将 程序 调入 内存。
- 地址区分:程序中使用逻辑地址,内存中使用物理地址,参考下图
- 逻辑地址 = 页号 + 页内地址
- 物理地址 = 页帧号(物理块号) + 页内地址
【例题1】若页面大小是 4k,逻辑地址是 2d16h,页表如下图所示,问页号是多少?对应的物理地址是多少?
解析:
1、根据页面大小为 4 k = ( 2 12 ) 4k =(2^{12}) 4k=(212) 可知,后 12 位为 页内地址
2、根据逻辑地址为 2 d 16 h = 16 进制数 2d16h = 16进制数 2d16h=16进制数 可知,前 4 位为 页号
3、将 2d16h 转为二进制是 0010 1101 0001 0110,可知,0010 为页号,对应十进制数 2,此为第一个问答案
4、根据页表可知,页号 2 对应块号 6 = 0110,故对应物理地址为 0110 1101 0001 0110
2 页面置换算法
2.1 先进先出 FIFO
-
FIFO:First In First Out(先进先出)
-
原理:最先进入内存的页面,最先退出内存(向前看)
-
效率:FIFO 算法只是在按线性顺序访问地址空间时,才是最理想的,否则效率不高。因为那些常被访问的页,往往在内存中也停留得最久,结果它们因变 “老” 而不得不被置换出去。
-
举例:考虑下述页面走向:1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6。当内存块数量为 3 时,问先进先出置换算法(FIFO)的缺页次数是多少?(所有内存块最初都是空的,凡是第一次用到的页面都产生一次缺页)
- 缺页:在块中找不到对应的页面(写入块中,缺页为 ×);反之,可以找到(块内容保持不变,缺页为 √)
- 红色字体:置换的部分(下同);蓝色背景:该页面可以在块中的位置
2.2 最佳置换法 OPT
- OPT:optimum(最佳的)
- 原理:置换最长时间不需要访问的页面(向后看)
- 理论:这是一种理想情况下的页面置换算法,但实际上不可能实现。因为无法预测之后出现的是哪个页面。
2.3 最近最少使用 LRU
- LRU:Least Recently Used(最近最少使用)
- 原理:置换最近最少使用的页面(向前看)
3 扩展
3.1 网工软考真题
【2017上半年 - 8】某计算机系统页面大小为 4K,进程的页面变换表如下所示。若进程的逻辑地址为 2D16H。该地址经过变换后,其物理地址应为()
A.2048 H
B.4096
C.4D16H
D.6D16H
页号 | 物理块号 |
---|---|
0 | 1 |
1 | 3 |
2 | 4 |
3 | 6 |
参考答案:C
① 确认页内地址长度。页面大小 4 k = 2 12 b 4k = 2^{12}b 4k=212b,则说明 页内地址长度为 12
② 将逻辑地址转为二进制。逻辑地址是 2D16H,转为二进制是:0010 1101 0001 0110
③ 划分 页内地址 和 页号。页内地址(后 12 位):1101 0001 0110。页号(余下部分,不足补 0):0010
④ 页号 和 物理块号 转换。页号 0010,对应十进制数:2,根据对照转换表可知,对应 物理块号为 4
⑤ 得出转换后的物理地址。物理块号 4 + 页内地址 D16 = 4D16H