
Linux进程通信
文章平均质量分 80
WangMark
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
信号灯(posix实现,system V实现)
一. 信号灯简介信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下两种类型:二值信号灯:最简单的信号灯形式,信号灯的值只能取0或1,类似于互斥锁。 注:二值信号灯能够实现互斥锁的功能,但两者的关注内容不同。信转载 2014-07-29 10:23:58 · 1137 阅读 · 0 评论 -
深入理解Linux进程间通信(IPC)-- Posix信号灯
信号灯用来实现同步——用于多线程,多进程之间同步共享资源(临界资源)。信号灯分两种,一种是有名信号灯,一种是基于内存的信号灯。有名信号灯,是根据外部名字标识,通常指代文件系统中的某个文件。而基于内存的信号灯,它主要是把信号灯放入内存的,基于内存的信号灯,同步多线程时,可以放到该多线程所属进程空间里;如果是同步多进程,那就需要把信号灯放入到共享内存中(方便多个进程访问)。 有名信号灯和基于内存转载 2014-08-06 14:36:23 · 874 阅读 · 0 评论 -
Linux的进程/线程间通信方式总结
Linux系统中的进程间通信方式主要以下几种:同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程通信方式:包括信号量(Semaphore), 消息队列(Message Queue), 和共享内存(Shared Memory)网络主机间的进程通信方式转载 2014-07-29 10:21:57 · 1165 阅读 · 0 评论 -
深入理解Linux进程间通信(IPC)-- Posix共享内存
共享内存区是最快的可用IPC形式。它允许多个不相关的进程去访问同一部分逻辑内存。如果需要在两个运行中的进程之间传输数据,共享内存将是一种效率极高的解决方案。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传输就不再涉及内核。这样就可以减少系统调用时间,提高程序效率 共享内存是由IPC为一个进程创建的一个特殊的地址范围,它将出现在进程的地址空间中。其他进程可以把同一段共享内存转载 2014-08-06 14:50:27 · 653 阅读 · 0 评论 -
深入理解Linux进程间通信(IPC)-- Posix消息队列
消息队列可以认为是一个链表。进程(线程)可以往里写消息,也可以从里面取出消息。一个进程可以往某个消息队列里写消息,然后终止,另一个进程随时可以从消息队列里取走这些消息。这里也说明了,消息队列具有随内核的持续性,也就是系统不重启,消息队列永久存在。创建(并打开)、关闭、删除一个消息队列 1 #include 2 #include 3 #include //头文转载 2014-08-06 14:42:59 · 940 阅读 · 0 评论 -
深入理解Linux进程间通信(IPC)-- 管道pipe
1. 管道在本系列序中作者概述了linux 进程间通信的几种主要手段。其中管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。认清管道和有名管道的读写规则是在程序中应用它们的关键,本文在详细讨论了管道和有名管道的通信机制的基础上,用实例对其读写规则进行了程序验证,这样做有转载 2014-08-06 11:27:54 · 780 阅读 · 0 评论 -
深入理解Linux进程间通信(IPC)-- 套接口socket
8. 套接口简介: 在本专题的前面几个部分,如消息队列、信号灯、共享内存等,都是基于SysV的IPC机制进行讨论的,它们的应用局限在单一计算机内的进程间通信;基于BSD套接口不仅可以实现单机内的进程间通信,还可以实现不同计算机进程之间的通信。本文将主要介绍BSD套接口(sockets),以及基于套接口的重要而基本的API。一个套接口可以看作是进程间通信的端点(endpoint),每个套接口转载 2014-08-06 12:05:47 · 1438 阅读 · 0 评论 -
深入理解Linux进程间通信(IPC)-- 共享内存shared memory mmap
6. 共享内存(上)简介: 共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要转载 2014-08-06 12:04:08 · 3534 阅读 · 0 评论 -
深入理解Linux进程间通信(IPC)-- 信号灯semaphore
5. 信号灯简介: 信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。5.1. 信号灯概述信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同转载 2014-08-06 12:04:51 · 878 阅读 · 0 评论 -
深入理解Linux进程间通信(IPC)-- 消息队列msg
4. 消息队列简介:消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要求接受信号的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号转载 2014-08-06 12:00:49 · 7497 阅读 · 0 评论 -
深入理解Linux进程间通信(IPC)-- 信号signal
2. 信号(上)2.1. 信号及信号来源2.1.1 信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POS转载 2014-08-06 11:51:16 · 4696 阅读 · 0 评论 -
深入理解Linux进程间通信(IPC)-- FIFO
1.2. 有名管道概述及相关API应用1.2.1 有名管道相关的关键概念管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(named pipe或FIFO)提出后,该限制得到了克服。FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通转载 2014-08-06 11:51:07 · 835 阅读 · 0 评论 -
深入理解Linux进程间通信(IPC)-- 简介
linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket)的进程间转载 2014-08-06 11:25:41 · 692 阅读 · 0 评论 -
深入理解Linux进程间通信(IPC)-- 互斥锁和条件变量
互斥锁机制(Mutual exclusion,缩写为Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制。该目的通过将代码切片成一个一个的临界区域(critical section)达成。临界区域指的是一块对公共资源进行存取的代码,并非一种机制或是算法初始化: 在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前,转载 2014-08-06 14:45:31 · 1663 阅读 · 0 评论