作家
登录

浅析Linux的共享内存与tmpfs文件系统

作者: 来源: 2017-08-14 15:02:46 阅读 我要评论

媒介

共享内存重要用于过程间通信,Linux有两种共享内存(Shared Memory)机制:

  1. # echo 68157440 > /proc/sys/kernel/shmmax# cat /proc/sys/kernel/shmmax 
  2.  
  3. 68157440# ipcmk -M 68157440 
  4.  
  5. Shared memory id: 0# ipcs -m 
  6.  
  7. ------ Shared Memory Segments -------- 
  8.  
  9. key shmid owner perms bytes nattch status 
  10.  
  11. 0xef46b249 0 root 644 68157440 0 

(1) ** System V shared memory(shmget/shmat/shmdt) **

Original shared memory mechanism, still widely used Sharing between unrelated processes.

(2) ** POSIX shared memory(shm_open/shm_unlink) **

Sharing between unrelated processes, without overhead of filesystem I/O Intended to be simpler and better than older APIs.

别的,在Linux中不得不提一下内存映射(也可用于过程间通信):

** Shared mappings – mmap(2) **

l Shared anonymous mappings:Sharing between related processes>

  • # mount -size=64M -o remount /dev/shm# df -lh 
  •  
  • Filesystem Size Used Avail Use% Mounted on 
  •  
  • tmpfs 64M 0 64M 0% /dev/shm 
  • SYSV共享内存的最大年夜大年夜小为32M:

    1. # cat /proc/sys/kernel/shmmax 
    2.  
    3. 33554432 
    1. # ipcmk -M 68157440 
    2.  
    3. ipcmk: create share memory failed: Invalid argument 

    这是正常的。

    (2)将shmmax调剂为65M

    可以看到system v共享内存的大年夜小并不受/dev/shm的影响。

    (3)创建POSIX共享内存

    点击(此处)折叠或打开

    1.     /*gcc -o shmopen shmopen.c -lrt*/#include <unistd.h> 
    2.  
    3.     #include <fcntl.h> 
    4.  
    5.     #include <sys/stat.h> 
    6.  
    7.     #include <sys/types.h> 
    8.  
    9.     #include <sys/mman.h> 
    10.  
    11.     #include <stdio.h> 
    12.  
    13.     #include <stdlib.h> 
    14.  
    15.     #define MAP_SIZE 68157440 
    16.  
    17.     int main(int argc, char *argv[]) 
    18.  
    19.     { 
    20.  
    21.         int fd; 
    22.  
    23.         void* result; 
    24.  
    25.         fd = shm_open("/shm1", O_RDWR|O_CREAT, 0644); 
       1/7    1 2 3 4 5 6 下一页 尾页

        推荐阅读

        Windows 7系统U盘插入后假死怎么处理?

      Win7体系U盘插入后假逝世怎么处理?有效户表示,在Win7体系下,U盘插入后体系会出现假逝世的问题,一般十几秒钟就恢复正常了,固然对操作体系毫无影响,我们却不想存在任何假设的病毒存在,>>>详细阅读


      本文标题:浅析Linux的共享内存与tmpfs文件系统

      地址:http://www.17bianji.com/lsqh/36688.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)