第二章 进程与线程 四、进程通信

news2024/9/24 17:53:42

目录

一、共享存储

1、基于数据结构的共享

2、基于存储区的共享

二、消息传递

1、直接通信方式(消息发送进程要指明接收进程的ID)

2、间接通信方式(通过“信箱”间接地通信。因此又称“信箱通信方式”)

三、管道通信

注意:

四、为什么进程通信需要操作系统支持?


一、共享存储

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

1、基于数据结构的共享

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

2、基于存储区的共享

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

二、消息传递

进程间的数据交换以格式化的消息(Message)为单位。

进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。

1、直接通信方式(消息发送进程要指明接收进程的ID)

(1)进程P发送原语,其中包括了要发送给谁,和发送的数据。

(2)数据进入操作系统内核中,进程Q的PCB的消息队列。

(3)进程Q运行接收原语,在消息队列中查找P发送的数据,并将其复制进Q的地址空间。

2、间接通信方式(通过“信箱”间接地通信。因此又称“信箱通信方式”)

三、管道通信

注意:

管道通信遵守先进先出(FIFO)原则

1.管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道。

2.各进程要互斥地访问管道(由操作系统实现)

3.当管道写满时,写进程将阻塞,直到读进程将管道中的数据取走,即可唤醒写进程。

4.当管道读空时,读进程将阻塞,直到写进程往管道中写入数据,即可唤醒读进程。

5.管道中的数据一旦被读出,就彻底消失。因此,当多个进程读同一个管道时,可能会错乱。

对此,通常有两种解决方案:

①一个管道允许多个写进程,一个读进程(2014年408真题高教社官方答案)﹔

②允许有多个写进程,多个读进程,但系统会让各个读进程轮流从管道中读数据(Linux的方案)。

四、为什么进程通信需要操作系统支持?

1、进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立

2、为了保证安全,一个进程不能直接访问另一个进程的地址空间。

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

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

相关文章

postgresql-视图

postgresql-视图 视图概述使用视图的好处 创建视图修改视图删除视图递归视图可更新视图WITH CHECK OPTION 视图概述 视图(View)本质上是一个存储在数据库中的查询语句。视图本身不包含数据,也被称为 虚拟表。我们在创建视图时给它指定了一个…

MySQL的sql_mode合理设置

MySQL的sql_mode合理设置 1、sql_mode设置介绍说明 sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。在生产环境必须将这个值设置为严格模式,所以开发、测试环…

Linux系统——远程连接Linux系统(图形化、命令行、使用命令行学习Linux系统、FinalShell)

目录 图形化、命令行 使用命令行学习Linux系统 FinalShell 安装 连接 图形化、命令行 对于操作系统的使用,有2种使用形式: 图形化页面使用操作系统以命令的形式使用操作系统 不论是Windows还是Linux亦或是MacOS系统,都是支持这两种使…

前端综合练手小项目

导读 本篇文章主要以小项目的方式展开,其中给出的代码中均包含详细地注释,大家可以参照理解。下面4个小项目中均包含有 HTML、CSS、JavaScript 等相关知识,可以拿来练手,系统提升一下自己的前端开发能力。 废话少说,…

#循循渐进学51单片机#点亮你的LED#not.2

1、深刻理解电容的意义,并且在今后的电路学习过程中要多多注意参考别人电路中去耦电路的处理方法,积累经验。 1)电容缓冲电压,抗电磁干扰; 2)低频率电容,一般用的最多的是钽电容,电…

【C++11保姆级教程】列表初始化(Literal types)和委派构造函数(delegating))

文章目录 前言一、列表初始化 (List Initialization)1.1数组初始化1.2结构体初始化1.3容器初始化1.4列表初始化的优势 二、委派构造函数 (Delegating Constructors)2.1委派构造函数是什么?2.2委派构造函数示例代码2.3调用顺序2.3委派构造函数优势 总结 前言 C11引入…

flutter产物以aar形式嵌入android原生工程

以前做的项目中,flutter都是作为module嵌入原生工程中,新公司项目却是以aar形式嵌入android工程,这种优点是原生工程不必配置flutter环境也能跑了,这里记录一下简单步骤。 创建一个flutter module 通过android studio创建一个fl…

verdi dump状态机的波形时直接显示状态名

前段时间看到别人用verdi看状态机的波形时,可以显示定义的状态参数,觉得很有意思,特地学习了一下 通常拉出状态机信号的波形是下面这样的 这种信号,我们要想知道每个数值代表的状态,还需要跟定义的parameter比对 像这…

LeetCode(力扣)763. 划分字母区间Python

LeetCode763. 划分字母区间 题目链接代码 题目链接 https://leetcode.cn/problems/partition-labels/description/ 代码 class Solution:def partitionLabels(self, s: str) -> List[int]:last_occ {}for i, ch in enumerate(s):last_occ[ch] iresult []start 0end …

PolyAI:对话式AI代替传统客服

【产品介绍】 名称 PolyAI 具体描述 PolyAI 是一家总部位于伦敦的人工智能初创公司,致力于开发对话式人工智能的机器学**台, 在 B 轮融资中筹集了 4000 万美元,用于部署对话式人工智能代理并颠覆传统的客户…

下载安装nvm教程(附带下载切换node.js版本实操)

目录 一、介绍 二、下载 三、安装步骤 四、配置淘宝源 五、测试 六、常用的nvm命令 七、下载切换node版本实操 node版本参考 一、介绍 node版本管理:nvm就是可以切换你的node版本,特别是当node版本过高或者过低时候,就可以用nvm进行…

鼠标拖拽拖动盒子时,与盒子内某些点击事件冲突问题解决

目录 问题解决思路解决代码(标注【主要代码】的为重点) 问题 拖动该悬浮球时,鼠标弹起可能会触发悬浮球内事件 解决思路 鼠标拖动盒子时,将 isMove 设为 true 意为正在拖动盒子,此时将 class"btns_move" 遮…

音乐项目后台管理系统出现的问题

1.当对歌手的歌曲进行编辑时候,会把所有的歌曲信息给修改了。 解决方法:修改controller层的中SongController代码中的这一行代码 boolean flag songService.updateById(song); 2.添加歌曲,在弹出框中输入,没有显示。原因:前端页…

HTML显示中文空格字符,emsp;一个中文字符,ensp;半个中文字符

&emsp;一个中文字符 &ensp;半个中文字符 <ul><li class"li">姓&emsp;&emsp;名&#xff1a;<input type"text" /></li><li class"li">手&ensp;机&ensp;号&#xff1a;<input type"…

SCRUM产品负责人(CSPO)认证培训课程

课程简介 Scrum是目前运用最为广泛的敏捷开发方法&#xff0c;是一个轻量级的项目管理和产品研发管理框架。产品负责人是Scrum的三个角色之一&#xff0c;产品负责人在Scrum产品开发当中扮演舵手的角色&#xff0c;他决定产品的愿景、路线图以及投资回报&#xff0c;他需要回答…

学信息系统项目管理师第4版系列07_项目管理知识体系

1. 项目管理原则 1.1. 勤勉、尊重和关心他人 1.1.1. 关键点 1.1.1.1. 关注组织内部和外部的职责 1.1.1.2. 坚持诚信、关心、可信、合规原则 1.1.1.3. 秉持整体观 1.1.2. 职责 1.1.2.1. 诚信 1.1.2.2. 关心 1.1.2.3. 可信 1.1.2.4. 合规 1.2. 营造协作的项目管理团队…

2019版本idea启动tomcat8.5版本控制台中文乱码

目录 一&#xff0c;检查tomcat安装 二&#xff0c;检查idea配置 前言: 最近使用idea去启动tomcat8.5版本时&#xff0c;控制台语句出现了乱码情况&#xff0c;最终解决了。 情况如下&#xff1a; 一&#xff0c;检查tomcat安装 第一步&#xff1a;检查安装的tomcat找到tomca…

#循循渐进学51单片机#如何学习单片机#not.1

1、了解普通发光二极管的参数&#xff0c;掌握限流电阻的计算方法。 1&#xff09; LED小灯靠电流点亮&#xff0c;电压1.8v~2.2v&#xff0c;电流是1~20ma&#xff0c;在1~5ma亮度有所变化&#xff0c;5MA以上亮度不变。 2&#xff09; 限流电阻的算法一般采用欧姆定律计算。…

C#生产管理进销存系统asp.net+sqlserver

管理员功能&#xff1a; 1&#xff09;系统用户管理 包括管理员的添加、删除和管理员密码修改。 2&#xff09;员工信息管理 包括员工信息、员工工资的添加、查询、修改和删除。 3&#xff09;客户信息管理 包括客户信息的添加、查询、修改和删除&#xff0c;以及客户生日提醒。…

IDM(Internet Download Manager)下载器2024最新版本如何下载?

IDM&#xff08;Internet Download Manager&#xff09;下载器能够兼容支持多种浏览器进行文件下载&#xff0c;很多时候只要复制一个地址IDM的下载弹窗就自动弹出来&#xff0c;有时候不需要下载的时候也会弹&#xff0c;时间久了就会感觉很烦&#xff0c;不过这个问题其实可以…