内存映射文件:操作系统向上层程序员提供的功能(系统调用)
- 进程可使用系统调用,请求操作系统将文件映射到进程的虚拟地址空间
- 以访问内存的方式读写文件
- 进程关闭文件时,操作系统负责将文件数据写回磁盘,并解除内存映射
- 多个进程可以映射同一个文件,方便共享
2.传统文件的访问方式
- open系统调用:打开文件
- seek系统调用:将读写指针移到某个位置
- read系统调用:从读写指针所指位置读入若干数据(从磁盘读入内存)
- write系统调用:将内存中的指定数据,写回磁盘(根据读写指针确定要写回什么位置)
3.内存映射文件的原理和作用
1.内存映射文件的访问方式:
- open系统调用:打开文件
- mmap系统调用:将文件映射到进程的虚拟地址空间
- 以访问内存的方式访问文件数据
- 文件数据的读入、写出由操作系统自动完成
- 进程关闭文件时,操作系统自动将文件被修改的数据写回磁盘
2.多个进程可以映射同一个文件,实现共享
在物理内存中,一个文件对应同一份数据,当一个进程修改文件数据时,另一个进程可以立马“看到”。
3.优点:
- 程序员编程更简单,已建立映射的文件,只需按访问内存的方式读写即可
- 文件数据的读入/写出完全由操作系统负责,I/O效率可以由操作系统负责优化(预读入,缓写出)