北航操作系统课程-20200323课堂小测-存储管理之页目录自映射专题
北京航空航天大学计算机学院-2020春操作系统课程,2020-03-23课堂小测,内容为存储管理之页目录自映射专题。题目作者为北航计算机学院操作系统课程组,客观题答案由课程组给出,解析及主观题答案均为博主原创,水平有限,如有错误敬请批评指正。
2020-03-23-课堂小测-页目录自映射专题
北京航空航天大学计算机学院-2020春操作系统课程
以下题目作者为北航计算机学院操作系统课程组,客观题答案由课程组给出,解析及主观题答案均为博主原创,水平有限,如有错误敬请批评指正。
1 页式内存管理中,页面大小是4KB,则页内偏移不可能是:(单选)
A. 0x0
B. 0x123
C. 0xfff
D. 0x1000
答:D
页面大小是4KB,而我们知道页内地址是从0开始连续的,因此大于4K的值的页内偏移地址是不可能出现的。
2 以下哪个地址不是4MB对齐的:(单选)
A. 0x7fc0_0000
B. 0x8000_0000
C. 0xc030_0000
D. 0xffc0_0000
答:C
4MB对齐的地址显然应该是4M这个数的整数倍。4M=2^22=0x40_0000,C选项0xc030_0000不是它的整数倍。
3 以下哪个地址不可能是自映射页目录的地址:(单选)
A. 0x8020_0000
B. 0x0000_0000
C. 0xc040_0000
D. 0x7fdf_f000
答:C
我们知道自映射页目录的地址
P
D
E
b
a
s
e
PDE_{base}
PDEbase 满足:
P
D
E
b
a
s
e
=
P
T
b
a
s
e
∣
P
T
b
a
s
e
>
>
10
=
P
T
b
a
s
e
+
P
T
b
a
s
e
÷
2
10
PDE_{base}=PT_{base}|PT_{base}>>10\\ =PT_{base}+ PT_{base} \div 2^{10}
PDEbase=PTbase∣PTbase>>10=PTbase+PTbase÷210
其中
P
T
b
a
s
e
PT_{base}
PTbase 表示整个页表在虚拟内存中的基地址,而这个值是应该4MB对齐的。通过带入题目选项所给的
P
D
E
b
a
s
e
PDE_{base}
PDEbase 地址分别计算
P
T
b
a
s
e
PT_{base}
PTbase ,在十进制下有
P
T
b
a
s
e
=
P
D
E
b
a
s
e
/
1025
×
1024
PT_{base}=PDE_{base}/1025\times1024
PTbase=PDEbase/1025×1024 。计算得到的
P
T
b
a
s
e
PT_{base}
PTbase ,A选项为0x8000_0000,B选项为0x0000_0000,D选项为0x7fc0_0000,均是4MB对齐的,而C选项无法整除,说明C项不可能是一个自映射页目录的地址。
4 寻址256TB地址空间,至少需要________位地址:(填空)
答:48
256T = 2^8T = 2^8 * 2^40 = 2^48,因此至少需要48位地址
5 页目录自映射计算过程中,给定的页表起始地址和计算得到的页目录地址是:(单选)
A. 都是物理地址
B. 都是虚拟地址
C. 前者是物理地址,后者是虚拟地址
D. 前者是虚拟地址,后者是物理地址
答:B
页表起始地址由于是操作系统软件访问的地址,显然是虚拟地址,而页目录采用自映射机制,计算所得结果也是虚拟地址系统中的一部分,也是虚拟地址。
6 一个32位页式内存管理系统,页面大小是4KB,采用二级页表管理,页表被映射到起始地址0x1fc0_0000的4MB地址空间,那么页目录所在的地址为0x____________________:(填空)
答:1FC7F000
P D E b a s e = P T b a s e ∣ P T b a s e > > 10 PDE_{base}=PT_{base}|PT_{base}>>10 PDEbase=PTbase∣PTbase>>10 ,带入即可计算得 P D E b a s e = 0 x 1 f c 7 _ f 000 PDE_{base} = 0x1fc7\_f000 PDEbase=0x1fc7_f000
7 以下关于页目录自映射说法正确的是:(单选)
A. 采用页目录自映射方式,有助于实现用户进程的统一内存布局
B. 实现内存自映射必须为所有页表页分配物理存储空间
C. 页目录自映射只适用于二级页表分页系统
D. 页目录自映射可以提高访存效率
答:A
采用页目录自映射的方式,用户进程页表也在用户空间拥有一个自映射页目录,有助于实现用户进程的统一内存布局,A正确。实现页目录自映射,或者说实现多级页表请求分页系统,就是为了避免给所有页表页分配物理空间,否则页表本身将占用过多的物理存储空间,B错误。页目录自映射机制可以适用于多级页表系统,C错误。页目录自映射和访存效率无关,事实上相比于一级页表或没有分页的系统,多级页表系统会增加内存访问次数,D错误。
8 一个32位页式内存管理系统,页面大小是4KB,采用二级页表管理,页表被映射到起始地址0xD000_0000的4MB地址空间,则自映射页目录中,指向自身的页目录项的虚拟地址为0x____________________:(填空)
答:D0340D00
P D E s e l f _ m a p p i n g = P T b a s e ∣ P T b a s e > > 10 ∣ P T b a s e > > 20 PDE_{self\_mapping}=PT_{base}|PT_{base}>>10|PT_{base}>>20 PDEself_mapping=PTbase∣PTbase>>10∣PTbase>>20 ,带入即可计算得到 P D E s e l f _ m a p p i n g = 0 x D 034 _ 0 D 00 PDE_{self\_mapping}=0xD034\_0D00 PDEself_mapping=0xD034_0D00
9 一个32位页式内存管理系统,页面大小是4KB,采用二级页表管理,页表被映射到起始地址0xC000_0000的4MB地址空间,如果需要将虚拟地址0x8001_0000映射到物理地址0x0000_0000上,则需要修改虚拟地址0x____________________上的页表项:(填空)
答:C0200040
此题的问法相当于问虚拟地址0x8001_0000所在页的页表项在哪里。每4KB一页,则0x8001_0000所在的页是0x8001_0000 / 4K = 0x80010,第0x80010个页,每个页占用4B的页表项,则该页所在页表项在页表中的偏移是0x80010 * 4B = 0x200040,页表起始地址为0xc000_0000,则该页表项的地址为 0xc000_0000 + 0x200040 = 0xc020_0040。
10 以下关于x86架构的CPU,说法正确的是:(单选)
A. 系统引导时,应该首先开启分页寻址功能,再将CPU从实模式切换为保护模式
B. 进入保护模式后可以启用分页寻址功能,也可以禁用分页寻址功能
C. 进入保护模式后可以启用分段寻址功能,也可以禁用分段寻址功能
D. 开启分页寻址功能后,之前存储的数据都会丢失
答:B
x86架构下,系统引导的时候CPU采用实模式,从实模式且换保护模式后,分段功能是不可禁止,自动开启的,而分页功能是可以开启也可以禁止的,因此分页功能的开启是在切换至保护模式之后进行的,A、C错误,B正确。开启分页之后之前存储的数据是不会丢失的,D错误。
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)