首页 > 系统相关 >进程通信

进程通信

时间:2024-11-07 16:20:34浏览次数:1  
标签:存储 操作系统 通信 管道 进程 共享

进程通信

进程间通信 Inter-Process Communication (IPC)

image

前置:进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间。因此进程通信需要操作系统支持。


一、共享存储

image

为避免出错,各个进程对共享空间的访问应该是互斥的。

各个进程可使用操作系统内核提供的同步互斥工具(如 P、V操作)

(一)基于存储区的共享

速度很快,是一种高级通信方式。操作系统在内存中划出一块共享存储区,数据的形式、存放位置都由通信进程控制,而不是操作系统。

(二)基于数据结构的共享

速度慢、限制多,是一种低级通信方式。比如共享空间里只能放一个长度为10的数组。

二、消息传递

进程间的数据交换以格式化的消息( Message )为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。image

(一)直接通信方式

消息从进程P的地址空间复制到内核空间,再复制到进程Q的地址空间。(需要点名道姓)

image

(二)间接通信方式

image

三、管道通信

理解(与上面提到的基于存储区的共享存储的区别):

基于存储区的共享存储是操作系统划定一块内存空间,进程在使用时可不按顺序,任意自由使用(自由读和自由写)。而管道通信的数据结构是一种循环队列,遵循FIFO原则,只能先进先出顺序读写。

image

写进程往管道写数据,即便管道没被写满,只要管道没空,读进程就可以从管道读数据。

读进程从管道读数据,即便管道没被读空,只要管道没满,写进程就可以往管道写数据。

标签:存储,操作系统,通信,管道,进程,共享
From: https://www.cnblogs.com/Wind730/p/18532908/process-communication-zgowss

相关文章

  • IIC通信协议
    IIC是什么?IIC的中文名是集成电路总线,它是一种串行通信总线。IIC协议用来干什么?IIC是一种通信协议,是为了能让主板,或者嵌入式系统等与其他外设模块进行通信而进行开发的。I2C,两线式串行总线,它是由数据线SDA和时钟SCL构成的串行总线,可以发送和接收数据。在CPU与被控IC之间、IC......
  • 进程的概念、组成、特征
    进程的概念、组成、特征‍​​‍一、进程与程序程序:是静态的,是存放在磁盘里的可执行文件,是一系列的指令集合。进程:是动态的,是程序的一次执行过程(同一个程序多次执行会对应多个进程,分配不同的进程号PID)‍二、进程的组成(PCB给操作系统使用,程序段和数据段给进程自己使用)......
  • 进程的状态与转换、进程的组织
    进程的状态与转换、进程的组织一、进程的状态与转换理解:某项进程的运行一方面需要CPU处理器的资源,一方面可能还需要其他系统资源。拥有其他系统资源,仅等待CPU的时间片分配,此状态为就绪态。进程运行过程中使用“系统调用”的方式获取其他系统资源,但并未马上获得,则会进入阻塞态......
  • 常见网络通信协议
    常见网络通信协议HTTP和HTTPS都属于应用层协议,它们都是用于从万维网(WWW)服务器传输超文本到本地浏览器的传送协议。它们都是基于TCP/IP协议来传递数据的,支持客户端-服务器模式的通信。HTTP和HTTPS的区别主要在于HTTPS在HTTP的基础上增加了SSL/TLS安全层,使得数据传输更加安全。HTT......
  • Active MQ直接与前端通信
    varmqClient;varmqSubscribeIDObj={scada:"scada"};varconnectCallback=function(msg){for(lettopicNameinmqSubscribeIDObj){addSubscribeTopic(topicName);}console.log("websocketisconnected");updateAMQStat......
  • python多进程万字详解!!!
    文章目录高效编程一、多任务原理二、进程1、概念2、使用进程3、全局变量在多个子进程中不能共享4、启动大量子进程5、map方法6、单进程与多进程复制文件对比7、进程间通信8、进程实现生产者消费者9、案例(抓取斗图)高效编程一、多任务原理概念现代操作系统比如Mac......
  • 服务器上mysqld,java的进程Out of Memory,被kernel kill 掉了
    /var/log/messages里面日志如下Aug1019:47:16VM-0-7-centoskernel:8936totalpagecachepagesAug1019:47:16VM-0-7-centoskernel:0pagesinswapcacheAug1019:47:16VM-0-7-centoskernel:Swapcachestats:add0,delete0,find0/0Aug1019:47:16VM-0......
  • tauri中的通信
    rust端调用前端事件系统通道EvaluatingJavaScript事件系统应用:流式传输少量数据或推送通知系统限制:事件有效负载始终是JSON字符串(不适合较大的消息),不支持功能系统来精细控制事件数据和通道使用范围:全局或特定webview全局事件使用 Emitter#emit 函数//src-ta......
  • 无人车之通信技术篇
    一、通信技术概述   无人车通信技术是指通过车载传感器、车载网络、无线通信等技术手段,实现车辆与车辆、车辆与基础设施、车辆与云端之间的信息交换和通信。这些技术共同构成了无人车与外界交互的“神经系统”,使无人车能够实时感知周围环境、接收指令并做出相应动作。二......
  • Python进程管理:创建和协调多进程的深入指南
    在Python中,进程是操作系统进行资源分配和调度的一个独立单位。与线程相比,进程拥有独立的内存空间,这使得它们在执行多任务时更加稳定,但也带来了更高的资源消耗。本文将深入探讨如何在Python中创建和管理进程,包括详细的代码示例,帮助你掌握多进程编程的技巧。1.理解进程进程......