关键点在于: 内存映射不是操作系统提供的, 是 CPU 支持的!
操作系统只是提供相应的数据结构, 告诉 CPU 如何进行映射.
x86 体系的 CPU 可以使用分段和分页两种机制进行映射, 但是一般操作系统都使用分页来管理内存, 把所有内存分成一个段来跳过分段.
访问没有映射过的内存, CPU 会产生一个缺页异常, 操作系统像处理中断一样, 事先设置好这个异常处理的服务程序, 产生异常的时候 CPU 就会跳到异常处理程序里来执行.
然后操作系统可以选择是把没有的映射建立上, 让程序继续运行, 还是终止程序的运行.