Shared memory mmap()调用常规文件和mmap()调用POSIX共享内存文件之间有什么区别?
我想使用mmap()在进程之间共享内存。mmap()可以应用于常规文件或POSIX共享内存文件(shm_open)。但是有什么区别呢?区别当然不是磁盘是否被访问:Shared memory mmap()调用常规文件和mmap()调用POSIX共享内存文件之间有什么区别?,shared-memory,mmap,Shared Memory,Mmap,我想使用mmap()在进程之间共享内存。mmap()可以应用于常规文件或POSIX共享内存文件(shm_open)。但是有什么区别呢?区别当然不是磁盘是否被访问: 经常访问和最近访问的常规文件位于文件系统缓存/缓冲区中,因此它们的内容已经在内存中 即使将mmap()与shm_open()一起使用,当系统处于高内存压力下时,该内存区域也可能被调出 一个区别是,尽管共享内存可能会写入磁盘,但它永远不会永久写入磁盘。如果您创建了一个普通文件,那么它会在重新启动时持续存在。如果创建共享内存对象,则不会
- 经常访问和最近访问的常规文件位于文件系统缓存/缓冲区中,因此它们的内容已经在内存中
- 即使将mmap()与shm_open()一起使用,当系统处于高内存压力下时,该内存区域也可能被调出
实际上,这两个区别都是关于与文件系统的分离。文件和共享内存对象都是可以读写的字节包,但文件的不同之处在于它们被持久化在文件系统中。啊,对了,我完全忘记了在引导过程中持久化的事情。