设置存储器保护

CICS® 提供用于保护存储器的工具: 存储器保护,事务隔离,命令存储器保护和重入程序存储器保护。

有关这些设施的信息,请参阅 如何保护 CICS 存储器

开启存储器保护

  1. STGPROT 系统初始化参数设置为 YES。

    您可以使用 CEMT INQ SYSTEM 来查看区域中存储器保护的状态。 如果开启了存储器保护,那么 Storeprotect 的值为 "活动"。

  2. 确保大多数应用程序定义为 用户密钥应用程序; 即,在程序定义上使用 EXECKEY(USER) ,在关联的事务定义上使用 TASKDATAKEY(USER) 。 USER 是 EXECKEYTASKDATAKEY 选项的缺省值。 因此,在大多数情况下,您不必更改资源定义。
  3. 请参阅 CICS-key 应用程序 ,以确定是否有任何应用程序正在使用必须使用 EXECKEY(CICS)TASKDATAKEY(CICS)定义的工具。 相应地更改资源定义。

开启事务隔离

  1. 确保在 CICS 区域中启用了存储器保护。
  2. 要全局开启事务隔离 (即,对于整个 CICS 区域) ,请将 TRANISO 系统初始化参数设置为 YES。

    您可以使用 CEMT INQ SYSTEM 来显示区域中事务隔离的状态。 如果事务隔离处于打开状态,那么 Tranisolate 的值为 "活动"。

  3. 如果需要,请在事务资源定义上指定 ISOLATE(NO) ,以允许事务在无法满足缺省值隔离 (YES) 的条件时继续运行。 请参阅 z/OS 子空间 ,以更好地了解缺省值,并确定是否有任何程序需要共享公共存储器。

    ISOLATE(NO) 为迁移提供支持,允许将事务分隔到它们自己的唯一子空间中以逐步登台。 最佳方法是除去事务相互依赖关系。 但是,某些程序合理需要一个任务来访问或共享另一个任务的存储。 在这种情况下,请考虑更改程序以使用共享存储器; 即,使用 SHARED 选项通过 GETMAIN 命令获取的存储器。

打开命令存储器保护

  1. CMDPROT 系统初始化参数设置为 YES。 这将导致 CICS 验证存储器的开始地址,并在 CICS 执行命令之前确定应用程序对以该地址开头的存储器具有写访问权。
  2. 您可以使用 CEMT INQ SYSTEM 在区域中显示 CMDPROT 的值。 如果命令存储器保护处于活动状态,那么 Cmdprotect 的值为 Cmdprot

开启重入程序存储保护

  1. RENTPGM 系统初始化参数设置为 PROTECT。 这将导致 CICS 从键 0 只读存储器获取合格程序的存储器。 如果使用 RENT 属性将程序作为重入程序进行链接编辑,那么 CICS 装入程序会自动将程序装入只读 DSA (RDSA 和 ERDSA)。 使用 RENTRMODE(ANY) 进行链接编辑的程序将装入到 ERDSA 中。 如果您具有在应用程序中设置断点的开发辅助包,请为开发区域指定 RENTPGM=NOPROTECT 。 有关程序资格的更多详细信息,请参阅 在只读 DSA 中运行应用程序
  2. 您可以使用 CEMT INQ SYSTEM 在区域中显示 RENTPGM 的值。 如果从密钥 0 存储器分配只读存储器,那么 Reentprotect 的值为 Reentprot

结果

激活这些工具后,当 CICS 检测到并阻止尝试的存储器违例时,您会收到消息 DFHSR0001 报告保护异常 (0C4)。 在消息中包含程序中的 X'offset ' 和程序名。 检查程序以确定它尝试修改不允许其修改的存储器的原因。 此外,请确保在事务或程序定义中没有任何错误。