process
also: task, job
A process is a running instance of a program in memory with its own memory space, file descriptors, and process ID (PID). Each process is an independent execution context managed by the kernel.
A process is the fundamental unit of execution in Linux. When you run a program, the kernel creates a process that allocates memory, manages system resources, and schedules CPU time for the program to execute. Every process has a unique process ID (PID), a parent process ID (PPID), and its own isolated memory regions for code, data, and the stack.
Processes can spawn child processes, creating a tree-like hierarchy. For example, when you type ls in your shell, the shell (a process) forks and creates a new child process that runs the ls command. You can view all running processes using commands like ps aux or top.
Each process operates independently with its own file descriptors (for open files), environment variables, and working directory. The kernel handles switching between processes using context switching, allowing multiple programs to run seemingly simultaneously on a system. Processes can be in different states: running, sleeping (waiting for I/O), stopped, or zombified (terminated but waiting for parent cleanup).