Linux的mmap文件内存映射机制是什么?linux mmap 内存被swap交换是不是就没有数据了?

1年前 (2023-09-02)阅读2回复1
xxhh
xxhh
  • 管理员
  • 注册排名4
  • 经验值539080
  • 级别管理员
  • 主题107816
  • 回复0
楼主
  1. Linux的mmap文件内存映射机制是什么?
  2. linux mmap 内存被swap交换是不是就没有数据了?

Linux的mmap文件内存映射机制是什么?

共享内存允许两个或多个进程共享一给定的存储区,因为数据不需要来回复制,所以是最快的一种进程间通信机制。共享内存可以通过mmap()映射普通文件(特殊情况下还可以采用匿名映射)机制实现,也可以通过系统V共享内存机制实现。应用接口和原理很简单,内部机制复杂。为了实现更安全通信,往往还与信号灯等同步机制共同使用。mmap的机制如:就是在磁盘上建立一个文件,每个进程存储器里面,单独开辟一个空间来进行映射。如果多进程的话,那么不会对实际的物理存储器(主存)消耗太大。 shm的机制:每个进程的共享内存都直接映射到实际物理存储器里面。

Linux的mmap文件内存映射机制是什么?linux mmap 内存被swap交换是不是就没有数据了?

1、mmap保存到实际硬盘,实际存储并没有反映到主存上。优点:储存量可以很大(多于主存);缺点:进程间读取和写入速度要比主存的要慢。

linux mmap 内存被swap交换是不是就没有数据了?

当Linux中的内存映射文件发生被交换(swapped)到磁盘的情况时,并不会丢失数据。使用mmap系统调用将文件映射到内存空间后,操作系统会将文件的内容缓存在内存中,以加快读取和写入操作。

如果发生内存压力,操作系统可能会将未被频繁访问的内存页交换到磁盘上的交换空间以释放内存。

0
回帖

Linux的mmap文件内存映射机制是什么?linux mmap 内存被swap交换是不是就没有数据了? 相关回复(1)

忆梦
忆梦
沙发
Linux的mmap机制实现文件内存映射,提高IO效率,使用swap交换时数据仍保留但位置可能变动。。
3周前 (08-17 06:28)回复00
取消