
Linux 进程间通信
文章平均质量分 86
lcw_202
这个作者很懒,什么都没留下…
展开
-
Linux SystemV ipc 实现
<br />目录[隐藏]1用户进程间通信1.1System V IPC对象管理1.1.1System V IPC数据结构1.1.1.1(1)IPC对象属性结构kern_ipc_perm1.1.1.2(2)结构ipc_ids1.1.1.3(3)结构ipc_namespace1.1.2IPC对RCU的支持1.1.2.1(1)RCU前缀对象结构1.1.2.2(2)分配IPC对象时加入RCU前缀对象1.1.2.3(3)修改IPC对象引起延迟更新1.1.3IPC对象查找1.1.4释放IPC命名空间1.转载 2010-12-14 21:22:00 · 2979 阅读 · 0 评论 -
futex(2) 快速用户态互斥体使用简介
<br />这两天复习分布式系统,顺便看了一下 Linux 下的 futex(2) 同步机制。<br />简单来说,futex(2) 是一个新的同步机制,在作用方面与一般的 mutex 比较相似。使用 futex(2) 进行同步的两个执行体必须通过一段共享的内存空间关联起来——这段内存空间可以具有相同或者不同的进程中地址,只要它们映射到同一块核心中内存地址即可——因此,线程和进程(通过 sysvshm 关联)都可以利用 futex 进行同步。<br />futex(2) 支持两个操作,分转载 2011-05-26 10:23:00 · 1026 阅读 · 0 评论 -
linux 信号
信号及信号处理--Linux信号介绍 <br /> 字号:大 中 小 <br />转自【http://hi.baidu.com/monalisa88188/blog/item/ba04dd233f4a0aad4623e87a.html】<br /><br />信号(signal)是一种软件中断,它提供了一种处理异步事件的方法,也是进程间惟一的异步通信方式。在Linux系统中,根据POSIX标准扩展以后的信号机制,不权可以用来通知某进程发生了什么事件,还可以给进程传递数据。<br转载 2010-11-09 10:56:00 · 831 阅读 · 0 评论 -
信号概述(Unix && Linux)
<br />信号是 UNIX 中所使用的进程通信的一种古老方法。它是在软件层次上对中断机制的一种模拟,是一种异步通信方式。信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。它可以在任何时候发给某一进程,而无需知道该进程的状态。如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程恢复执行再传递给它为止;如果一个信号被进程设置为阻塞,则该信号传递被延迟,直到其阻塞被取消时传递给进程。<br />使用kill -l指令可以原创 2010-11-09 10:47:00 · 585 阅读 · 0 评论 -
信号处理嵌套问题
<br />现在我又三个进程 A B C <br /> 其中 A 进程设置了对 SIGUSR1 和 SIGUSR2 的处理: <br /> sigset(SIGUSR1, a1); <br /> sigset(SIGUSR2, a2); <br /><br /> 如果 B 进程首先向 A 进程发送了一个 SIGUSR1 ,A进程会进入a1()函数, <br />原创 2010-11-09 10:43:00 · 2019 阅读 · 0 评论 -
从kernel源代码的角度分析signal的错误用法和理解
<br />读这份文档之前,建议先浏览一下 《Unix Advanced Programming》里面的signal一章和下面这份出自IBM论坛的文章:进程间通信 信号(上) http://www-128.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html ,和 进程间通信 信号(下)http://www-128.ibm.com/developerworks/cn/linux/l-ipc/part2/index2.html转载 2010-11-08 17:39:00 · 1194 阅读 · 0 评论 -
Linux 环境进程间通信(六)
<br />一个套接口可以看作是进程间通信的端点(endpoint),每个套接口的名字都是唯一的(唯一的含义是不言而喻的),其他进程可以发现、连接并且与之通信。通信域用来说明套接口通信的协议,不同的通信域有不同的通信协议以及套接口的地址结构等等,因此,创建一个套接口时,要指明它的通信域。比较常见的是unix域套接口(采用套接口机制实现单机内的进程间通信)及网际通信域。<br />1、背景知识<br />linux目前的网络内核代码主要基于伯克利的BSD的unix实现,整个结构采用的是一种面向对象的分转载 2010-11-08 16:51:00 · 400 阅读 · 0 评论 -
Linux环境进程间通信(五): 共享内存(下)
<br />系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。<br />1、系统V共享内存原理<br />进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间中去。系统V共享内存通过shmget获得或创建一个IPC共享内存区域,转载 2010-11-08 16:50:00 · 441 阅读 · 0 评论 -
Linux环境进程间通信(五): 共享内存(上)
<br />采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,这样,数据内容一直保存在共享内存中,并没有写回文件。共享内存中的内容往往是在解除映射时才转载 2010-11-08 16:49:00 · 605 阅读 · 0 评论 -
Linux环境进程间通信(四)
<br />一、信号灯概述<br />信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下两种类型:二值信号灯:最简单的信号灯形式,信号灯的值只能取0或1,类似于互斥锁。 <br />注:二值信号灯能够实现互斥锁的功能,但两者的关注内容不同。信号灯强调共享资源,只要共享资源可用,其他进程同样可以修改信号灯的值;互斥转载 2010-11-08 16:47:00 · 465 阅读 · 0 评论 -
Linux环境进程间通信(三)
<br />消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要求接受信号的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号所传递的信息是接近于随进程持续的概念(process-persistent),见 附转载 2010-11-08 16:46:00 · 423 阅读 · 0 评论 -
Linux环境进程间通信(二): 信号(下)
<br />一、信号生命周期<br />从信号发送到信号处理函数的执行完毕<br />对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生;信号在进程中注册完毕;信号在进程中的注销完毕;信号处理函数执行完毕。相邻两个事件的时间间隔构成信号生命周期的一个阶段。<br /><br /><br />下面阐述四个事件的实际意义:信号"诞生"。信号的诞生指的是触发信号的事件发生(如检测到硬件异常、定时器超时以及调用信号发送函数kil转载 2010-11-08 16:44:00 · 603 阅读 · 0 评论 -
Linux环境进程间通信(二): 信号(上)
<br />一、信号及信号来源<br />信号本质<br />信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。<br />信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功能外,还可以传递附加信息。<br />信号来源<br />信号转载 2010-11-08 16:43:00 · 437 阅读 · 0 评论 -
Linux环境进程间通信(一)
<br />管道及有名管道郑彦兴 (mlinux@163.com)国防科大计算机学院郑彦兴,男,现攻读国防科大计算机学院网络方向博士学位。您可以通过电子邮件 mlinux@163.com和他联系。 <br />简介: 在本系列序中作者概述了 linux 进程间通信的几种主要手段。其中管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关转载 2010-11-08 16:41:00 · 464 阅读 · 0 评论 -
Linux 进程间通信 - 共享内存shmget方式(转)
共享内存区域是被多个进程共享的一部分物理内存。如果多个进程都把该内存区域映射到自己的虚拟地址空间,则这些进程就都可以直接访问该共享内存区域,从而可以通过该区域进行通信。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。这块共享虚拟内存的页面,出现在每一个共享该页面的进程的页表中。但是它不需要在所有进程的虚拟内存中都有相同转载 2013-01-06 11:07:50 · 924 阅读 · 0 评论