2013年9月22日

<转>UNIX 共享内存应用中的问题及解决方法

摘要: http://www.ibm.com/developerworks/cn/aix/library/au-cn-sharemem/共享内存是一种非常重要且常用的进程间通信方式,相对于其它IPC机制,因其速度最快、效率最高,被广泛应用于各类软件产品及应用开发中。System V IPC 为UNIX平台上的共享内存应用制定了统一的API标准,从而为在UNIX/Linux平台上进行跨平台开发提供了极大的便利;开发人员基于一套基本相同的源代码,便可开发出同时支持AIX、Solaris、HP-UX、Linux等平台的产品。然而,各个平台对System V 标准的API在实现上各有差异,由此对相关应用开发带 阅读全文

posted @ 2013-09-22 16:57 净坛使者 阅读(373) 评论(0) 推荐(1) 编辑

<转>Linux 环境进程间通信(六)

摘要: http://www.ibm.com/developerworks/cn/linux/l-ipc/part6/一个套接口可以看作是进程间通信的端点(endpoint),每个套接口的名字都是唯一的(唯一的含义是不言而喻的),其他进程可以发现、连接并且与之通信。通信域用来说明套接口通信的协议,不同的通信域有不同的通信协议以及套接口的地址结构等等,因此,创建一个套接口时,要指明它的通信域。比较常见的是unix域套接口(采用套接口机制实现单机内的进程间通信)及网际通信域。1、背景知识linux目前的网络内核代码主要基于伯克利的BSD的unix实现,整个结构采用的是一种面向对象的分层机制。层与层之间有严 阅读全文

posted @ 2013-09-22 16:46 净坛使者 阅读(249) 评论(0) 推荐(1) 编辑

<转>Linux环境进程间通信(五): 共享内存(下)

摘要: http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index2.html系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。1、系统V共享内存原理进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间中去。系统V共享内存通过shmget获得或创建一个IPC共享内存区域, 阅读全文

posted @ 2013-09-22 16:45 净坛使者 阅读(240) 评论(0) 推荐(1) 编辑

<转>Linux环境进程间通信(五): 共享内存(上)

摘要: http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,这样,数据内容一直保存在共享内存中,并没有写回文件。共享内存中的内容 阅读全文

posted @ 2013-09-22 16:39 净坛使者 阅读(260) 评论(0) 推荐(1) 编辑

<转>Linux环境进程间通信--信号灯(四)

摘要: http://www.ibm.com/developerworks/cn/linux/l-ipc/part4/一、信号灯概述信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下两种类型:二值信号灯:最简单的信号灯形式,信号灯的值只能取0或1,类似于互斥锁。注:二值信号灯能够实现互斥锁的功能,但两者的关注内容不同。信号灯强调共享资源,只要共享资源可用,其他进程同样可以修改信号灯的值;互斥锁更强调进程,占用资源的进程使用完资源后,必须 阅读全文

posted @ 2013-09-22 16:28 净坛使者 阅读(507) 评论(0) 推荐(1) 编辑

<转>Linux环境进程间通信(三)

摘要: 原文链接:http://www.ibm.com/developerworks/cn/linux/l-ipc/part3/index.html原文内容:消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要求接受信号的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号所传递的信息是接近于随进程持续的概念(process 阅读全文

posted @ 2013-09-22 16:17 净坛使者 阅读(187) 评论(0) 推荐(1) 编辑

<转>Linux环境进程间通信(二): 信号(下)

摘要: 原文地址为:http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index2.html原文为:一、信号生命周期从信号发送到信号处理函数的执行完毕对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生;信号在进程中注册完毕;信号在进程中的注销完毕;信号处理函数执行完毕。相邻两个事件的时间间隔构成信号生命周期的一个阶段。下面阐述四个事件的实际意义:信号"诞生"。信号的诞生指的是触发信号的事件发生(如检测到硬件异常、定时器超时以及调用信号发送函 阅读全文

posted @ 2013-09-22 15:44 净坛使者 阅读(188) 评论(0) 推荐(1) 编辑

<转>Linux环境进程间通信(二): 信号(上)

摘要: 原文链接:http://www.ibm.com/developerworks/cn/linux/l-ipc/part2/index1.html原文如下:一、信号及信号来源信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功能外,还可以传递附加信息。信号来源信号事件的发生有两个 阅读全文

posted @ 2013-09-22 15:29 净坛使者 阅读(232) 评论(0) 推荐(1) 编辑

<转>linux进程间通信<一>

摘要: 这篇文章真心不错,只是代码比较久,有些地方需求大家自行修改。先全文转载,以备复习只用。原文链接为:http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/#b正文:1、 管道概述及相关API应用1.1 管道相关的关键概念管道是Linux支持的最初Unix IPC形式之一,具有以下特点:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程);单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单 阅读全文

posted @ 2013-09-22 14:19 净坛使者 阅读(323) 评论(0) 推荐(2) 编辑

导航