To represent a process at high level the operating system uses the Process Control Block (PCB), which basically serves as the storage for all the data that is needed for a process to start, stop and restart.

Contains (among other things):

  • process state
  • Program counter, indicates the address of the next instruction to execute
  • CPU registers
  • CPU-scheduling information todo
  • memory-management information
  • I/O status information

In Linux the PCB is stored in kernel’s memory space, which is an area of memory not accessible by the user space. The place of the pointer for the task_struct is architecture dependant: on x86 at the end of task kernel stack, there is thread_info struct.

References

See also