Linux进程间通信(一) 进程间通信概述及其种类

为什么会有进程间通信?

我们应该都知道了,进程是一个程序的一次执行,是系统资源分配的最 小单元。这里所说的进程一般是指运行在用户态的进程,而由于处于用户态的不同进程间是彼此隔离的,但是 它们很可能需要相互发送一些信息,好让对方知道自己的进度等情况,像这样进程间传递信息就叫进程间通信 。

进程间通信方式有几种?

就像处于不同城市的人之间的通信方式有手机、电脑等方式一样, 进程间通信的方式有几种,就用下面的图来表示把,这样直观,并且我一直相信这时一个知识点,必须记下来 !

管道(Pipe)及有名管道(Named Pipe): 管道可用于具有"血缘"关系进程间(也就是父子进程或者兄弟进程)的通信。有名管道除具 有管道所具有的功能外,还允许无"血缘"关系进程间的通信。

信号(Signal): 信号是在软 件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生。应该学过ARM或单 片机中断吧,其实一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一样的(注意是效果噢! )。

信号量(Semaphore): 主要作为进程之间及同一进程的不同线程之间的同步和互斥手段。猛一看, 可能会和信号混淆,但是它们最起码英语表示就不同吧,我当时也是分不清他两个,不过没关系,不懂同步和 互斥也没事,以后会详细的讲,先知道有这回事就行了。

共享内存(Shared Memory): 可以说这是最有 效的进程间通信方式。它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内 存中数据的更新。这种通信方式需要依靠某种同步机制,如互此锁和信号量等。

消息队列(Messge Queue): 消息队列是消息的链表,包括 Posix 消息队列和 System V 消息队列。它克服了前两种通信方式中 信息量有限的缺点,具有写权限的进程可以按照一定的规则向消息队列中添加消息;对消息队列具有读权限的 进程则可以从消息队列中读取消息。

套接字(Socket): 这个绝对是一种更为一般的进程间通信机制, 它可用于网络中不同机器之间的进程间通信,应用那是相当的广泛啊。

我不想多写了,我感觉学Linux 进程间通信,先宏观上认识它就行,先知道这两个问题,再逐个击破吧!

时间: 2024-08-01 18:01:07

Linux进程间通信(一) 进程间通信概述及其种类的相关文章

《嵌入式 Linux C 语言应用程序设计(修订版)》——第 2 章 嵌入式Linux C语言开发工具 2.1 嵌入式Linux下C语言概述

第 2 章 嵌入式Linux C语言开发工具 本章目标 任何应用程序的开发都离不开编辑器.编译器及调试器,嵌入式Linux的C语言开发也一样,它也有一套优秀的编辑.编译及调试工具. 掌握这些工具的使用是至关重要的,它直接影响到程序开发的效率.因此,希望读者能自己动手操作,切实熟练掌握这些工具的使用.通过本章的学习,读者将会掌握如下内容: 2.1 嵌入式Linux下C语言概述 读者在第一章中已经了解了嵌入式开发的基本流程,在嵌入式系统中应用程序的主体是在宿主机中开发完成的,就嵌入式Linux而言,

《嵌入式 Linux C 语言应用程序设计(修订版)》——2.1 嵌入式Linux下C语言概述

2.1 嵌入式Linux下C语言概述 嵌入式 Linux C 语言应用程序设计(修订版) 读者在第一章中已经了解了嵌入式开发的基本流程,在嵌入式系统中应用程序的主体是在宿主机中开发完成的,就嵌入式Linux而言,此过程则一般是在安装有Linux的宿主机中完成. 在本章中介绍的实际是嵌入式Linux下C语言的开发工具,用户在开发时往往是在Linux宿主机中对程序进行调试,然后再进行交叉编译的. 2.1.1 C语言简史 C语言于20世纪70年代诞生于美国的贝尔实验室.在此之前,人们编写系统软件主要是

《嵌入式 Linux C 语言应用程序设计(修订版)》一第2章 嵌入式Linux C语言开发工具2.1 嵌入式Linux下C语言概述

第 2 章 嵌入式Linux C语言开发工具 嵌入式 Linux C 语言应用程序设计(修订版)本章目标 任何应用程序的开发都离不开编辑器.编译器及调试器,嵌入式Linux的C语言开发也一样,它也有一套优秀的编辑.编译及调试工具. 掌握这些工具的使用是至关重要的,它直接影响到程序开发的效率.因此,希望读者能自己动手操作,切实熟练掌握这些工具的使用.通过本章的学习,读者将会掌握如下内容: anniuC语言的产生历史背景 anniu嵌入式Linux下C语言的开发环境 anniu嵌入式Linux下的编

Linux的内存机制概述

一.内存使用说明 Free 命令相对于top 提供了更简洁的查看系统内存使用情况: [root@rac1 ~]# free total       used       free     shared    buffers     cached Mem:       1035108   1008984      26124      0     124212     413000 -/+ buffers/cache:        471772      563336 Swap:       2

Linux的内存管理概述

在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然.这是Linux内存管理的一个优秀特性,在这方面,区别于 Windows的内存管理.主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能.而Windows 是只在需要内存时,才为应用程序分配内存,并不能充分利用大容量的内存空间.换句话说,每增加一些物理内存,Linux 都将能充分利用起来,发挥了硬件投

编写Linux操作系统设备驱动程序概述

1.1 Linux设备驱动程序分类 Linux设备驱动程序在Linux的内核源代码中占有很大的比例,源代码的长度日益增加, 主要是驱动程序的增加.在Linux内核的不断升级过程中,驱动程序的结构还是相对稳定.在2.0.xx到2.2.xx的变动里,驱动程序的编写做了一些改变,但是从2.0.xx的驱动到 2.2.xx的移植只需做少量的工作.Linux系统的设备分为字符设备(char device),块设备(block device)和网络设备(net work device)三种.字符设备是指存取时

Linux进程管理机制概述

一 .进程的概念和分类 1.进程的概念 Linux是一个多用户多任务的操作系统.多用户是指多个用户可以在同一时间使用同一个linux系统:多任务是指在Linux下可以同时执行多个任务,更详细的说,linux采用了分时管理的方法,所有的任务都放在一个队列中,操作系统根据每个任务的优先级为每个任务分配合适的时间片,每个时间片很短,用户根本感觉不到是多个任务在运行,从而使所有的任务共同分享系统资源,因此linux可以在一个任务还未执行完时,暂时挂起此任务,又去执行另一个任务,过一段时间以后再回来处理这

Linux进程间通信的几种方式总结--linux内核剖析(七)

进程间通信概述 进程通信的目的 数据传输 一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间 共享数据 多个进程想要操作共享数据,一个进程对共享数据 通知事 一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程). 资源共享 多个进程之间共享同样的资源.为了作到这一点,需要内核提供锁和同步机制. 进程控制 有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道

练习--LINUX进程间通信之无名管道PIPE

IBM上放的这个系统不错,刚好可以系统回温一下LINUX的系统知识. http://www.ibm.com/developerworks/cn/linux/l-ipc/part1/ 感觉年纪大了,前几年看的LINUX内核和系统的东东,忘了很多,要慢慢转化成永久记忆才可以. 今天,又拿起<LINUX内核设计与实现>,慢慢啃下去. ~~~~~~~~~~~~~~ 进程通信有如下一些目的:A.数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B.共享数据:多个进程想