进程通信

进程通信是指进程之间的信息交换

交换的信息量:一个状态或数值,上千个字节。

进程通信的分类

1)低级通信:进程的互斥和同步 2)高级通信:

指用户可直接利用OS提供的一组通信命令,高效地传送大量数据的一种通信方式。对用户透明。

高级通信分类

共享存储器系统

消息传递系统

管道通信

共享存储器系统

(1)共享数据结构的通信方式

进程之间通过某种数据结构,如缓冲池进行通信属于低级通信方式。

(2)共享存储区通信方式

为了传送大量信息,在存储器中划出一块共享存储区,进程可通过对共享存储区进行读或写来实现通信,属于高级通信方式。

消息传递系统

消息交换的单位是消息或报文,分两种:

(1)直接通信方式

(2)间接通信方式

计算机网络中将消息称为报文。

直接通信方式

发送进程直接把消息发送给目标进程

发送进程和接收进程都以显式方式分别提供对方的标识符

系统提供两条通信原语

Send(Receiver,message);

Receive(Sender,message);

例如:

Send(P2,m1);

Receive(P1,m1);

解决生产者——消费者问题

repeat ...

produce an item in nextp;

...

Send(consumer,nextp);

until false;

repeat

Receive(producer,nextp);

...

Consumer the item in nextc;

until false;

间接通信方式

进程之间的通信需要通过某种中间实体,该实体用来暂存发送进程发送给目标进程的消息;接收进程则从该实体中取出对方发送给自己的消息。

这种中间实体称为信箱

消息在信箱中可以安全的保存,只允许核准的目标用户随时读取,故可实现非实时通信。

信箱的创建和撤销

进程用信箱创建原语来建立一个新信箱。创建者进程应给出信箱名字、信箱属性(公用、使用或共享);对于共享信箱,还应给出共享者的名字。

用信箱撤销原语来撤销

消息的发生于接收

Send(mailbox,message),将一个消息发送到指定信箱

Reveieve(mailbox,message),从指定信箱中接收一个消息

信箱分类

私用信箱

公用信箱

共享信箱

私用信箱

用户进程建立,作为该进程的一部分

拥有者有权读消息,其他用户只能发送

采用单向通信链路

进程结束时信箱也消失

公用信箱

由OS创建

提供给系统中的所有核准进程使用

进程既发送也可取出

采用双向通信链路的信息来实现

系统运行期间始终存在

共享信箱

由某进程创建,创建时提供共享进程(用户)的名字

信息的拥有者和共享者,都有权从信箱中取走发送给自己的消息

信息通信时发送进程和接收进程的关系

一对一关系。建立一条专用的通信链路

多对一关系。服务进程与多个用户进程之间进行交互,又称客户|服务器交互

一对多关系。一个发送进程与多个接收进程进行交互,使发送进程可用广播形式,向接收者发送消息。

多对多关系。建立一个公用信箱,多个进程投递并取走自己的消息

管道通信

管道通信方式建立在文件系统(文件系统位于外存)的基础上,利用共享文件来连接两个相互通信的进程,此共享文件称为管道(Pipe)

管道是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件。

管道通信必需的协调能力

(1)互斥。当一个进程正在对管道进行读/写操作时,另一进程必须等待。

(2)同步。当写(输入)进程把一定量的数据(如4K)写入管道后,便去睡眠等待,直到读(输出)进程取走数据后再把他唤醒。当读进程发现管道空时,也应睡眠等待,直至写进程将消息写入管道后,才将它唤醒。

(3)判别对方是否存在,只有确定了对方存在时方能进行通信。

java8通讯_8.进程通信相关推荐

  1. linux 进程通信比较,浅析Linux进程通信的几种方式及其比较

    摘要:本文通过对Linux下几种主要通信方式进行概述,并结合Linux系统的系统调用对OS中的实现进行简要概述,并对其优缺点进行分析,阐述了在不同通信情况下应该选择何种通信方式进行选择. 关键词:Li ...

  2. Linux进程通信的四种方式——共享内存、信号量、无名管道、消息队列|实验、代码、分析、总结

    Linux进程通信的四种方式--共享内存.信号量.无名管道.消息队列|实验.代码.分析.总结 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须 ...

  3. Unix domain socket 简介(进程间通信,进程通信)

    Unix domain socket 又叫 IPC(inter-process communication 进程间通信) socket,用于实现同一主机上的进程间通信.socket 原本是为网络通讯设 ...

  4. linux进程管道通信缺点,Linux进程通信(IPC)的方式详解

    前言:Linux进程通信的方式 什么是进程通信?进程通信是指进程之间交换信息 进程通信方式共有6种: 管道(pipe),包括流管道(s_pipe)和有名管道(named pipe) 信号(signal ...

  5. ARM环境中的c语言socket进程通信-转

    近由于需要弄一些android底层的进程间通讯的东西,所以重温了一下linux的进程通信知识. 进程间通信有很多种方法,使用socket只是其中的一种方法,使用socket的好处呢,就是通用,代码可以 ...

  6. Python之路 34:并发与并行、锁(GIL、同步锁、死锁与递归锁)、信号量、线程队列、生消模型、进程(基础使用、进程通信、进程池、回调函数)、协程

    内容: 同步锁 死锁.递归锁 信号量和同步对象(暂时了解即可) 队列------生产者和消费者模型 进程(基础使用.进程通信.进程池.回调函数) 协程 一.并发并行与同步异步的概念 1.1.并发和并行 ...

  7. 2020 操作系统 实验二 进程通信

    实验二.进程通信 一.实验名称 进程通信 二.实验目的 掌握用邮箱方式进行进程通信的方法,并通过设计实现简单邮箱理解进程通信中的同步问题以及解决该问题的方法. 三.实验原理 邮箱机制类似于日常使用的信 ...

  8. Linux 内核、进程调度、进程通信、多线程、协程

    Linux内核 操作系统是什么 内核是什么 从功能层面上来说,内核就是一个中间层,软件和硬件之间交互的中间层,链接层 从其他方面理解内核 系统调用,开放了很多接口:资源管理 内核实现的策略 宏内核 微 ...

  9. 线程通信和进程通信区别(线程进程区别)

    前言: 腾讯笔试中多道选择题考到这个问题,这里总结一下.学习Java的童鞋可能对于线程的理解要比学php好很多.本文参考于线程通信与进程通信的区别 . 进程和线程的区别: 对于进程来说,子进程是父进程 ...

最新文章

  1. oracle主目录修改,ORACLE主目录权限被修改,恢复ORACLE_HOME或GI_HOME权限、属主
  2. java b2b b2c o2o分布式电子商务云平台
  3. Linux Kernel TCP/IP Stack — Socket Layer — TCP/UDP Socket 网络编程
  4. SMTP Error: Could not connect to SMTP host
  5. mpvue中使用小程序云开发总结
  6. 10.28T5 tarjan+dfs
  7. swift中没有selectall的解决
  8. [转载] numpy.bincount介绍以及巧妙计算分类结果中每一类预测正确的个数
  9. Python 基础课程第八天
  10. MAC电脑新手入门指南
  11. 生产环境CPU飙升排查
  12. 计算机键盘按键错乱,笔记本键盘按键错乱怎么办 解决笔记本电脑个别按键功能错乱...
  13. 怎样才能画好古代汉服?画好古代汉服有哪些技巧?
  14. java满天星星代码_java实现满天星swingawt
  15. python 路由_静态路由配置
  16. 并发编程:我对Java并发编程的总结和思考
  17. 【oracle】配置恢复管理器Configuring Recovery Manager
  18. PHP 一句话木马 @eval($_POST[‘hack‘]); 语句解析及靶机演示
  19. EAN-13 编码原理
  20. 大学课程 | 《计算机操作系统》详细知识点总结

热门文章

  1. vue路由第三篇-导航守卫、路由元信息、动态路由
  2. html标签栏logo怎么加,在htmltitle/title标签添加图标,网页title左边显示网页的logo图标...
  3. Android 4.4 Kit Kat 源码下载
  4. 关于保险的基础知识总结
  5. Activiti 流程部署方式 activi 动态部署(高级源码篇)
  6. S3DIS数据集学习笔记
  7. Linux系统目录简单说明
  8. oracle商品当日销售排行,Oracle零售 (Retek)品类管理.ppt
  9. 腾讯云TVP大佬十年心血MySQL工作笔记,看完还不懂MySQL来打我!
  10. 水果销售系统功能设计