当前位置: 首页 > news >正文

第十五章 IRIS 进程之间的通信

文章目录

  • 第十五章 IRIS 进程之间的通信
  • 介绍
  • 指定作业间通信设备的内存缓冲区
    • 禁用作业间通信缓冲区
  • 作业间通信设备编号
      • 设备编号
  • IJC 设备的 I/O 命令
  • `OPEN`命令
      • device 设备
      • `timeout` 暂停

第十五章 IRIS 进程之间的通信

本页介绍如何在两个或多个 IRIS 数据平台进程之间建立通信。

介绍

作业间通信 (IJC) 设备是一组特殊设备编号,可让在两个或多个 IRIS 进程之间传输信息。这些流程可以是作业流程或交互式流程。

IJC 设备成对工作。最多可以有 256IJC 设备对。使用称为接收器的偶数设备来读取数据。使用称为发送器的奇数设备来写入数据。尝试从发送器读取或写入接收器会导致 <NODEV> 错误。

可以向 IJC 设备发出 I/O 命令,就像向任何其他设备一样。向设备发出OPEN和USE命令后,进程可以发出:

  • 向接收器设备读取命令
  • 将命令写入发送器设备

一次只能有一个进程可以打开设备。

对基于 IRIS 设备表中映射的相对顺序,可以使用管理门户的配置选项查看和编辑该表。

每对设备都与一个 IJC 内存缓冲区关联。当进程向任何奇数 IJC 设备发出WRITE命令时 IRIS 会将数据写入该设备对的缓冲区中。当另一个进程向该对中的偶数设备发出READ命令时 IRIS 会从同一缓冲区读取数据。

写入的数据以先进先出的方式缓冲在内存中。如果在设备为空时发生READ ,则发出该信号的进程将挂起,直到另一个进程发出相应的WRITE 信号。缓冲区已满时发生的写入将挂起,直到另一个进程从该缓冲区读取数据。

将消息写入缓冲区后,即使关闭发送器,它也会保留在那里直到被读取。多个用户可以向发射器发出OPENUSEWRITECLOSE命令,一次一个。随后的READ命令将按照写入的顺序获取所有消息。

指定作业间通信设备的内存缓冲区

系统管理员可以使用管理门户配置 IJC 缓冲区。选择“系统管理” 、 “配置” 、 “附加设置” 、 “高级内存” 。可以设置的两个参数是:

  • ijcnumIJC 设备的最大数量。范围为 0256。默认值为 16。如果编辑此设置,则必须重新启动 IRIS 才能应用更改。
  • ijcbuff :每个 IJC 缓冲区的最大大小(以字节为单位)。范围为 5128192。默认大小为 512 字节。如果编辑此设置,则必须重新启动 IRIS 才能应用更改。

每个 IJC 设备对应一个 IJC 缓冲区,其大小在ijcbuff中指定。可以写入长度为ijcbuff1 的消息。

禁用作业间通信缓冲区

如果不使用 IJC 设备,则可以将 IJC 设备的最大数量 ( ijcnum ) 设置为 0 以避免占用内存。

作业间通信设备编号

作业间通信设备由 IRIS 自动定义编号。它们的实际标识号取决于系统上配置的 IJC 缓冲区的最大数量

下表给出了系统上可用的 IJC 设备编号范围,具体取决于分配的 IJC 缓冲区的数量。

例如,如果分配 8IJC 缓冲区,则系统上将定义从 224239 的设备号(偶数用于READ设备,奇数用于WRITE设备)。

再举一个例子,如果分配 94IJC 缓冲区,则定义以下设备编号范围:22425564199419 以及 20482051。可以将任何偶数/奇数对与OPEN一起使用,使用、读取、写入和关闭命令。

设备编号

Buffers Allocated 分配的缓冲区READ Device # 读取设备# WRITE Device # 写入设备#
1224225
2226227
3228229
15252253
16254255
176465
186667
83196197
84198199
8545
8667
8789
881011
891213
901415
911617
921819
9320482049
9420502051
9520522053
25423702371
25523722373
25623742375

IJC 设备的 I/O 命令

可以对 IJC 设备使用所有标准 I/O 命令: OPENUSEREADWRITECLOSE

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_1IRIS 将此消息写入设备226227 共享的缓冲区中。然后进程A 将第二条消息写入同一缓冲区。现在,进程B打开伴随设备226并从缓冲器读取第一消息(MSG_1)。

现在,进程 A 想要读取消息,因此它必须打开另一个设备 224。由于该设备及其同伴设备 225 的缓冲区当前为空,因此进程 A 会等待,直到进程 B 打开设备 225 并将 MSG_3 写入其中。在IRIS将该消息放入由设备224225共享的缓冲器中之后,对设备224READ命令成功。

http://www.lryc.cn/news/480109.html

相关文章:

  • 设计者模式之策略模式
  • STM32H750 COMP模拟比较器
  • openresty入门教程:rewrite_by_lua_block
  • Java 并发编程学习笔记
  • 【SpringMVC】——Cookie和Session机制
  • [产品管理-60]:产品的情感化设计与常用工具:感性工学、情感分析、神经网络法、微软反应卡、突发情绪法
  • uniapp 小程序 周选择器
  • Android笔记(三十二):封装一个毫秒级别倒计时View
  • [产品管理-60]:马斯洛需求层次与产品的情感化设计
  • Python接口自动化测试自学指南(项目实战)
  • ESLint 使用教程(三):12个ESLint 配置项功能与使用方式详解
  • 如何将 EDB 文件导入 Ansys HFSS 和 Ansys Q3D
  • HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac
  • 智慧流控 力行天地 | 同元软控受邀参加第十三届全国流体传动与控制学术会议
  • Python日志分析与故障定位
  • w029基于springboot的网上购物商城系统研发
  • Uniapp全局文件执行顺序详解
  • 车企死亡加速,买车看好这三条线
  • SpringClud一站式学习之Eureka服务治理(二)
  • 空间解析几何【上】
  • Python 获取PDF的各种页面信息(页数、页面尺寸、旋转角度、页面方向等)
  • 独孤思维:曾经副业赚大钱的人,怎么不见了
  • OpenGL 异常处理-glCreateShader失败
  • 【el-pagination的使用及修改分页组件的整体大小修改默认样式的宽度详细教程】
  • Uniapp的学习
  • C#-万物之父object、装箱拆箱
  • AI大模型重塑软件开发流程:从自动化编码到智能协作的未来展望
  • HTB:GreenHorn[WriteUP]
  • SelfAttention在Ascend上的实现
  • C#设计模式