要说起操作系统存储器管理,少不了要谈下分⻚页存储管理,它把进程的虚拟地址空间和实际
的主存地址空间划分为同样⼤大⼩小的⻚页(1KB,2KB或者4KB),然后提供⼀一种从虚拟地址到实际物理
地址的翻译机制。另外,虚拟地址空间还把⼀一些表⽰示完整信息的⻚页划分为⼀一个段,且每个段都有⼀一
个权限要求。
如果⼀一个虚拟地址⽆无法找到对应的实际物理地址,CPU就会引发⼀一个缺⻚页中断,但是在这之
前,CPU必须知道这个地址是否合法,简单来说,CPU会把这个地址和虚拟地址空间的各个段⽐比
较,如果地址没有落在这些段⾥里,或者虽然在⼀一个段中,但是权限不够,就会产⽣生⼀一个Segment
Fault 异常;否则说明这是⼀一个合法地址,可以进⾏行⻚页⾯面调度。
第⼀一⾏行有⼀一个整数T,代表数据组数(T <= 1000)。
每组数据包含⼀一个整数n(1 <= n <= 100),代表段的数⺫⽬目。
接下来n⾏行,包含三个整数 start, end, prot,start是开始地址,
end是结束地址,prot是对应权限,保证段与段之间不相交
(即不会出现诸如[3,5], [5,7]之类的情况)。
最后⼀一⾏行包含⼀一个整数address,表⽰示需要验证的地址。
(0 <= start, end, address <= 2^31 - 1, 0 <= prot <= 1)
假设我们的程序对prot为1的段没有权限,所以⽆无法访问这些段。
对于每组数据,如果产⽣生了段错误,输出Segment Fault,否则输出Missing Page Interrupt。
3
3
0 3 1
4 5 0
6 8 1
7
1
0 3 1
2
2
0 0 0
1 3 0
2
Segment Fault
Segment Fault
Missing Page Interrupt