1.6 KiB
id | title | tags | created | |
---|---|---|---|---|
t70u | Processes |
|
Friday, June 21, 2024 |
Processes and threads
Programs are sequences of machine instructions stored in a file. However they do not work by themselves. Something needs to load the file's intructions into memory and direct the CPU to run the program. The OS does this via processes.
A process is a running instance of a given program. It can be thought of as a container in which a program runs. This container includes:
- a copy of the program code loaded into memory
- a memory address
- other information about the state of the process
Other than the init
process started by the kernel (PID1), every process has a
parent process that started it. This parent-child relationship creates a tree of
processes.
It is possible that a parent process will terminate before one of its child
processes. In this instance the child becomes an orphan. When this occurs in
#Linux, the orphan process is adopted by init
.
Below, I have used the pstree
utility to list all the running processes on my
machine hierarchically.
Children are represented vertically and horizontally.
├─terminator─┬─zsh───tmux: client
│ ├─zsh───pstree
│ └─6*[{terminator}]
For instance here, terminator
is a child of init
, as are zsh
and tmux
but they are also children of terminator
.pstree
is a child of zsh
and
therefore also a child (grandchild) of terminator
.