Linux进程间通信--笔记

进程是一个程序的一次执行,系统资源分配的最小单元。它一般运行在用户态,而处于用户态的不同进程之间是彼此隔离的,就像处于不同城市的人们,它们必须通过某种方式来进行通信,例如,人们现在广泛使用的手机等方式。本章就是讲述如何建立这些不同的通话方式,就像人们有多种通信方式一样.

l 管道通信。

l 信号通信。

l 信号量。

l 共享内存。

l 消息队列。

1.1 Linux下进程间通信概述

1.1.1 Linux继承了Unix,集合IPC(进程间通信)和BSD的优势

1、传统的Unix进程间通信方式
A) 无名管道(pipe)
B) 有名管道(fifo)
C) 信号(signal)

2、System V进程间对象(IPC方式)

      AT&T的贝尔实验室,对Unix早期的进程间通信进行了改进和扩充,形成了“system V IPC”,其通信进程主要局限在单个计算机内。

A) 共享内存(share memory)
B) 消息队列(message queue)
C) 信号灯(semaphore)

3、 套接字(socket)

      BSD(加州大学伯克利分校的伯克利软件发布中心),跳过了通信进程主要局限在单个计算机内的限制,形成了基于套接字(socket)的进程间通信机制

4、Posix进程间通信(IPC方式)
A) Posix共享内存(share memory)
B) Posix消息队列(message queue)
C) Posix信号灯(semaphore)

    Linux继承了上述所有的通信方式

 

1.1.2 Linux中使用较多的进程间通信方式

                                  

1、无名管道(Pipe)及有名管道(named pipe):
A) 无名管道可用于具有亲缘关系进程间的通信,
B) 有名管道,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。

2、信号(Signal):
A) 信号是在软件层次上对中断机制的一种模拟。
B) 它是比较复杂的通信方式,用于通知进程有某事件发生。
C) 一个进程收到一个信号与处理器收到一个中断请求效果上一样。

3、消息队列(Messge Queue):
A) 消息队列是消息的链接表
B) 包括Posix消息队列SystemV消息队列。
C) 它克服了前两种通信方式中信息量有限的缺点,
D) 具有写权限的进程可以按照一定的规则向消息队列中添加新消息;
E) 对消息队列有读权限的进程则可以从消息队列中读取消息。

4、共享内存(Shared memory):
A) 可以说这是最有效的进程间通信方式。
B) 它使得多个进程可以访问同一块内存空间,
C) 不同进程可以及时看到对方进程中对共享内存中数据的更新。
D) 这种通信方式需要依靠某种同步机制,如互斥锁和信号量等。

5、信号量(Semaphore):
A) 主要作为进程之间的同步和互斥手段。
B) 主要作为同一进程的不同线程之间的同步和互斥手段。

6、套接字(Socket):这是一种更为一般的进程间通信机制,它可用于网络中不同机器之间的进程间通信,应用非常广泛。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值