Processes
Process: a program in execution, fundamentally a container that has all the information needed to run a program
Address space: a range of memory locations from 0 to some max that the process can read and write to
PSW: Program status word, contains
- Condition code bits
- CPU priority
- The mode (user/kernel) of the current program
A CPU switches between processes multiprogramming
Daemon: a process running in the background
Every is identified by the process id (PID) and has a:
- Working directory (pwd)
- UID: the user id
- GID: the goup id
child processes inherit the these properties from the parent process
The root user has UID 0 and all privileges
Process memory #
In Unix processes have their memory divided into three segments:
- Text segment: the machine code to be executed
- Data segment: the global & static variables of the program
- Stack segment: stack memory for local variables
Creation #
On Unix done using the fork
syscall which copies over the memory, open files etc.
Termination #
If a parent process terminates before its child, the child is called an orphan and its parent is set to the init process. All threads are terminated though because they are part of the processes.
A process can be terminated by a signal, see system calls.
States #
A process is always in one of the following three states:
- Running, the CPU is actually executing the instructions
- Ready, runnable but another process is run
- Blocked, unable to run until something happens
The scheduler determines which process to run and when.
The state is maintained by the operating system in the Process Control Block (PCB) saved in the Process Table, a data structure that the operating system has for every process, itentified by the PID. The PCB contains the state, program counter, stack, open files etc