The architecture

Top  Previous  Next

Each XCICS/TS region is composed a set of processes: when an instance is started up, the main process takes over and generates all the child processes that compose the instance.

Main process (main)

It is the central supervisor process. It manages and takes care about the resolution all conflicts among common resources (queue, etc..), it detects and handles every eventual failure on its child processes, and it provides to generate new processes whenever the needs arise.

Terminal handler process (netd)

This process provides to handle connections and communication requestes coming from terminals.

Transaction server processes pool (engn)

Every XCICS region has a pool of serving processes, so called "engines". The number of processes in this pool is defined in the XCICS configuration files and it may be dynamically changed by means of the xcicsadm utility.

Every time a transaction is requested by a terminal, the main process identifies the first available process and assign the request to this one, which will take care to run the user code and to provide XCICS services.

If the main process, do not find any process available to satisfy the request, this one is put in a FIFO queue waiting for the first available process in the pool.

The size of the processes pool strictly depends on:

number of terminals connected
transaction complexity and duration
H/W characteristics

For user applications with an average duration, we suggest to define one engine process every 100 terminals connected, but, of course, only a correct tuning and sizing, may lead to an effective configuration.

Background processes (task)

Any time a background task is requested (i.e. a transient data trigger or a printer task), XCICS forks a new process to handle the background transaction.

Under some circumstances, like TCP and Web Services driven transactions, background task may be started also on engines pool processes, to avoid the initial delay of the fork system call.

SNA session listeners

This is a particular type of background process, which listens over SNA LU connection, to serve incoming request from remote region over SNA (CICS and XCICS).

TCP/IP services

This is a particular type of background process, which listens over a TCP/IP socket to handle all the incoming request for TCP/IP services (EZASOCKET, TCP ISC, etc.)

TN3270 services

This is a particular type of background process, which serve TN3270 connections over TCP/IP.

File Access

File accesses are controlled and supervised by the XVSAM subsystem, which simulates the IBM’s original VSAM storage access method. Every XCICS/TS embeds the XVSAM file access layer and perform I/O autonomously, without the need of an external I/O server.

Inter-process Communication

Communication between the active processes is provided through SEMAPHORES, QUEUES, SOCKETS, SHARED MEMORY and SIGNALS:

semaphores are used to synchronize the access to the shared memory;
main queues are used to send and receive messages from the Main Process (Q1);
queues and/or sockets are used for the communication between terminals, engines and main processes and optionally between XCICS nucleus and XVSAM server when the latter is not linked-in (Q2, Qn).