Process Components

Every running process includes the following basic structures in memory:

  • Process information block (PIB)

    This structure contains process control information visible only to the operating system. The PIB also contains a reference to the TAB.

  • Task attribute block (TAB)

    This structure stores the task variable for the process and includes the values of all task attributes. In addition to the TAB of the process, the system creates a separate TAB for each task variable the process declares. Thus, reusing a task variable can slightly reduce the memory usage of a process.

  • Process stack

    This structure includes storage areas, or descriptors pointing to outside storage areas, for all variables declared by the process. The top of the process stack also serves as a working storage area that the processor can use when evaluating expressions. For information about estimating and limiting process stack size, refer to Controlling Process Scheduling, Preventing Stack Stretches, Protecting against Stack Overflow, and Restricting Save Memory Usage later in this section.

  • Code segment dictionary

    This structure includes descriptors pointing to the locations of

    • The code segments used by the process.

    • Constant data used by the process, such as value arrays and translate tables.

    • Sequence numbers for all the code segments, if the program was compiled with the LINEINFO compiler options set. (For information about LINEINFO, refer to Determining Process History.)

    For further information about code segment dictionaries, refer to Controlling Code Segment Dictionary Sharing later in this section.