操作系统入门 -- 进程的通信方式

操作系统入门 – 进程的通信方式

1.什么是进程通信

1.1 定义

进程通信就是在不同进程之间交换信息。在之前文章中可以了解到,进程之间相互独立,一般不可能互相访问。因此进程之间若需要通信,则需要一个所有进程都认可的共享空间,而这个空间就是内存区以及系统空间。总的来说,进程通信就是一组编程接口,可以让开发人员协调不同进程,使之能在一个操作系统里同时运行,并相互传递、交换信息。

1.2 进程通信的意义

有些复杂的程序需要多个进程协同完成某些具体任务,因此进程之间就需要互相通信实现数据的交换和访问。整个系统执行任务的最小粒度就是进程,这样可以提升系统性能以及安全性。此外在之前讲解进程也提过,多进程应用比多线程引用更加壮硕。


2.进程通信方式

在该节将会讲解进程之间的通信方式。

2.1 管道通信

2.1.1 管道通信的概念

管道通信中所谓管道就是一个用于连接读进程和写进程的数据缓冲区。写进程通过将数据以字节流的方式向管道中发送,而接收端使用读进程读取管道中的数据即可实现信息交换。为了协调双方的通信,管道需要提供 同步互斥确定对方存在 的协调能力,其目的是为了让进程同步。

2.1.2 管道通信的性质

在管道中数据读取是一次性的,即数据被读取后将会被删除,以释放管道空间。同时在某一时刻管道内的数据只能单向传输,即某一时刻只能读或只能写。目前,管道通信类似于生产者-消费者模型,即当管道内写入一定数据时,即可读出。而单向传输决定了进程之间的性质,只有亲缘关系的进程才会使用管道通信。

2.2 消息队列

2.2.1 消息队列概念

消息队列在发送数据时会按照一个个的消息体进行发送,每个消息体都规定了大小,收发双方约定好一种消息类型。相比于字节流的无格式方式,消息队列允许不同进程以消息队列的形式发送给 任意 进程,而进程之间的数据交换也是格式化的消息。若通信进程之间不存在可以直接访问的共享空间,则必须利用 操作系统 提供的消息传递方法实现通信,进程通过系统提供的发送消息和接收消息两个原语进行数据交换。

2.2.2 消息队列通信的性质

  • 直接通信方式:发送进程直接把数据发送至接收进程,并把数据挂到接收进程的消息队列中,接收进程从自己的消息队列中获得消息
  • 间接通信方式:发送进程把消息发送到实体中间件,接收进程再从中间件中获取。

2.3 共享内存

2.3.1 共享内存概念

在使用消息队列时如果数据量较大则数据的收发会产生一定的延迟,因此使用共享内存可以解决收发速度较慢的问题。
进程在运行时需要有自己的虚拟空间,而这些虚拟空间将会映射到不同的物理内存中。共享内存通过申请一块虚拟地址空间,让不同进程的虚拟地址空间映射到同一物理空间,即可实现数据的共享。

2.4 信号量

多进程使用共享内存,但若果所有进程读或写则会导致数据混乱,因此需要有一个约束,这就是之间进程同步与互斥中讲到的信号量。目的是为了防止读写冲突。信号量定义了两种操作,p操作和v操作,p操作为申请资源,会将数值减去M,表示这部分被他使用了,其他进程暂时不能用。v操作是归还资源操作,告知归还了资源可以用这部分。

2.5 套接字

与网络连接类似,基于socket连接的进程需要有一个专门负责监听的进程(服务进程)若进程之间想通信则调用监听进程,并开始TCP或UDP连接。当数据交换完成后结束通信,下次数据交换时则继续建立新的连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/31723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony-HDF驱动框架介绍及加载过程分析

前言 HarmonyOS面向万物互联时代,而万物互联涉及到了大量的硬件设备,这些硬件的离散度很高,它们的性能差异与配置差异都很大,所以这要求使用一个更灵活、功能更强大、能耗更低的驱动框架。OpenHarmony系统HDF驱动框架采用C语言面…

【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据-08

【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据 1. Kafka Broker 工作流程1.1 Zookeeper 存储的 Kafka 信息1.2 Kafka Broker总体工作流程1.2.1 Controller介绍 1.3 Broker 重要参数 2. 节点服役与退役3. Kafka副本 1. Kafka Broker 工作流程 …

GUI Guider(V1.7.2) 设计UI在嵌入式系统上的应用(N32G45XVL-STB)

目录 概述 1 使用GUI Guider 设计UI 1.1 创建页面 1.2 页面切换事件实现 1.3 生成代码和仿真 1.3.1 生成和编译代码 1.3.2 仿真UI 2 GUI Guider生成的代码结构 2.1 代码结构介绍 2.2 Project目录下的文件 3 板卡上移植UI 3.1 加载代码至工程目录 3.2 主函数中调…

【环境变量问题:计算机删除环境变量的恢复方法;此环境变量太大。此对话框允许将值设置为最长2047个字符】

不小心误删了win10系统环境变量可以试试下文方法恢复。 本方法针对修改环境变量未重启的用户可以使用,如果修改环境变量,然后还重启了,只能说重新来。 方法一:使用命令提示符恢复 被修改的系统Path只是同步到了注册表中&#x…

2024软考系规考前复习20问!看看你能答上来多少

今天给大家整理了——2024系统规划与管理师考前20问,这是一份很重要的软考备考必看干货,包含很多核心知识点。有PDF版,可打印下来,过完一遍教材后,来刷一刷、背一背,说不定可以帮你拿下不少分。 第1问- 信息…

python-录音文件转换成文字

大多数语音转文字工具都是要收费的,免费的很少,而且质量也不太高,python有自己的语音识别库,因此尝试使用一下。 先安装库: pip install pydub speechrecognition pip install pydub 安装 ffmpeg brew install ff…

2024.6.23周报

目录 摘要 ABSTRACT 一、文献阅读 一、题目 二、摘要 三、网络架构 四、创新点 五、文章解读 1、Introduction 2、Method 3、实验 4、结论 二、代码实验 总结 摘要 本周阅读了一篇题目为NAS-PINN: NEURAL ARCHITECTURE SEARCH-GUIDED PHYSICS-INFORMED NEURAL N…

解决电脑关机难题:电脑关不了机的原因以及方法

在使用电脑的日常生活中,有时会遇到一些烦人的问题,其中之一就是电脑关不了机。当您尝试关闭电脑时,它可能会停留在某个界面,或者根本不响应关机指令。这种情况不仅令人困惑,还可能导致数据丢失或系统损坏。 在本文中…

DS:堆的应用——两种算法和TOP-K问题

欢迎来到Harper.Lee的学习世界!博主主页传送门:Harper.Lee的博客主页想要一起进步的uu可以来后台找我哦! 一、堆的排序 1.1 向上调整——建小堆 1.1.1 代码实现 //时间复杂度:O(N*logN) //空间复杂度:O(logN) for (…

计算机网络知识点汇总

计算机网络知识点汇总 第1章计算机网络体系结构 1.1 计算机网络概述 1.1.1 计算机网络的概念 ​ 计算机网络是由若干个结点(node)和连接这些结点的链路(link)组成。网络中的结点可以是就三级、集线器、交换机、或者路由器等,网络之间通过路由器进行互联&#xf…

Nodejs 第七十九章(Kafka进阶)

kafka前置知识在上一章讲过了 不再复述 kafka进阶 1. server.properties配置文件 server.properties是Kafka服务器的配置文件,它用于配置Kafka服务的各个方面,包括网络设置、日志存储、消息保留策略、安全认证 #broker的全局唯一编号,不能…

MySQL数据库初体验+数据库管理(其一)

【1】 操作系统介绍: Linux操作系统有 RedHat CentOS Debian Ubuntu OpenSUSE 信创标准 国产系统 : 华为(欧拉) 阿里(龙蜥) 腾讯 (tencentOS) 麒麟&#xf…

【日记】梦到兄长要给鳄鱼换牙齿……(421 字)

正文 今天中午睡了一个小时多一点,做了一个很奇怪的梦。梦见兄长要给一条鳄鱼换牙齿,还说早上不好操作,要三天之后的中午或晚上,颇有一种翻黄历寻个良辰吉日之感。但我没那样大的耐性,便捏住鳄鱼的嘴,左摔右…

实战18:基于tkinter+jupyter notebook开发的情感分析系统

项目演示: 完整代码: import pandas as pd import numpy as np from collections import Counter import re import jieba from tqdm import tqdm from sklearn.metrics import roc_curve, auc import joblib import gensim from sklearn.svm import SVC from gensim.mode…

STM32小项目———感应垃圾桶

文章目录 前言一、超声波测距1.超声波简介2.超声波测距原理2.超声波测距步骤 二、舵机的控制三、硬件搭建及功能展示总结 前言 一个学习STM32的小白~ 有问题请评论区或私信指出 提示:以下是本篇文章正文内容,下面案例可供参考 一、超声波测距 1.超声波…

Studying-代码随想录训练营day16| 513找到左下角的值、112.路径总和、106从中序与后序遍历序列构造二叉树

第十六天,二叉树part03💪💪💪,编程语言:C 目录 513找到左下角的值 112.路径总和 113.路径总和II 106从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树 总结 513找到左下角的值…

[240621] Anthropic 发布了 Claude 3.5 Sonnet AI 助手 | Socket.IO 拒绝服务漏洞

目录 Anthropic 发布 Claude 3.5 Sonnet AI 助手Scoket.IO 拒绝服务漏洞(CVE-2024-38355) Anthropic 发布 Claude 3.5 Sonnet AI 助手 Claude 3.5 Sonnet: 更智能、更快速、更安全的 AI 助手 一、 引言 Anthropic 发布了 Claude 3.5 Sonnet&#xff0…

docker +tmux 远程本地gdb调试

文章目录 远程调试docker pull失败docker上容器运行程序失败宿主机远程调试docker中运行的程序环境准备调试步骤 本地调试bugpwngdbtmuxpwngdb和tmux优化~~感觉用了大佬的镜像后宿主机来做pwn题都不香了~~ 远程调试 但目前不知道如何实现可以边跟着脚本运行调试的方法 docker…

前端刻度条

前端刻度条可以通过CSS和JavaScript实现。以下是一个简单的示例&#xff1a; HTML: <div class"progress-bar"><div class"progress"></div> </div>CSS: .progress-bar {width: 200px;height: 20px;border: 1px solid #ccc;bac…

三维渲染中物体与背景间的自然过渡

在三维渲染中&#xff0c;实现物体与背景间的自然过渡是提升渲染图像真实感和美观度的关键环节。以下是几种实现这一自然过渡的主要技术和方法&#xff1a; 1. 景深效果 景深&#xff08;Depth of Field, DoF&#xff09;模拟真实相机的特性&#xff0c;使得焦点之外的物体模…