Region概念
CICS region(区域)概念类似于一个进程,有一个能执行多个线程的地址空间。每个region都能拥有资源,如终端,程序,数据库,每一类型的资源用一张表来描述,每一个表项代表一个资源,一个应用程序的失败,仅仅只影响它所在的CICS region。这样的话,如果你有一台大型机部署在北京,那么大型机上面部署的中间件CICS就可以根据每个省来分不同的region,这样,每个region都能拥有独立的资源,而彼此各省之间不受影响。
CICS的功能
CICS事务管理系统,具有很多功能。包括:终端管理、任务管理、安全管理、程序管理、文件管理、队列管理、恢复管理、系统管理(如存贮、时间、API)等管理功能。我再想,这么牛,是不是再加点线程调度管理之类的就是一个操作系统了??
CICS事务处理过程
当一个事务从终端进入CICS,CICS就初始化一个任务(task)来处理该消息,并且创建用于表示该任务的控制块(task control block)。基于已有的在该CICS region上的资源的定义,CICS确定该事务所需用到的程序,并将该程序装载如内存。而程序中的EXEC CICS命令则是要求服务。
因为绝大多数事务是从终端进入CICS的,所以CICS事务处理过程就可以简单定义成CICS任务处理过程了。当然除了终端输入这种方式外,还可以通过其他途径来初始化任务,但是终端输入是最普通的一种。(至少我平常的工作中基本也只用到终端输入这种方式来初始化任务)。下面我们就来详细说下CICS任务处理的过程:
假如我登陆CICS的某个region,从终端输入事务INQY,事务INQY所对应的程序为PROG1,接下来在应用程序,CICS和大型机主机都发生了什么事呢?
(1)、CICS启动任务管理功能,确定事务的ID(INQY)是否在CICS该region定义,如果否,则发出错误信息。
(2)、如果事务INQY已经定义,CICS的任务管理功能就请求存贮并且创建任务控制块(task control block)
(3)、CICS启动安全管理功能,如果事务INQY是被安全保护的,CICS验证用户的使用权限
(4)、CICS启动程序管理功能,该任务需要运行应用程序,事务定义中应该包含要执行的第一个程序名PROG1
(5)、在程序定义表中找所要运行的应用程序PROG1的定义(其定义指明了该程序的实现语言)。如果程序PROG1不在内存里面,那么程序管理功能就申请内存将其从程序库装入内存。
(6)、CICS复制该程序PROG1的工作存储区到该任务相关的另一存储区。允许PROG1的单独程序副本被多任务共享
(7)、EIP(EXEC Interfacer Program)接受程序请求并且返回异常条件和其他EIB(EXEC Interface Block)信息
(8)、如果程序PROG1中包含EXEC CICS READ等命令来读取文件,那么CICS就启动文件管理功能发出对VSAM读记录的请求
(9)、应用程序常常利用基本映像支持(BMS)来发出已格式化数据到终端
(10)、对VSAM数据集的改变,会被建立日志以便失败时恢复
(11)、当任务结束时,返回控制权给CICS,所有于该任务相关的存储被释放,但程序保留在内存,直到无任何任务使用它和该空间要被使用为止。