CICS kernel storage

CICS® kernel storage consists of control blocks and data areas that CICS requires to manage system and user tasks throughout CICS execution. Most of this storage is allocated from the CICS DSAs. A small amount of this storage is allocated from MVS™ storage.

The kernel recognizes two types of task: static tasks and dynamic tasks. The kernel storage for static tasks is preallocated and is used for tasks controlled by the MXT mechanism. The storage for dynamic tasks is not preallocated and is used for tasks, such as system tasks, which are not controlled by the MXT value. Because the storage for dynamic tasks is not preallocated, the kernel might need to use a GETMAIN command to obtain the storage required to attach a dynamic task when the task is attached.

The number of static tasks depends on the current MXT value. There are MXT+1 static tasks. The storage for static tasks is always obtained by GETMAIN from the CICS DSAs. If MXT is lowered, the storage for an excess number of static tasks is freed again.

During early CICS initialization, the kernel allocates storage for eight dynamic tasks. This storage is obtained by GETMAIN from MVS and is always available for use by internal CICS tasks. All other storage for dynamic tasks is then allocated, as needed, from the CICS DSAs. Typically, when a dynamic task ends, its associated storage is freed.

The storage that CICS allocates during task initialization for a single task is the same for a static or dynamic task, as follows:
  • A 1576-byte kernel task entry
  • A 28K 31-bit stack
The allocated storage is all above the 16 MB line. CICS no longer allocates a 24-bit stack (below the line) for each task during task initialization.
In addition to the storage allocated at task initialization, the kernel also allocates pools of extension stack segments both above and below the 16 MB line.
  • The size of each 31-bit extension stack segment (above the line) is 8 KB. Any task can use these extension stack segments if it overflows the 31-bit stack storage allocated to it. CICS preallocates a pool containing a number of 31-bit extension stack segments that is determined by dividing the current MXT value by 10.
  • The size of each 24-bit extension stack segment (below the line) is 4 KB. Tasks obtain these extension stack segments whenever they require 24-bit stack storage. CICS preallocates a reserve pool of 24-bit extension stack segments that tasks can use if no other 24-bit stack storage is available.
When the kernel obtains storage using GETMAIN from the CICS DSAs, the following subpools are used:
KESTK24E in the CDSA
4 KB extension stack segments, 24-bit
KESTK31 in the ECDSA
28 KB stack segments, 31-bit
KESTK31E in the ECDSA
8 KB extension stack segments, 31-bit
KETASK in the ECDSA
1576-byte kernel task entries