共享内存实现

进程间通信方式

  • 无名管道(pipe):用于具有父子关系的进程之间的通信
  • 有名管道(fifo):可用于非父子关系之间的进程
  • 信号量(semaphore):是一个计数器,可用于进程或线程的同步或互斥,常用作锁机制
  • 消息队列(message):是消息的链表,允许进程将格式化的数据流以消息队列形式发送给任意进程
  • 共享内存(shared memory):映射一段能够被其他进程所访问的内存,由一个进程创建,多个进程访问,是最快的IPC方式,不需要进行频繁的用户态内核态切换。但需要与其他机制,如信号量配合来实现进程间的同步

区别

管道,消息队列需要在内核和用户空间进行四次内存拷贝,共享内存只需要拷贝两次。一次是输入文件到共享内存区,另一次是从共此昂内存区到输出文件。

共享内存实现机制

  • POSIX 共享内存
  • XSI共享内存
  • mmap 共享内存

不同进程共享内存:同一块物理内存被映射到多个进程的进程地址空间。当前进程可以看到其他进程对于 shared memory数据的更新。但由于不同进程访问同一块空间,需要进行同步或互斥,一般使用互斥锁或信号量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值