第十五章 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. 搭…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门  刷机程序 和 镜像 就不提供了。要刷的时…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
