The remaining component define the state of the process. These data are used to monitor the processes use of the CPU, to control peripherals and file access, to manage the processes access to its memory allocation and to point to semaphores controlling access to critical sections. When an interrupt occurs or a subroutine is called the data which does not fit in registers are pushed onto the stack along with the return address. Additional space is reserved on the stack for use by the subroutine. Sufficient information is pushed onto the stack to be able to restore the process to its previous running state following the completion of the subroutine.
Most systems permit a process to acquire use of additional memory dynamically.
This memory is called the HEAP and is allocated out af a system-wide pool of memory and bound to each process. This allows more flexibility in memory usage. We will study the applications of shared memory and the related issue of mutual exclusion in more detail later. These data may be given some initial value but may not be removed or alter while the process exists. This creation must specify the state of the new process.