Each process is associated with its address space, which is a list of memory locations from zero to a certain maximum, where the process can read from and write data to. The address space contains the executing program, the data of that program, and its stack. Additionally, each process is associated with a set of resources, typically including registers (including the program counter and stack pointer), a list of open files, pending signals, a list of related processes, and other information necessary for the program's operation.