System V IPC 共享内存

共享内存是最快的进程间通信方式,一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说,进程不再通过执行进入内核的系统调用来传递彼此的数据。
引用进程的“虚拟”地址空间中“C/C++ 程序虚拟地址空间”图,其中的共享区就包含共享内存、内存映射和共享库(动态库)
在这里插入图片描述

/usr/include/linux/shm.h

struct shmid_ds {
  struct ipc_perm    shm_perm;    /* operation perms */
  int                shm_segsz;   /* size of segment (bytes) */
  __kernel_time_t    shm_atime;   /* last attach time */
  __kernel_time_t    shm_dtime;   /* last detach time */
  __kernel_time_t    shm_ctime;   /* last change time */
  __kernel_ipc_pid_t shm_cpid;    /* pid of creator */
  __kernel_ipc_pid_t shm_lpid;    /* pid of last operator */
  unsigned short     shm_nattch;  /* no. of current attaches */
  unsigned short     shm_unused;  /* compatibility */
  void              *shm_unused2; /* ditto - used by DIPC */
  void              *shm_unused3; /* unused */
};

描述共享内存的结构体
功能:在物理内存中开辟一块共享内存空间/打开共享内存
#include <sys/shm.h>
int shmget(key_t key, size_t size, int shmflg);
参数:
返回值:

/* ################################################################ */

功能:将共享内存通过页表映射到进程的虚拟地址空间
#include <sys/shm.h>
void *shmat(int shmid, const void *shmaddr, int shmflg);
参数:
返回值:

/* ################################################################ */

功能:解除共享内存和进程的虚拟地址空间的映射关系
#include <sys/shm.h>
int shmdt(const void *shmaddr);
参数:
返回值:

/* ################################################################ */

功能:共享内存的控制函数
#include <sys/shm.h>
int shmctl(int shmid, int cmd, struct shmid_ds *buf);
参数:
返回值:
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值