内存映射文件

1.内存映射文件的特性

内存映射文件:操作系统向上层程序员提供的功能(系统调用)

  • 进程可使用系统调用,请求操作系统将文件映射到进程的虚拟地址空间
  • 以访问内存的方式读写文件
  • 进程关闭文件时,操作系统负责将文件数据写回磁盘,并解除内存映射
  • 多个进程可以映射同一个文件,方便共享

2.传统文件的访问方式

  1. open系统调用:打开文件
  2. seek系统调用:将读写指针移到某个位置
  3. read系统调用:从读写指针所指位置读入若干数据(从磁盘读入内存)
  4. write系统调用:将内存中的指定数据,写回磁盘(根据读写指针确定要写回什么位置)

3.内存映射文件的原理和作用

1.内存映射文件的访问方式:

内存映射文件_第1张图片

  1. open系统调用:打开文件
  2. mmap系统调用:将文件映射到进程的虚拟地址空间
  3. 以访问内存的方式访问文件数据
  4. 文件数据的读入、写出由操作系统自动完成
  5. 进程关闭文件时,操作系统自动将文件被修改的数据写回磁盘

2.多个进程可以映射同一个文件,实现共享

在物理内存中,一个文件对应同一份数据,当一个进程修改文件数据时,另一个进程可以立马“看到”。

内存映射文件_第2张图片

3.优点:

  • 程序员编程更简单,已建立映射的文件,只需按访问内存的方式读写即可
  • 文件数据的读入/写出完全由操作系统负责,I/O效率可以由操作系统负责优化(预读入,缓写出)

你可能感兴趣的:(操作系统,linux,运维,服务器)