第十五章 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. 搭…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
