进程间的通信--共享内存

本文介绍了Linux系统中两种常用的共享内存方式:System 5版本的shm和文件映射mmap。System 5 shm通过IPC通信实现进程间共享内存,而mmap则通过内存映射共享I/O,将文件或其他对象映射到内存。详细讲解了创建、挂接、控制共享内存以及使用mmap映射文件到内存的过程。
摘要由CSDN通过智能技术生成

目录

两种常用的共享内存方式

System 5版本的共享内存 shm

IPC通信System 5版本的共享内存 shm

文件映射mmap

 内存映射共享I/O

        原理:将一个文件或者其它对象映射进内存


两种常用的共享内存方式

System 5版本的共享内存 shm

1.多个进程直接共享内存

IPC通信System 5版本的共享内存 shm

        原理:利用共享内存完成进程间通信,两个进程都通过虚拟地址空间(可能相同)映射到用户页表,然后通过用户页表映射到内u才能物理的相同一块内存区域

1.ftok生成key描述符

key_t ftok(const char* pathname,int proj_id);

2.创建一个共享内存块,返回共享内存块的标识符shmid

int shmget(key_t key,size_t size,int shmflg)

size: 块的大小,为4k的整数倍

shmflg:IPC_CREAT创建新的共享内存,已存在使用IPC_EXCL

3.挂接共享内存(将进程地址空间挂接到物理空间,可以有多个挂接)

void* shmat(int shmid,const void* shmaddr,int shmflg)

shmid: 挂

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值