社区
C语言
帖子详情
进程间的通信方式?
yanzhu2006
2006-07-10 10:39:42
请教各位高手,进程间的通信方式有哪几种方式?进程间的函数调用算是进程间的通信方式吗?
...全文
12997
9
打赏
收藏
进程间的通信方式?
请教各位高手,进程间的通信方式有哪几种方式?进程间的函数调用算是进程间的通信方式吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
WingForce
2006-07-10
打赏
举报
回复
也不一定吧,要看"进程间函数调用"是怎么定义的
zez
2006-07-10
打赏
举报
回复
请教各位高手,进程间的通信方式有哪几种方式?进程间的函数调用算是进程间的通信方式吗?
看操作系统的书...
我记得的,共享内存,管道,消息,临界区,信号量 ..
进程间的函数调用算是进程间的通信方式吗?
你这个问题就是错的..
进程间根本不可能进行什么函数调用 !!!!!
powersuite
2006-07-10
打赏
举报
回复
学习
sankt
2006-07-10
打赏
举报
回复
还有就是socket通信
一些不是很”常见“的进程通信方式:
Internet通信 它让应用程序从Internet地址上载或下载文件
RPC:远程过程调用,很少使用,因其与UNIX的RPC不兼容.
串行/并行通信(Serial/Parallel Communication)
它允许应用程序通过串行或并行端口与其他的应用程序通信
COM/DCOM通过COM系统的代理存根方式进行进程间数据交换,但只能够表现在对接口函数的调用时传送数据,通过DCOM可以在不同主机间传送数据.
sankt
2006-07-10
打赏
举报
回复
3.4 进程通信
3.4.1共享内存
在相互通信的进程之间设有一个公共内存区,一组进程向该公内存中写,另一组进程从化共内存中读,通过这种方式实现两组进程间的信息交换。
这种通信模式需要解决两个问题:第一个问题是怎样提供共享内存;第二个是公共内存的互斥关系则是程序开发人员的责任。
3.4.2消息机制
消息机制是用于进程间通信的高级通信原语之一。进程在动身过程中,台能需要与其他的进程进行进程
交换,于是进程通过某种手段发出自己的消息或接收其他进程发来的消息。这种方式类似于人们通过邮局收发信件来实现交换信息的目的。至于通过什么手段收发消息,就像人们选择平信还是航空信一样,是一种具体的消息传递机制。
1、 消息缓冲通信
消息缓冲通信技术是由Hansen首先提出的,其基本思想是:根据”生产者-消费者”原理,利用内存中公用消息缓冲区实现进程之间的信息交换.
内存中开辟了若干消息缓冲区,用以存放消息.每当一个进程向另一个进程发送消息时,便申请一个消息缓冲区,并把已准备好的消息送到缓冲区,然后把该消息缓冲区插入到接收进程的消息队列中,最后通知接收进程.接收进程收到发送里程发来的通知后,从本进程的消息队列中摘下一消息缓冲区,取出所需的信息,然后把消息缓冲区不定期给系统.系统负责管理公用消息缓冲区以及消息的传递.
一个进程可以给若干个进程发送消息,反之,一个进程可以接收不同进程发来的消息.显然,进程中关于消息队列的操作是临界区.当发送进程正往接收进程的消息队列中添加一条消息时,接收进程不能同时从该消息队列中到出消息:反之也一样.
消息缓冲区通信机制包含以下列内容:
(1) 消息缓冲区,这是一个由以下几项组成的数据结构:
1、 消息长度
2、 消息正文
3、 发送者
4、 消息队列指针
(2)消息队列首指针m-q,一般保存在PCB中。
(1) 互斥信号量m-mutex,初值为1,用于互斥访问消息队列,在PCB中设置。
(2) 同步信号量m-syn,初值为0,用于消息计数,在PCB中设置。
(3) 发送消息原语send
(4) 接收消息原语receive(a)
图
2、信箱通信
为了实现进程间的通信,可以设立一个通信机构——信箱,以发送信件以及接收回答信件为进程间通信的基本方式。
当一个进程希望与另一进程通信时,就创建一个链接两个进程的信箱,发送进程把信件投入信箱,而接收进程可以在任何时刻取走信件。
一个信箱的结构可以由“信箱说明”和“信箱体”两部分组成。
在信箱说明中,一般有如下的数据结构:
可存信件数是在设立信箱时预先确定的,表明信箱的容量大小,
已有信件数指出信箱中已有的信件的数量
通过可存信件数和已有信件数就能判别信箱是否满和信箱中是否有信件。
可存信件的指针指示当前可存入一封信的位置。该指针的初始值为指向可存的第一封信的位置。
当存入一封信后,则应该修改已有信件数和可存信件的指针。相应的,若信箱中有信,则每次从中取出一封信,也应该修改已有信件数和可存信件的指针。
为了实现信箱通信,必须提供相应的原语,如创建信箱原语、撤消信箱原语、发送信件原语和接收信件原语等。
采用信箱通信的最大好处是,发送方和接收方不必直接建联系,没有处理时间上的限制。发送方可以在任何时间发信,接收方也可以在任何时间收信。
由于发送方和接收方都是独立工作的,如果发得快而收得慢,则信箱会溢出。相反,如果发得慢而收得快,则信箱会变空。因此,为避免信件丢失和错误的送出信件,一般而言通信应有如下的规则:
(1)若发送信件时信箱已满,则发送进程应被置等信箱状态,直到信箱有空时才被释放。
(2)若取信件时信箱中无信,则接收进程应被子置成等信件状态,直到有信件时才被释放。
3、 管道通信
管道通信首先出现在UNIX操作系统中。作为UNIX的一大特色,管道通信立即引起了人们的兴趣。由于管道通信的有效性,一些系统继UNIX之后相继引入了管道技术,管道通信是一种重要的通信方式。
所谓管道,就是连接在两个进程之间的一个打开的共享文件,专用于进程之间进行数据通信。发送进程可以源源不断地从管道一端写入数据流,每次写入的长度是可变的;接收进程在需要时可以从管道的另一端读出数据,读出单位长度也是可变的。显然,管道通信的基础是文件系统。
在对管道文件进行读写操作过程中,发送进程和接收进程要实施正确的同步和互斥,以确保通信的正确性。管道通信机制中的同步与互斥都由操作系统自动进行,对用户是透明的。
管道通信具有传送数据量大的优点,但通信速度较慢.
YFY
2006-07-10
打赏
举报
回复
我一般就用消息通讯,如果需要交换数据,那么用文件或数据库,当然要注意文件不要形成Race Condition
pappGG
2006-07-10
打赏
举报
回复
有大量数据交换用共享内存
事件通知就用消息
如果将来可能作分布式应用,干脆用socket好了
zhousqy
2006-07-10
打赏
举报
回复
还是看书吧,内容太多,讲不清楚
etboy327
2006-07-10
打赏
举报
回复
线程之间可以有函数调用。进程通信常用的有信号量和share memory,share memory是最快的。
Android专用驱动
Android专用驱动构成了Android运行时的基石。从技术上来讲,Android专用驱动也是整个Android系统的亮点,特别是Binder驱动。Binder是一种
进程
间
通信机制(IPC),它与传统的IPC机制对比,最大的特点是高效,因为通信数据在两个
进程
之
间
只需要执行一次拷贝即可。Binder在Android系统里面使用得非常广泛以及频繁。在涉及到比较大的通信数据时,Binder通常还结合另外一个驱动Ashmem来使用。Ashmem是一个共享内存驱动,它与传统的共享内存相比,最大的特点是它是通过文件描述符来描述的,并且可以动态地进行分块管理。动态分块管理的目的是可以将部分不再使用了的内存交回给系统,非常适合内存较小的移动设备使用。另外一个专用驱动Logger是一个日志驱动,它与传统的日志系统对比,特点是日志是记录在内核空
间
而非文件中,这样就可以提高日志的读写速度。这个PPT讲Logger、Binder和Ashmem三个Android专用驱动的实现原理。由于这三个驱动在Android源代码里面用得非常广泛和频繁,因此理解它们的实现原理,就可以掌握Android的精华。这对以后阅读Android系统的其它代码,也是非常有帮助的。
Linux
进程
间
通信的主要方式有哪些?
IPCIPC及网络编程管道
进程
间
通信概念管道的概念及分类管道的概念及特点管道的分类管道编程1 创建管道消息队列共享内存信号量Linux网络编程基本套接口编程 IPC及网络编程 管道 古老的
进程
间
通信机制。
进程
间
通信概念
进程
间
通信是在不同
进程
间
进行信息交换的机制。Linux
进程
间
通信机制主要包括管道、信号、消息队列、共享内存、信号量、套接口。 管道:管道可以划分为普通管道及命名管道。普通管道用于具有亲缘关系的
进程
(父子
进程
)
间
的通信,命名管道则在普通管道提供的功能基础上,通过给管道命名的方法,使管道变成
Linux系统编程第05期:
进程
间
通信
Linux系统提供了各种系统调用API用于
进程
之
间
的通信: 无名管道PIPE 命名管道FIFO 消息队列 共享内存 信号量 文件锁 信号signal....其中还包括system V和POSIX 两种接口标准,除此之外,Linux系统自身还扩展了自己的一套API接口用于
进程
间
通信,比如signalfd、timerfd、eventfd等。本视频教程为《Linux系统编程》第05期,本期课程将会带领大家学习Linux下将近15种
进程
间
通信IPC工具的使用,了解它们的通信机制、编程实例、使用场景、内核中的实现以及各自的优缺点。本课程会提供PDF版本的PPT课件和代码,学员购买课程后可到课程主页自行下载嵌入式自学路线指导图:------------------------------------------------------------------------------------------------------ 《嵌入式工程师自我修养》嵌入式自学系列教程 作者:王利涛------------------------------------------------------------------------------------------------------一线嵌入式工程师精心打造,嵌入式学习路线六步走: 第 1 步:Linux三剑客零基础玩转Linux+UbuntuGit零基础实战:Linux开发技能标配vim从入门到精通基础篇:零基础学习vim基本命令vim从入门到精通定制篇:使用插件打造嵌入式开发IDEmakefile工程实践基础篇:从零开始一步一步写项目的Makefilemakefile工程实践第2季:使用Autotools自动生成Makefile软件调试基础理论printf打印技巧Linux内核日志与打印使用QEMU搭建u-boot+Linux+NFS嵌入式开发环境第 2 步:C语言嵌入式Linux高级编程第1期:C语言进阶学习路线指南第2期:计算机架构与ARM汇编程序设计第3期:程序的编译、链接和运行原理第4期:堆栈内存管理第6期:数据存储与指针第7期:嵌入式数据结构与Linux内核的OOP思想第8期:C语言的模块化编程第9期:CPU和操作系统入门 搞内核驱动开发、光会C语言是不行的! 你还需要学习的有很多,包括:计算机体系架构、ARM汇编、程序的编译链接运行原理、CPU和操作系统原理、堆栈内存管理、指针、linux内核中的面向对象思想、嵌入式系统架构、C语言的模块化编程.....第 3 步:Linux系统编程第00期:Linux系统编程入门第01期:揭开文件系统的神秘面纱第02期:文件I/O编程实战第03期:I/O缓存与内存映射第04期:打通
进程
与终端的任督二脉第05期:
进程
间
通信-------------------we are here! 第 4 步:Linux内核编程 练乾坤大挪移,会不会九阳神功,是一道坎。搞驱动内核开发,懂不懂内核也是一道坎。第 5 步:嵌入式驱动开发 芯片原理、datasheet、硬件电路、调试手段、总线协议、内核机制、框架流程....第 6 步:项目实战 嵌入式、嵌入式人工智能、物联网、智能家居...
进程
间
通信有哪几种方式?
进程
间
通信的方法详解
进程
间
通信有哪几种方式?不同
进程
之
间
是会进行相互传播或交换信息的,很多伙伴都很好奇,各
进程
之
间
是通过什么介质进行通信的呢?今天小编就给大家科普下
进程
间
通信的方法。 前言:
进程
间
通信(IPC,Interprocess communication)是一组编程接口,让程序员能够协调不同的
进程
,使之能在一个操作系统里同时运行,并相互传递、交换信息。这使得一个程序能够在同一时
间
里处理许多用户的要求。因为即使只有一个用户发出要求,也可能导致一个操作系统中多个
进程
的运行,
进程
之
间
必须互相通话。IPC接口
Linux:带你理解
进程
间
通信--管道
管道
进程
间
通信管道匿名管道命名管道管道的特性匿名管道与命名管道的区别:
进程
间
通信
进程
间
通信(IPC)是什么? 操作系统为用户提供的几种
进程
间
的
通信方式
为什么操作系统要为用户提供
进程
间
通讯方式呢?
进程
间
因为每一个
进程
都有一个虚拟地址空
间
,在保证了
进程
独立性的同时,却使得
进程
间
无法直接通信。因此需要操作系统来提供
进程
间
通信方式
,并且因为通信场景不同,提供的方式也有多种 如何提供
进程
间
通信方式
? 给多个
进程
之
间
提供一个大家都能访问到的传播介质,并且操作系统在提供
进程
间
通信方式
的时候也根据通信
C语言
69,374
社区成员
243,079
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章