🏷️ 知识点:地址翻译
在页面尺寸为 4KB 的页式存储管理中,页表中的内容如下图所示,则物理地址 32773 对应的逻辑地址为( )。
A. 32773 B. 42773 C. 12293 D. 62773
[tag_link]
正确答案:C
首先,页面尺寸为 4KB,即 4096 字节。 物理地址 32773 可以分解为页框号和页内偏移:页框号 = 32773 ÷ 4096 = 8(因为 4096 × 8 = 32768),页内偏移 = 32773 - 32768 = 5。 然后,根据页表内容,页框号 8 对应虚页号 3。 因此,逻辑地址由虚页号和页内偏移组成:逻辑地址 = 虚页号 × 页面尺寸 + 页内偏移 = 3 × 4096 + 5 = 12288 + 5 = 12293。 故正确答案为 C. 12293。
某计算机主存地址空间大小为256MB, 按字节编址。虚拟地址空间大小为4GB, 采用页式存储管理, 页面大小为4KB,TLB ( 快表)采用全相联映射,有4个页表项,内容如下表所示。
| 有效位 | 标记 | 页框号 | … |
|---|---|---|---|
| 0 | FF180H | 0002H | … |
| 1 | 3FFF1H | 0035H | … |
| 0 | 02FF3H | 0351H | … |
| 1 | 03FFFH | 0153H | … |
…
则对虚拟地址03FFF180H进行虚实地址变换的结果是()。
A.0153180H
B.0035180H
C.TLB 缺失
D.缺页
[tag_link]
正确答案:A
按字节编址,页面大小为 4KB,页内地址共 12 位。地址空间大小为 4GB,虚拟地址共 32 位,前 20 位为页号。虚拟地址为 03FF F180H,故页号为 03 FFFH,页内地址为 180H。查找页标记 03FFFH 所对应的页表项,页框号为 0153H,页框号与页内地址拼接即为物理地址 0153180H。
某计算机主存地址空间大小为 256MB,按字节编址。虚拟地址空间大小为 4GB,采用页式存储管理,页面大小为 4KB,TLB(快表)采用全相联映射,有 4 个页表项,内容如下表所示。
| 有效位 | 标记 | 页框号 | … |
| — | — | — | — | | 0 | FF180H | 0002H | … | | 1 | 3FFF1H | 0035H | … | | 0 | 02FF3H | 0351H | … | | 1 | 03FFFH | 0153H | … |
则对虚拟地址 03FFF180H 进行虚实地址变换的结果是( )。
A.0153180H
B.0035180H
C.TLB 缺失
D.缺页
[tag_link] 正确答案:A按字节编址,页面大小为 4KB,页内地址共 12 位。地址空间大小为 4GB,虚拟地址共 32 位,前 20 位为页号。虚拟地址为 03FF F180H,故页号为 03 FFFH,页内地址为 180H。查找页标记 03FFFH 所对应的页表项,页框号为 0153H,页框号与页内地址拼接即为物理地址 0153180H。
下列措施中,能加快虚实地址转换的是()。
I. 增大快表(TLB) 容量
II. 让页表常驻内存
ⅢI. 增大交换区(swap)
A. 仅 I
B. 仅 Ⅱ
C. 仅 I 、Ⅱ
D. 仅 IⅡ、ⅢII
[tag_link]
正确答案:C
虚实地址转换 是指逻辑地址和物理地址的转换。增大快表容量能把更多的表项装入快表中,会加快虚实地址转换的平均速率;让页表常驻内存可以省去一 些不在内存中的页表从磁盘上调入的过程,也能加快虚实地址转换;增大交换区对虚实地址转换速度无影响,因此 I、II 正确,选 C。
某进程的段表内容如下所示。
当访问段号为 2、段内地址为 400 的逻辑地址时,进行地址转换的结果是( )。
A. 段缺失异常 B. 得到内存地址 4400 C. 越权异常 D. 越界异常
[tag_link]
正确答案:D
分段系统的逻辑地址 A 到物理地址 E 之间的地址变换过程参考 该节。题目中段号为 2 的段长为 300,小于段内地址为 400,故发生越界异常,D 正确。
某页式存储管理系统中,主存为 128KB,分成 32 块,块号为 0、1、2、3、…、31;某作业有 5 页,其页号为 0、1、2、3、4,被分别装入主存的 3、8、4、6、9 块中。有一逻辑地址为 [3, 70](其中方括号内的第一个元素为页号,第二个元素为页内地址,均为十进制),则其对应的物理地址为( )。
A. 24646 B. 24576 C. 24070 D. 670
[tag_link]
正确答案:A
首先,计算主存中每块的大小。 主存总容量为 128KB,分为 32 块,因此每块大小 = 128KB / 32 = 4KB = 4096 字节。 逻辑地址 [3, 70] 表示页号为 3,页内地址为 70。 根据作业的页表映射,页 3 被装入主存的块 6 中,因此对应的物理块号为 6。 物理地址的计算公式为:物理地址 = 块号 × 块大小 + 页内地址。 代入数值:物理地址 = 6 × 4096 + 70 = 24576 + 70 = 24646。 因此,逻辑地址 [3, 70] 对应的物理地址为 24646,对应选项 A。
在请求分页存储管理系统中,地址变换过程可能会因为( )而产生中断。 Ⅰ. 地址越界 Ⅱ. 缺页 Ⅲ. 访问权限错误 Ⅳ. 内存溢出
A. Ⅰ和Ⅱ B. Ⅰ、Ⅱ、Ⅲ和Ⅳ C. 仅Ⅱ D. Ⅰ、Ⅱ和Ⅲ
[tag_link]
正确答案:D
在请求分页存储管理系统中,地址变换过程将逻辑地址转换为物理地址,该过程可能因多种异常情况而产生中断。
首先,地址越界(Ⅰ)可能触发中断。 当地址变换时,若逻辑地址的页号超出进程地址空间范围(如大于页表长度),硬件会检测到无效访问,产生越界中断。
其次,缺页(Ⅱ)是请求分页系统的核心中断来源。 当访问的页面不在内存中(页表项的有效位为 0),硬件会触发缺页中断,操作系统需调入页面。
第三,访问权限错误(Ⅲ)也可能导致中断。 页表项中包含保护位(如读、写权限),若进程试图以未授权方式访问页面(如写入只读页),会触发保护中断。
最后,内存溢出(Ⅳ)通常不是地址变换过程的直接中断原因。 内存溢出指系统内存不足,这可能在页面置换或内存分配时由操作系统处理,但地址变换本身不直接检测内存溢出; 缺页中断处理程序可能需处理内存不足,但变换过程不会因此产生中断。
因此,地址变换过程可能因Ⅰ、Ⅱ和Ⅲ产生中断,对应选项 D。
某计算机主存按字节编址,采用二级分页存储管理,地址结构如下所示:
虚拟地址 20501225H 对应的页目录号、页号分别是( )。
A. 081H、101H B. 081H、401H C. 201H、101H D. 201H、401H
[tag_link]
正确答案:A
题中给出的是十六进制地址,首先将它转化为二进制地址,然后用二进制地址去匹配题中对应的地址结构。转换为进制地址和地址结构的对应关系如下所示。2050 1225H = 0010 0000 01010000 00010010 00100101前 10 位、1120 位、2132 位分别对应页目录号、页号和页内偏移。把页目录号、页号单独拿出,转换为十六进制时缺少的位数在高位补零,0000 1000 0001、0001 0000 0001 分别对应 081H、101H,选项 A 正确。
某计算机存储器按字节编址,虚拟(逻辑)地址空间大小为 16MB,主存(物理)地址空间大小为 1MB,页面大小为 4KB:Cache 采用直接映射方式,共 8 行:主存与 Cache 之间交换的块大小为 32B。系统运行到某一时刻时,页表的部分内容和 Cache 的部分内容分别如题 44-a 图、题 44-b 图所示,图中页框号及标记字段的内容为十六进制形式。
请回答下列问题∶
(1) 虚拟地址共有几位,哪几位表示虚页号?物理地址共有几位,哪几位表示页框号(物理页号)?
(2) 使用物理地址访问 Cache 时,物理地址应划分成哪几个字段?要求说明每个字段的位数及在物理地址中的位置。
(3) 虚拟地址 001C60H 所在的页面是否在主存中?若在主存中,则该虚拟地址对应的物理地址是什么?访问该地址时是否 Cache 命中?要求说明理由。
(4) 假定为该机配置一个 4 路组相连的 TLB,该 TLB 共可存放 8 个页表项,若其当前内容(十六进制)如题 44-c 图所示,则此时虚拟地址 024BACH 所在的页面是否在主存中?要求说明理由。
[tag_link]
1)存储器按字节编址,虚拟地址空间大小为 16B=24B,故虚拟地址为 24 位;页面大小为4KB=212B,故高 12 位为虚页号。主存地址空间大小为1MB=22B,故物理地址为 20 位;由于页内地址为 12 位,故高 8 位为页框号。
2)由于 Cache 采用直接映射方式,所以物理地址各字段的划分如下。
| Tag 标记 | Cache 行号 | 块内偏移 |
块大小为 32B,所以块内偏移为 5 位;Cache 共 8 行,故 Cache 行号为 3 位,标记字段为 20-5-3=12 位。
3)虚拟地址 001C60H 的前 12 位为虚页号,即 001H,查看 001H 处的页表项,其对应的效位为 1,故虚拟地址 001C60H 所在的页面在主存中。页表 001H 处的页框号为 04H,与页内偏移(虚拟地址后 12 位)拼接成物理地址为 04C60H.物理地址 04C60H=00000100110001100000B,主存块只能映射到 Cache 的第 3 行(即第 011B 行),由于该行的有效位=1,标记(值为 105H) ≠ 04CH(物理地址高 12 位),故不命中。
4)由于 TLB 采用四路组相联,故 TLB 被分为 8/4=2 个组,因此虚页号中高 11 位为 TLB 标记、最低 1 位为 TLB 组号。虚拟地址 024BACH=000000100100101110101100B,虚页号为 000000100100B,TLB 标记为 00000010010B(即 012H),TLB 组号为 0B,因此,该虚拟地址所对应物理页面只可能映射到 TLB 的第 0 组。组 0 中存在有效位=1、标记=012H 的项,因此访问 TLB 命中,即虚拟地址 024BACH 所在的页面在主存中。
假设计算机 M 的主存地址为 24 位,按字节编址;采用分页存储管理方式,虚拟地址为 30 位,页大小为 4KB;TLB 采用 2 路组相联方式和 LRU 替换策略,共 8 组。请回答下列问题。
(1) 虚拟地址中哪几位表示虚页号?哪几位表示页内地址?
(2) 已知访问 TLB 时虚页号高位部分用作 TLB 标记,低位部分用作 TLB 组号,M 的虚拟地址中哪几位是 TLB 标记?哪几位是 TLB 组号?
(3) 假设 TLB 初始时为空,访问的虚页号依次为 10、12、16、7、26、4、12 和 20,在此过程中,哪一个虚页号对应的 TLB 表项被替换?说明理由。
(4) 若将 M 中的虚拟地址位数增加到 32 位,则 TLB 表项的位数增加几位?
[tag_link]
注意:对于本题的 TLB,需要采用处理 Cache 的方式求解。
1)按字节编址,页面大小为 4KB=212B,页内地址为 12 位。虚拟地址中高 30-12=18位表示虚页号,虚拟地址中低 12 位表示页内地址。
2)TLB 采用 2 路组相联方式,共 8=2 组,用 3 位来标记组号。虚拟地址(或虚页号)中高 18-3=15 位为 TLB 标记,虚拟地址中随后 3 位(或虚页号中低 3 位)为 TLB 组号。
3)虚页号 4 对应的 TLB 表项被替换。因为虚页号与 TLB 组号的映射关系为 TLB 组号 = 虚页号 mod TLB 组数 = 虚页号 mod 8,因此,虚页号 10,12,16,7,26,4,12,20 映射到的TLB 组号依次为 2,4,0,7,2,4,4,4。TLB 采用 2 路组相联方式,从上述映射到的 TLB 组号序列可以看出,只有映射到 4 号组的虚页号数量大于 2,相应虚页号依次是 12,4,12 和 20。根据 LRU 替换策略,当访问第 20 页时,虚页号 4 对应的 TLB 表项被替换出来。
4)虚拟地址位数增加到 32 位时,虚页号增加了 32-30=2 位,使得每个 TLB 表项中的标记字段增加 2 位,因此,每个 TLB 表项的位数增加 2 位。
假定题 44 给出的计算机 M 采用二级分页虚拟存储管理方式,虚拟地址格式如下:
| 页目录号(10 位) | 页表索引(10 位) | 页内偏移量(12 位) |
|---|
请针对题 43 的函数 f1 和题 44 中的机器指令代码,回答下列问题。
(1) 函数 f1 的机器指令代码占多少页?
(2) 取第 1 条指令(push ebp)时,若在进行地址变换的过程中需要访问内存中的页目录和页表,则会分别访问它们各自的第几个表项(编号从 0 开始)?
(3) M 的 I/O 采用中断控制方式。若进程 P 在调用 f1 之前通过 scanf() 获取 n 的值,则在执行 scanf() 的过程中,进程 P 的状态会如何变化?CPU 是否会进入内核态?
[tag_link]
1)函数 1 的代码段中所有指令的虚拟地址的高 20 位相同,因此 1 的机器指令代码在同一页中,仅占用 1 页。(1 分)页目录号用于寻找页目录的表项,该表项包含页表的位置。页表索引用于寻找页表的表项,该表项包含页的位置。
2)push ebp 指令的虚拟地址的最高 10 位(页目录号)为 0000000001,中间 10 位(页表索引)为 0000000001,所以,取该指令时访问了页目录的第 1 个表项,(1 分)在对应的页表中访问了第 1 个表项。(1 分)
3)在执行 scanf0 的过程中,进程 P 因等待输入而从执行态变为阻塞态。(1 分)输入结束时,P 被中断处理程序唤醒,变为就绪态。(1 分)P 被调度程序调度,变为运行态。(1 分)CPU状态会从用户态变为内核态。(1 分)
请根据题 44 图给出的虚拟存储管理方式,回答下列问题。
(1) 某虚拟地址对应的页目录号为 6,在相应的页表中对应的页号为 6,页内偏移量为 8,该虚拟地址的十六进制表示是什么?
(2) 寄存器 PDBR 用于保存当前进程的页目录起始地址,该地址是物理地址还是虚拟地址?进程切换时,PDBR 的内容是否会变化?说明理由。同一进程的线程切换时,PDBR 的内容是否会变化?说明理由。
(3) 为了支持改进型 CLOCK 置换算法,需要在页表项中设置哪些字段?
[tag_link]
1)由图可知,地址总长度为 32 位,高 20 位为虚页号,低 12 位为页内地址,且虚页号高 10 位为页目录号,低 10 位为页号。十六进制表示为 01806008H。
2)PDBR 为页目录基址地址寄存器(Page-Directory Base Register),其存储页目录表物理内存基地址。进程切换时,PDBR 的内容会变化;同一进程的线程切换时,PDBR 的内容不会变化。每个进程的地址空间、页目录和 PDBR 的内容存在一一对应的关系。进程切换时,地址空间发生了变化,对应的页目录及其起始地址也相应变化,因此需要用进程切换后当前进程的页目录起始地址刷新 PDBR。同一进程中的线程共享该进程的地址空间,其线程发生切换时,地址空间不变,线程使用的页目录不变,因此 PDBR 的内容也不变。
3)改进型 Clock 置换算法需要用到使用位和修改位,故需要设置访问字段(使用位)和修改字段(脏位)。
(8 分)在某段式存储管理系统中,逻辑地址为 32 位,其中高 16 位为段号,低 16 位为段内偏移量,以下是段表(其中的地址均为 16 进制):
以下是代码段的内容(代码前的数字表示存放代码的十六进制逻辑地址):
试问:
(1)x 的逻辑地址为 10108H,它的物理地址是多少?要求给出具体的计算过程。 (2)若栈指针 SP 的当前值为 70FF0H,push x 指令的执行过程:先将 SP 减 4,然后存储 x 的值。试问存储 x 的物理地址是多少? (3)call sin 指令的执行过程:先将当前 PC 值入栈,然后在 PC 内装入目标 PC 值。请问:哪个值被压入栈了?新的 SP 指针的值是多少?新的 PC 值是多少? (4)“mov r2,4+(SP)”的功能是什么?(假设指令集与 x86 系列 CPU 相同)
[tag_link]
**【解析】** 本题考查逻辑地址和物理地址的转换等。
(1) 高 16 位为段号,低 16 位为段内偏移,则 1 为段号(对应基地址为 11900H),0108H 为段内偏移量,则逻辑地址 10108H 对应的物理地址为 11900H + 0108H = 11A08H。
(2) SP 的当前值为 70FF0H 中,先减 4H 后得 70FECH,7 为段号,0FECH 为段内偏移量,则对应的物理地址为 13000H + 0FECH = 13FECH,故存储 x 的物理地址为 13FECH。
(3) 在调用 call sin 指令后,PC 自增为 248,所以逻辑地址 248 被压入栈。由 (2) 可知每次入栈时 SP 指针先减 4,因此当前 PC 值入栈后,SP 指针的值为 70FF0H - 4H - 4H = 70FE8H,故新的 SP 指针值为 70FE8H,新的 PC 值为转移指令的目的地址 360H。
注意:有同学会问为什么入栈的不是物理地址?
首先段式存储器(页式、段页式也一样)中 PC 的值一定是逻辑地址,然后取指令时系统才按照逻辑地址根据一定的规则转换为物理地址再去访问内存。所以入栈的是 PC 的内容,当然就是逻辑地址。
(4) 70FE8(sp) + 4 = 70FECH,即 x 在栈中的逻辑地址(call sin 之前刚被 push 进去的),故其功能是把 x 的值送入寄存器 2,作为 sin 函数的参数。
对于上题,若计算机 M 的主存地址为 32 位,釆用分页存储管理方式,页大小为 4KB,则第 1 行的 push 指令和第 30 行的 ret 指令是否在同一页中(说明理由)?若指令 Cache 有 64 行,采用 4 路组相联映射方式,主存块大小为 64B,则 32 位主存地址中,哪几位表示块内地址?哪几位表示 Cache 组号?哪几位表示标记(tag)信息?读取第 16 行的 call 指令时,只可能在指令 Cache 的哪一组中命中(说明理由)?
[tag_link]
因为页大小为 4KB,所以虚拟地址的高 20 位为虚拟页号。第 1 行的 push 指令和第 30 行的 ret 指令的虚拟地址的高 20 位都是 00401H,因此两条指令在同一页中。指令 Cache 有 64 块,采用 4 路组相联映射方式,故指令 Cache 共有 64/4 = 16 组,Cache 组号共 4 位。主存块大小为 64B,故块内地址为低 6 位。综上所述,在 32 位主存地址中,低 6 位为块内地址,中间 4 位为组号,高 22 位为标记。因为页大小为 4KB,所以虚拟地址和物理地址的最低 12 位完全相同,因而 call 指令虚拟地址 0040 1025H 中的 025H = 0000 0010 0101B 为物理地址的低 12 位,对应的 7~10 位为组号,故对应的 Cache 组号为 0。
某 32 位系统采用基于二级页表的请求分页存储管理方式,按字节编址,页目录项和页表项长度均为 4 字节,虚拟地址结构如下所示。
页目录号(10位) 页号(10位) 页内偏移量(12位)
某 C 程序中数组 a[1024][1024]的起始虚拟地址为 1080 0000H,数组元素占 4 字节,该程序运行时,其进程的页目录起始物理地址为 0020 1000H,请回答下列问题。
(1) 数组元素 a[1][2]的虚拟地址是什么?对应的页目录号和页号分别是什么?对应的页目录项的物理地址是什么?若该目录项中存放的页框号为 00301H,则 a[1][2]所在页对应的页表项的物理地址是什么?
(2) 数组 a 在虚拟地址空间中所占区域是否必须连续?在物理地址空间中所占区域是否必须连续?
(3) 已知数组 a 按行优先方式存放,若对数组 a 分别按行遍历和按列遍历,则哪一种遍历方式的局部性更好?
[tag_link]
1) ①页面大小=212 B = 4096B = 4KB。每个数组元素 4B,每个页面可以存放 4KB/4B=1024 个数组元素,正好是数组的一行,数组 a 按行优先方式存放。10800000H 的虚页号为 10800H,因此 a[0] 行存放在虚页号为 10800H 的页面中,a[1] 行存放在页号为 10801H 的页面中。a[1][2] 的虚拟地址为 10801000H+4×2=10801008H。②转换为二进制 0001 0000 1000 0000 0001 0000 0000 1000,根据虚拟地址结构可知,对应的页目录号为 042H,页号为 001H。③进程的页目录表起始地址为 00201000H,每个页目录项长 4B,因此 042H 号页目录项的物理地址是 00201000H+4×42H=00201108H。④页目录项存放的页框号为 00301H,二级页表的起始地址为 00301000H,因此 a[1][2]所在页的页号为 001H,每个页表项 4B,因此对应的页表项物理地址是 00301000H + 001H×4 = 00301004H。
2)根据数组的随机存取特点,数组 a 在虚拟地址空间中所占的区域必须连续,由于数组 a不止占用一页,相邻逻辑页在物理上不一定相邻,因此数组 a 在物理地址空间中所占的区域可以不连续。
3)由 1)可知每个页面正好可以存放一整行的数组元素,“按行优先方式存放”意味着数组的同一行的所有元素都存放在同一个页面中,同一列的各个元素都存放在不同的页面中,因此数组 a 按行遍历的局部性较好。
(8分)请求分页管理系统中,假设某进程的页表内容如下表所示:
页面大小为4KB, 一次内存的访问时间是100ns, 一次快表( TLB) 的访问时间是10ns, 处理一次缺页 的平均时间108ns (已含更新 TLB 和页表的时间),进程的驻留集大小固定为2,采用最近最少使用置 换算法( LRU) 和局部淘汰策略。假设① TLB 初始为空;②地址转换时先访问 TLB, 若 TLB 未命 中,再访问页表(忽略访问页表之后的 TLB 更新时间);③有效位为0表示页面不在内存,产生缺页 中断,缺页中断处理后,返回到产生缺页中断的指令处重新执行。设有虚地址访问序列2362H 、1565H、 25A5H, 请问:
(1)依次访问上述三个虚地址,各需多少时间?给出计算过程。
(2)基于上述访问序列,虚地址1565H 的物理地址是多少?请说明理由。
[tag_link]
[tag_link]
1)根据页式管理的工作原理,应先考虑页面大小,以便将页号和页内位移分解出来。页面大小为 4KB, 即 2¹²B,则得到页内位移占虚地址的低 12 位,页号占剩余高位。可得三个虚地址的页号 P 如下
(十六进制的一位数字转换成 4 位二进制,因此,十六进制的低三位正好为页内位移,最高位为页号):
2362H:P=2,访问快表 10ns,因初始为空,访问页表 100ns 得到页框号,合成物理地址后访问主存 100ns,共计 10ns+100ns+100ns=210ns。
1565H:P=1,访问快表 10ns,落空,访问页表 100ns 落空,进行缺页中断处理 10⁸ns,访问快表 10ns,合成物理地址后访问主存 100ns,共计 10ns+100ns+10⁸ns+10ns+100ns=100000220ns.
25A5H:P=2,访问快表,因第一次访问已将该页号放入快表,因此花费 10ns 便可合成物理地址,访问主存 100ns,共计 10ns+100ns=110ns。
2)当访问虚地址 1565H 时,产生缺页中断,合法驻留集为 2,必须从页表中淘汰一个页面,根据题目的置换算法,应淘汰 0 号页面,因此 1565H 的对应页框号为 101H。由此可得 1565H 的物理地址为 101565H。