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

本文介绍了Linux系统中的进程间通信方式——共享内存,包括如何通过ftok()获取ID,使用shmget()创建,shmat()映射,shmdt()解除映射以及shmctl()控制释放共享内存。共享内存是一种高效的IPC形式,允许多个进程共享同一块内存区域,实现数据的快速交换。
摘要由CSDN通过智能技术生成

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

   ------->双向通信

   ------->仅是一块内存,可以随意写入数据

   ------->无同步互斥

   ------->生命周期随内核

   -----共享内存是最快的IPC形式.共享内存的本质是物理内存,一旦这样的内存映射到共享它的进程的地址空间,这些空间不涉及内核.

进程是一个独立的资源管理单元,不同进程间的资源是独立的,不能在一个进程中访问另一个进程的用户空间和内存空间。但是,进程不是孤立的,不同进程之间需要信息的交互和状态的传递,因此需要进程间数据的传递、同步和异步的机制。   

当然,这些机制不能由哪一个进程进行直接管理,只能由操作系统来完成其管理和维护,Linux提供了大量的进程间通信机制,包括同一个主机下的不同进程和网络主机间的进程通信,如下图所示:


共享内存是进程间通信中最简单的方式之中的一个。

共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。

共享内存同意两个或很多其他进程訪问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。

当一个进程改变了这块地址中的内容的时候,其他进程都会察觉到这个更改

用ftok()函数获得一个ID号


应用说明,在IPC中,我们经经常使用用key_t的值来创建或者打开信号量,共享内存和消息队列。

key_t ftok(cons
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值