第十五章 IRIS 进程之间的通信
文章目录
- 第十五章 IRIS 进程之间的通信
- 介绍
- 指定作业间通信设备的内存缓冲区
- 禁用作业间通信缓冲区
- 作业间通信设备编号
- 设备编号
- IJC 设备的 I/O 命令
- `OPEN`命令
- device 设备
- `timeout` 暂停
第十五章 IRIS 进程之间的通信
本页介绍如何在两个或多个 IRIS
数据平台进程之间建立通信。
介绍
作业间通信 (IJC)
设备是一组特殊设备编号,可让在两个或多个 IRIS
进程之间传输信息。这些流程可以是作业流程或交互式流程。
IJC
设备成对工作。最多可以有 256
个 IJC
设备对。使用称为接收器的偶数设备来读取数据。使用称为发送器的奇数设备来写入数据。尝试从发送器读取或写入接收器会导致 <NODEV>
错误。
可以向 IJC
设备发出 I/O
命令,就像向任何其他设备一样。向设备发出OPEN和USE命令后,进程可以发出:
- 向接收器设备读取命令
- 将命令写入发送器设备
一次只能有一个进程可以打开设备。
对基于 IRIS
设备表中映射的相对顺序,可以使用管理门户的配置选项查看和编辑该表。
每对设备都与一个 IJC
内存缓冲区关联。当进程向任何奇数 IJC
设备发出WRITE
命令时 IRIS
会将数据写入该设备对的缓冲区中。当另一个进程向该对中的偶数设备发出READ
命令时 IRIS
会从同一缓冲区读取数据。
写入的数据以先进先出的方式缓冲在内存中。如果在设备为空时发生READ
,则发出该信号的进程将挂起,直到另一个进程发出相应的WRITE
信号。缓冲区已满时发生的写入将挂起,直到另一个进程从该缓冲区读取数据。
将消息写入缓冲区后,即使关闭发送器,它也会保留在那里直到被读取。多个用户可以向发射器发出OPEN
、 USE
、 WRITE
和CLOSE
命令,一次一个。随后的READ
命令将按照写入的顺序获取所有消息。
指定作业间通信设备的内存缓冲区
系统管理员可以使用管理门户配置 IJC
缓冲区。选择“系统管理” 、 “配置” 、 “附加设置” 、 “高级内存” 。可以设置的两个参数是:
ijcnum
:IJC
设备的最大数量。范围为0
到256
。默认值为16
。如果编辑此设置,则必须重新启动IRIS
才能应用更改。ijcbuff
:每个IJC
缓冲区的最大大小(以字节为单位)。范围为512
到8192
。默认大小为512
字节。如果编辑此设置,则必须重新启动IRIS
才能应用更改。
每个 IJC
设备对应一个 IJC
缓冲区,其大小在ijcbuff
中指定。可以写入长度为ijcbuff
减 1
的消息。
禁用作业间通信缓冲区
如果不使用 IJC
设备,则可以将 IJC
设备的最大数量 ( ijcnum
) 设置为 0
以避免占用内存。
作业间通信设备编号
作业间通信设备由 IRIS
自动定义编号。它们的实际标识号取决于系统上配置的 IJC
缓冲区的最大数量
下表给出了系统上可用的 IJC
设备编号范围,具体取决于分配的 IJC
缓冲区的数量。
例如,如果分配 8
个 IJC
缓冲区,则系统上将定义从 224
到 239
的设备号(偶数用于READ
设备,奇数用于WRITE
设备)。
再举一个例子,如果分配 94
个 IJC
缓冲区,则定义以下设备编号范围:224
到 255
、64
到 199
、4
到 19
以及 2048
到 2051
。可以将任何偶数/奇数对与OPEN一起使用,使用、读取、写入和关闭命令。
设备编号
Buffers Allocated 分配的缓冲区 | READ Device # 读取设备 | # WRITE Device # 写入设备# |
---|---|---|
1 | 224 | 225 |
2 | 226 | 227 |
3 | 228 | 229 |
… | … | |
15 | 252 | 253 |
16 | 254 | 255 |
17 | 64 | 65 |
18 | 66 | 67 |
… | … | … |
83 | 196 | 197 |
84 | 198 | 199 |
85 | 4 | 5 |
86 | 6 | 7 |
87 | 8 | 9 |
88 | 10 | 11 |
89 | 12 | 13 |
90 | 14 | 15 |
91 | 16 | 17 |
92 | 18 | 19 |
93 | 2048 | 2049 |
94 | 2050 | 2051 |
95 | 2052 | 2053 |
… | … | … |
254 | 2370 | 2371 |
255 | 2372 | 2373 |
256 | 2374 | 2375 |
IJC 设备的 I/O 命令
可以对 IJC
设备使用所有标准 I/O
命令: OPEN
、 USE
、 READ
、 WRITE
和CLOSE
。
OPEN
命令
OPEN
命令保留作业间通信设备供使用。
OPEN device::timeout
device 设备
上表中的设备编号。打开偶数设备以发出READ
命令。打开奇数设备以发出WRITE
命令。为了两个进程进行通信,它们必须打开一组设备对。
timeout
暂停
可选— 一个正整数,其值(以秒为单位)是 IRIS
等待OPEN
完成的最长时间。如果指定 0
,则 OPEN
立即将控制权返回给进程。
此示例显示两个进程如何通过打开单独的设备进行读取和写入来进行通信:
Process A Process B
OPEN 227 USE 227 WRITE "MSG_1"
WRITE "MSG_2" OPEN 226 USE 226 READ X
CLOSE 227 CLOSE 226
OPEN 224 USE 224 READ X WRITE X
CLOSE 224 MSG_1
WRITE X .
MSG_3 ..OPEN 225 USE 225 WRITE "MSG_3" CLOSE 225
过程A
首先打开设备227
并向其写入MSG_1
。 IRIS
将此消息写入设备226
和227
共享的缓冲区中。然后进程A
将第二条消息写入同一缓冲区。现在,进程B
打开伴随设备226
并从缓冲器读取第一消息(MSG_1
)。
现在,进程 A
想要读取消息,因此它必须打开另一个设备 224
。由于该设备及其同伴设备 225
的缓冲区当前为空,因此进程 A
会等待,直到进程 B
打开设备 225
并将 MSG_3
写入其中。在IRIS
将该消息放入由设备224
和225
共享的缓冲器中之后,对设备224
的READ
命令成功。
相关文章:

第十五章 IRIS 进程之间的通信
文章目录 第十五章 IRIS 进程之间的通信介绍指定作业间通信设备的内存缓冲区禁用作业间通信缓冲区 作业间通信设备编号设备编号 IJC 设备的 I/O 命令OPEN命令device 设备timeout 暂停 第十五章 IRIS 进程之间的通信 本页介绍如何在两个或多个 IRIS 数据平台进程之间建立通信。…...

设计者模式之策略模式
前言 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都写在对象中,将会使对象变得异常复杂;而且有时候支持不频繁使用的算法也是一个性能负担。 如何在运行时根据需要透明地更改对象的算…...

STM32H750 COMP模拟比较器
STM32H750 COMP模拟比较器 🔖STM32H750内置两个超低功耗比较器通道(COMP1 和 COMP2). 📄功能应用: 在模拟信号的触发下从低功耗模式唤醒模拟信号调理与定时器的 PWM 输出结合使用时,构成逐周期电流控制环路…...

openresty入门教程:rewrite_by_lua_block
在OpenResty中,rewrite_by_lua_block 是一个强大的工具,它允许你在Nginx的rewrite阶段执行Lua脚本。这个阶段在Nginx处理请求的早期发生,通常用于修改请求URI、请求参数、请求头等,或者根据某些条件执行重定向、返回特定响应等。 …...

Java 并发编程学习笔记
参考资料: JAVA并发专题 - 终有救赎的专栏 - 掘金 Java并发编程学习路线(建议收藏��) | Java程序员进阶之路x沉默王二 面试题目: JUC第一讲:Java并发知识体系详解 面试题汇总(P6熟练 P7精通…...

【SpringMVC】——Cookie和Session机制
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:实践 1:获取URL中的参数 (1)PathVariable 2&…...

[产品管理-60]:产品的情感化设计与常用工具:感性工学、情感分析、神经网络法、微软反应卡、突发情绪法
目录 一、概述 1、情感化设计的三个层次 2、情感化设计在产品中的应用 3、情感化设计的案例 4、情感化设计的意义 二、常见工具 1、感性工学 (情商) 2、情感分析 3、神经网络法 4、微软反应卡 5、突发情绪法 一、概述 产品的情感化设计是一种…...

uniapp 小程序 周选择器
这里贴出来的是子组件的代码,父组件只是打开了一下popup // 打开了一下popup $refs.popup.open(bottom)如果不想用子组件的话,直接打开popup就可以用<template><uni-popup ref"popup" type"bottom" background-color&quo…...

Android笔记(三十二):封装一个毫秒级别倒计时View
效果 倒计时View视频 背景 业务场景需要显示带有毫秒级别的倒计时,于是自己封装一个通用的倒计时组件 源码分析 核心倒计时逻辑,主要是每隔100毫秒计算一次从开始倒计时到现在的剩余时间,并通过process接口返回出去Handler每次设置100毫秒…...

[产品管理-60]:马斯洛需求层次与产品的情感化设计
目录 一、概述 1、马斯洛需求层次理论概述 2、产品情感化设计与马斯洛需求层次的关系 3、产品情感化设计的实践案例 二、马斯洛需求层次与用户情感程度(本能、行为、反思)的关系 1、马斯洛需求层次与用户情感程度概述 2、马斯洛需求层次与用户情感…...

Python接口自动化测试自学指南(项目实战)
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 接口自动化测试是指通过编写程序来模拟用户的行为,对接口进行自动化测试。Python是一种流行的编程语言,它在接口自动化测试中得到了广…...

ESLint 使用教程(三):12个ESLint 配置项功能与使用方式详解
前言 在现代前端开发中,代码质量与一致性是至关重要的,ESLint 正是为此而生的一款强大工具,本文将带您详细了解 ESLint 的配置文件,并通过通俗易懂的方式讲解其主要配置项及其配置方法。此外,我们还将探讨一些高级配置…...

如何将 EDB 文件导入 Ansys HFSS 和 Ansys Q3D
EDB 文件包含有关印刷电路板 (PCB) 的基本数据,包括其布局、组件、连接性和电磁属性。将 EDB 文件导入 Ansys 工具是利用仿真和分析功能设计高效、可靠和高性能电子系统的关键步骤。在这里,我将向您展示如何将 EDB 文件导入 Ansys…...

HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac
寻找模拟器 背景: 运行的是h5,模拟器是网易MuMu。 首先检查一下是否配置dab环境,adb version 配置一下hbuilderX的adb: 将命令输出的路径配置到hbuilderx里面去,然后重启下HbuilderX。 开始安装基座…一直安装不…...

智慧流控 力行天地 | 同元软控受邀参加第十三届全国流体传动与控制学术会议
2024年10月27日-30日,由中国机械工程学会流体传动与控制分会主办的第十三届全国流体传动与控制学术会议在秦皇岛召开。大会以“智慧流控 力行天地”为主题,来自全国高校、科研院所及企事业单位的专家学者出席本次会议。 大会围绕工程应用、新型流控元件、…...

Python日志分析与故障定位
Python日志分析与故障定位 目录 📊 分布式系统日志分析:ELK Stack与Fluentd⚡ 实时日志流处理与异常检测🐍 使用Python分析并处理海量日志数据🚨 自动化故障检测与报警系统🔍 故障根因分析(Root Cause An…...

w029基于springboot的网上购物商城系统研发
🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文件࿰…...

Uniapp全局文件执行顺序详解
Uniapp全局文件执行顺序详解 在Uni-App项目中,全局文件的执行顺序对于深入理解应用的启动和初始化流程至关重要。本文将详细阐述这些文件的执行顺序,并提供相应的示例代码,以便开发者更好地理解和应用。 1. index.html 文件描述࿱…...

车企死亡加速,买车看好这三条线
文 | AUTO芯球 作者 | 雷慢 真不是我危言耸听, 新能源车是真不能随便买啊, 就在这几天,哪吒被传出要裁员70%, 多少车主,多少员工和家庭要失眠了, 哪吒也回应了,说没有裁员,只是精…...

SpringClud一站式学习之Eureka服务治理(二)
SpringClud一站式学习之Eureka服务治理 引言1. 搭建Eureka Server1.1. 添加Eureka Server依赖1.2. 添加 Eureka Server注解1.3. 配置Eureka Server1.4. 运行Eureka Server 2. 搭建Eureka Client 服务提供者2.1. 添加依赖2.2. 添加注解2.3. 配置Eureka Client2.4. 启动服务 3. 搭…...

空间解析几何【上】
文章目录 两向量共线&三向量共面线段定比分点内积&外积&混合积内积(点积)外积(叉积)几何性质混合积轮换对称性对换改变一次符号线性性质几何性质球面方程特点空间平面参数方程行列式方程(点位式)向量式方程三点式方程行列式方程点法式一般式截距式法式方程离…...

Python 获取PDF的各种页面信息(页数、页面尺寸、旋转角度、页面方向等)
目录 安装所需库 Python获取PDF页数 Python获取PDF页面尺寸 Python获取PDF页面旋转角度 Python获取PDF页面方向 Python获取PDF页面标签 Python获取PDF页面边框信息 了解PDF页面信息对于有效处理、编辑和管理PDF文件至关重要。PDF文件通常包含多个页面,每个页…...

独孤思维:曾经副业赚大钱的人,怎么不见了
01 总有一双眼睛默默关注你。 别以为自己每天做项目,日更文章,没人看。 总会有人默默观察你。 看你能坚持多久,看多段时间,你是不是还在。 今天上午,有个2年前认识的副业同行,今天突然跟我发消息。 说…...

OpenGL 异常处理-glCreateShader失败
【1】glCreateShader创建顶点着色器时候报错,如下 【2】原因分析 初始化失败,你使用一个扩extension loader library来访问现代OpenGL,当需要初始化它时,加载器需要一个当前的上下文来加载 【3】解决办法 GLenum glew_err gle…...

【el-pagination的使用及修改分页组件的整体大小修改默认样式的宽度详细教程】
今天遇到个bug,使用element-puls中的分页的时候,长度会超出盒子,今天教大家如何修改el-pagination的宽度,以及修改分页组件的整体大小 直接修改 style"width: 100%; margin-top: 10px"不生效 控制台修改el-pagination…...

Uniapp的学习
uniapp的内容和vue网页开发会有很多区别,但是都是基于vue开发的,大多数业务还是在vue打交道,但是这些uniapp的特殊的知识点也是要掌握好的。 基本配置 创建uniapp项目 npx degit dcloudio/uni-preset-vue#vite-ts 项目名 :用于…...

C#-万物之父object、装箱拆箱
万物之父:object 基于里氏替换原则,可以用object容器装载一切类型的变量。可以用来表示不确定类型,作为函数参数类型 object是所有类型的基类 装箱拆箱 用object存值类型(装箱)→ 把值类型用引用类型存储,…...

AI大模型重塑软件开发流程:从自动化编码到智能协作的未来展望
目录 1. 引言:AI大模型的崛起与软件开发的变革 1.1 AI大模型的兴起与发展背景 1.2 软件开发的现状与痛点 1.3 AI大模型如何解决这些问题 2. AI大模型的工作原理与技术背景 2.1 什么是AI大模型? 2.2 深度学习与自然语言处理技术的演变 2.3 大模型…...

HTB:GreenHorn[WriteUP]
目录 连接至HTB服务器并启动靶机 使用nmap对靶机TCP端口进行开放扫描 再次使用nmap对这三个端口进行脚本、服务扫描 尝试先通过curl访问靶机80端口 将靶机IP与该域名写入hosts使DNS本地解析 使用浏览器访问greenhorn.htb 使用Wappalyzer插件查看该页面技术栈 尝试在sea…...

SelfAttention在Ascend上的实现
1 SelfAttention是什么? Self-Attention(自注意力)机制是深度学习领域的一种重要技术,尤其在自然语言处理(NLP)任务中得到广泛应用。它是 Transformer 架构的核心组成部分之一,由 Vaswani 等人…...