进程间通信_01概述

先了解一些词汇

进程间通信:interprocess communication 简称IPC

可移植操作系统接口:Portable Operating System Interface  简称POSIX (X 表明其对Unix API的传承)

采用IPC的目的是什么?

1
数据传输
,一个进程需要传输一定量的数据给另一个进程。(如 消息队列  管道  socket)

2
资源共享
,几个进程同步访问同一块内存区域。       (如 共享信号量/互斥量内存  等)

3
通知事件
,知会某一事件的发生。       (如 信号)

目前有哪些IPC?

最初的UNIX IPC包括:    无名管道、命名管道、信号。

System V IPC包括:        System V消息队列、System V信号量、System V共享内存。

POSIX IPC包括:             posix消息队列、posix 信号量、posix共享内存。

这些IPC怎么发展的,用哪个?

 
      

linux的进程间通信都是继承自UNIX进程间通信。

最初的Unix IPC比较简单,主要就两种:管道 和 信号。

后来,AT&T贝尔实验室 和 BSD(加州大学伯克利分校)从不用的方向对进程间通信进行了扩充。

其中,BSD    重视跨主机的IPC,发展出"socket IPC"(socket也可在单机通信)

AT&T 关注单个计算机的IPC,发展出"System V IPC" 主要包括三种:消息队列、信号量、共享内存

再后来,因为UNIX衍生出了很多版本,IEEE决定开发一个独立的通用的标准,这个就是POSIX IPC。主要也是包含三种:消息队列、信号量、共享内存。

System V IPC 和 POSIX IPC类似,但目前比较主流的开发采用 POSIX IPC,语法简单,相对跨平台。

先简单介绍下

无名管道

内存中的一块临时存储区,由进程创建但独立于进程的内存区,采用先进先出的原则,用于父子进程之间单向传输数据。

命名管道

和无名管道类似,但其他进程只要知道管道的名称就可以访问。

信号

在特定情况下产生的信号,用于进程中断控制,不能进行信息交换。

消息队列

内存中的一块存储区,任何进程在特定的权限下都可以访问,用于在进程之间实现数据交互。

共享内存

主存中的一块存储区,任何进程在特定的权限下都可以访问,用于在进程之间实现数据共享。

信号量

同步机制,当几个进程都要访问共享内存/消息队列的时候,保证一个时刻内只有一个进程访问。

详细介绍,待续。。。

时间: 2024-10-12 13:10:36

进程间通信_01概述的相关文章

Java基础学习_01 概述及环境配置

一.概述 1.Java语言平台版本 1.1J2SE(Java 2 Platform Standard Edition)标准版 为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发. 1.2.J2ME(Java 2 Platform Micro Edition)小型版 为开发电子消费产品和嵌入式设备提供的解决方案. 1.3.J2EE(Java 2 Platform Enterprise Edition)企业版 为开发企业环境下的应用程序提供的一套解

进程间通信的概述2

---恢复内容开始--- 1.进程.线程与信息共享 (1)多个进程共享存留于文件系统中某个文件上的某些信息.为了访问文件系统的信息,必须穿越内核(如read.write.lseek等).当文件更新时,既可以保护多个写入者,防止相互干扰,也可保护多个读出者,防止写入者的干扰. (2)多个进程共享于内核中的某些信息,System V消息队列 和System V信号量也是.只要访问共享信息的每次操作涉及对内核的一次系统调用. (3)多个进程都能用于双方访问共享内存区.进程之间一旦分配好共享的内存区,就

Linux环境编制之IPC进程间通信(一):IPC概述

进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区.但是,系统空间却是"公共场所",所以内核显然可以提供这样的条件.除此以外,那就是双方都可以访问的外设了.在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过"注册表"或其它数据库中的某些表项和记录交换信息.广义上这也是进程间通信的手段,但是一般都不把这算作"进程间通信&

一起talk C栗子吧(第八十七回:C语言实例--使用管道进行进程间通信概述)

各位看官们,大家好.上一回中咱们说的是进程间通信的样例.这一回咱们说的样例是:使用管道进行进程间通信. 闲话休提,言归正转. 让我们一起talk C栗子吧! 我们在前面的的章回中介绍了使用管道进行进程问的通信,时间不长,相信大家还记得.今天.我们介绍第二种进程间通信的方式:管道.大家都知道,我们使用信号在进程间通信时,本质上发送的是一个数值,假设想在进程之间发送一些数据时信号就无能为力了.此时,管道就派上了用场. 我们能够通过管道在进程之间发送数据. 接下来我们就具体介绍一下管道. 管道相似我们

进程间通信概述

进程是一个独立的资源分配单元,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源(例如打开的文件描述符). 但是,进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信( IPC:Inter Processes Communication ). 进程间通信的目的: 数据传输:一个进程需要将它的数据发送给另一个进程. 通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要

Unix/Linux进程间通信(IPC) -- 概述

序 Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的.而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同.前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内:后者则跳过了该限制,形成了基于套接口(socket)的进程间通信机制.Linux则把两者继承了下来,如图示: 其中,最初Unix IPC包括:管道.FIFO

linux进程间通信-概述

一 进程间通信有如下的目的: 1.数据传输,一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M之间:2.共享数据,多个进程想要操作共享数据,一个进程对数据的修改,其他进程应该立刻看到:3.通知事件,一个进程需要向另一个或一组进程发送消息,通知它们发生了某件事情:4.资源共享,多个进程之间共享同样的资源.为了做到这一点,需要内核提供锁和同步机制:5.进程控制,有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知

阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_01 File类_1_File类的概述

原文地址:https://www.cnblogs.com/wangjunwei/p/11262885.html

Linux系统编程——进程间通信:共享内存

概述 共享内存是进程间通信中最简单的方式之一.共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针.当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改. 共享内存的特点: 1)共享内存是进程间共享数据的一种最快的方法. 一个进程向共享的内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容. 2)使用共享内存要注意的是多个进程之间对一个给定存储区访问的互斥. 若一个进程正在向共享内存区写数据,则在它做