MVS 存储空间低于2 GB

MVS 操作系统可使用低于2 GB的存储空间,用于响应区域发出的操作系统宏或SVC指令来执行区域相关服务。

例如,诸如Java™、 Node.js、VSAM、DL/I等语言和组件,或 Db2® 通过 MVS 发出GETMAIN请求以获取用于构建控制块的存储空间。 这些请求由低于 2 GB 的 MVS 存储空间满足。

MVS 存储空间是指在满足动态存储区域及其他 CICS® 存储需求后剩余的存储容量。 低于2 GB的 MVS 存储空间大小取决于执行 CICS 时 MVS 的GETMAIN需求。 打开文件是此区域使用的主要贡献者。

MVS 低于2 GB的存储空间用于存放以下项目:
  • 打开数据集或其他操作系统功能所需的控制块和数据区
  • 尚未驻留在链接装配区域 (LPA) 中的访问方法例程的程序模块
  • COBOL 和 PL/I 程序的共享例程
在2 GB以下的 MVS 存储中,虚拟存储包含四个主要元素。 每个低于 16 MB 的存储区域都重复超过 16 MB。
  • 低于 16 MB 的公共区域
  • 低于 16 MB 的专用区域
  • 高于 16 MB 的扩展公共区域
  • 高于 16 MB 的扩展专用区域

CICS 使用其他产品时的存储

VSAM 缓冲区和大部分 VSAM 文件控制块位于 16 MB 以上。 VSAM 缓冲区可能用于定义为使用本地共享资源 (LSR) 或非共享资源 (NSR) 的 CICS 数据集。 当指定为使用 VSAM LSR 的第一个文件打开时,将动态构建高于 16 MB 的 VSAM LSR 池,当使用该文件的最后一个文件关闭时,将删除该文件。 对于输入/输出块 (IOB) 和通道程序等项,每个打开的数据集都需要此区域中的一些存储量。

定义为数据表的文件对表中包含的记录以及允许访问这些记录的结构使用高于 16 MB 的存储器。

排队的顺序存取方法 (QSAM) 文件需要此区域中的一些存储器。 对于每种类型的瞬时数据队列,瞬时数据使用一个高于 16 MB 的单独缓冲池。 安装瞬时数据队列资源时,将从它们的缓冲池中获取存储器。 瞬时数据还使用高于 16 MB 的缓冲池,在此缓冲池中,当正在打开或关闭分区外瞬时数据队列时,会复制分区外瞬时数据队列定义的部分以供 QSAM 使用。

CICS DBCTL 使用 DBCTL 线程。 DBCTL 线程在 CICS 地址空间中指定,但它们在 CICS 地址空间的高专用区域中具有存储需求。 如果使用 ` CICS ` Db2 ,则为每个 Db2 线程分配 ` MVS ` 存储空间。

MVS 存储限制

MVS 存储在2 GB以下的物理位置可在区域内的任意位置,有时可能位于 CICS 区域之上。 该区域可能会扩展到位于该区域上方的 MVS 存储区,直至达到安装时设置的IEALIMIT上限或默认值。 有关 IEALIMIT 的更多信息,请参阅 z/OS MVS 安装退出状态。 当操作系统发出GETMAIN请求时,若区域内的 MVS 存储空间耗尽,则请求将从该区域上方的 MVS 存储区域中获取满足。

当两个小于2 GB的 MVS 存储区均耗尽时,GETMAIN请求将失败,导致系统异常终止(abends),若为条件请求则返回错误代码。

低于 2 GB 的 MVS 存储空间必须足以满足 CICS 区域整个执行期间的存储请求。 务必谨慎行事:既要避免 MVS 存储空间耗尽,也不应过度分配存储空间。

MVS 存储空间小于2 GB的部分,是指在扣除动态存储区、内核存储区以及 IMS /VS和DBRC模块存储所需空间后,该区域内剩余的存储容量。 必须指定正确的DSA大小,以确保区域内有足够的 MVS 存储空间可用。

由于 CICS 系统的动态特性,对 MVS 存储的需求在一天中会发生变化,即随着任务数量的增加或数据集的打开与关闭而波动。 此外,由于动态使用 MVS 存储,会导致碎片化,因此必须分配额外的存储空间来弥补这一问题。 有关更多信息,请参阅 《计算 JVM 服务器的存储需求》