【讲解】进程P有8个页面,页号分别为0~7,页面大小为4K,假设系统给进程P分配了4个存储块,进程P的页面变换表如下所示。表中状态位等于1和0分别表示页面在内存和不在内存。若进程P要访问的逻辑地址为十六进制5148H,则该地址经过变换后,其物理地址应为十六进制 (1) ;如果进程P要访问的页面6不在内存,那么应该淘汰页号为 (2) 的页面。
进程P有8个页面,页号分别为0~7,页面大小为4K,假设系统给进程P分配了4个存储块,进程P的页面变换表如下所示。表中状态位等于1和0分别表示页面在内存和不在内存。若进程P要访问的逻辑地址为十六进制5148H,则该地址经过变换后,其物理地址应为十六进制 (1) ;如果进程P要访问的页面6不在内存,那么应该淘汰页号为 (2) 的页面。
| 页号 | 页帧号 | 状态位 | 访问位 | 修改位 |
|---|---|---|---|---|
| 0 | - | 0 | 0 | 0 |
| 1 | 7 | 1 | 1 | 0 |
| 2 | 5 | 1 | 0 | 1 |
| 3 | - | 0 | 0 | 0 |
| 4 | - | 0 | 0 | 0 |
| 5 | 3 | 1 | 1 | 1 |
| 6 | - | 0 | 0 | 0 |
| 7 | 9 | 1 | 1 | 0 |
(1) 物理地址的计算
要将逻辑地址 5148H 转换为物理地址,首先需要知道页面大小、页号和页内偏移的计算过程:
-
页面大小为4K(2122^{12}212),因此页内偏移的长度为12位。
-
逻辑地址
5148H的二进制表示为:
5148H = 0101 0001 0100 1000B
1. 分解逻辑地址
逻辑地址可以分为两部分:
-
高位部分
用于页号(取逻辑地址的高位),假设页号占用高位的若干位。
- 由于每页大小是4K(即 12 位用于页内偏移),因此剩下的部分是页号。逻辑地址的高4位就是页号。
-
低12位表示页内偏移。
对于 5148H:
- 页号 =
5(取高位 0101,表示页面5) - 页内偏移 =
148H(取低12位)
2. 查找页面表
根据题目提供的页面变换表:
- 页号 5 对应的页帧号为
3,且状态位为1,表示页面5在内存中。 - 物理地址是由页帧号加上页内偏移组成的。页帧号为
3,表示物理地址的高位为3,其余部分则为页内偏移148H。
3. 计算物理地址
物理地址 = 页帧号 × 页面大小 + 页内偏移
- 页帧号
3对应的物理地址高位:3 × 4K = 3000H - 加上偏移
148H,则物理地址为: $$3000H+148H=3148H$$
因此,物理地址是 3148H。
(2) 淘汰页面的选择
当进程P要访问的页面6不在内存中(状态位为0),则系统需要通过页面置换算法来选择一个已经在内存中的页面进行淘汰。
从题目中给出的表可以看到,系统分配了4个存储块,目前在内存中的页面有(状态位为1):
- 页号 1,页帧号 7
- 页号 2,页帧号 5
- 页号 5,页帧号 3
- 页号 7,页帧号 9
根据不同的页面置换算法,可以选择不同的页面进行淘汰。通常使用的页面置换算法有 FIFO、LRU、CLOCK 等。
- FIFO(先进先出):选择最早进入内存的页面进行淘汰。
- LRU(最近最少使用):选择最近最少使用的页面进行淘汰。
- CLOCK:通过访问位和修改位进行选择。
从表中可以看到每个页面的访问位和修改位:
- 页号1:访问位 1,修改位 0
- 页号2:访问位 0,修改位 1
- 页号5:访问位 1,修改位 1
- 页号7:访问位 1,修改位 0
根据常见的LRU(最近最少使用)算法,由于页号2的访问位为0,说明它是最近没有被访问的页面,因此最有可能被淘汰。
因此,应淘汰的页号为 2。
总结:
- 物理地址是:
3148H - 应淘汰的页号是:
2

浙公网安备 33010602011771号