第 30 题
关于内存映射文件,下列说法正确的是( )。
I. 可实现进程间通信
II. 实现了页面到磁盘块的映射
III. 将文件映射到进程的虚拟地址空间
IV. 将文件映射到系统的物理地址空间
A. I、III B. I、IV C. II、III D. I、II、III
[tag_link]
正确答案:A
本题考察 内存映射文件,现对选项进行逐一分析:
- I. 内存映射文件可以用于进程间通信,因为多个进程可以将同一个文件映射到各自的虚拟地址空间,从而共享数据。✅
- II. 这个选项比较有争议,按照大家的反馈,出题人想考查的应该是 磁盘块 → 页面的映射。❌
- III. 内存映射文件的核心概念就是将文件映射到进程的虚拟地址空间,使得进程可以通过访问内存来操作文件。✅
- IV. 内存映射文件是将文件映射到进程的虚拟地址空间,而不是直接映射到物理地址空间。虚拟地址空间最终会通过操作系统的内存管理单元(MMU)映射到物理地址空间。❌所以正确的是 I、III,选择 A。【注意】 严格来说,II 的描述是符合现代操作系统的实现的(比如 linux 中的
mmap接口中如果开启MAP_SHARED(共享映射),写入页面即写入磁盘,即 页面 和 磁盘块 是双向映射关系)。估计出卷人的意思是内存映射文件 语义 是 磁盘块 → 页面的映射,而不是 页面 → 磁盘块,所以 II 是错误的,从这种角度来看也说得通。要是考场上这种题真的错了那就认了吧,毕竟这种概念题有分歧在 408 是很正常的,但是数量也会比较少就是了。