Um processo é um programa em execução, sendo o seu modelo de gestão uma das principais tarefas dos sistemas operacionais modernos. Existem múltiplas maneiras utilizadas pelo Sistema Operacional na criação de novos processos, sendo a inicialização do SO, as interações do usuário e as rotinas do sistema operacional os principais eventos geradores.
Ao iniciar um novo processo, o sistema operacional automaticamente executa duas operações, cria uma entrada no bloco de controle de processos (PCB) e reserva o espaço de armazenamento deste processo na memória. O PCB é uma estrutura de dados que descreve e representa o processo para o sistema operacional e é composto por uma série de atributos relacionados ao processo, como a identificação do próprio processo e do seu criador.
A finalização de um processo, assim como na criação, poder ser realizada de diferentes maneiras. Voluntariamente, um processo é finalizado quando termina com sucesso a execução da tarefa que lhe foi atribuída ou quando um erro conhecido é disparado pelo aplicativo. Já o término involuntário ocorre normalmente por um erro na codificação do programa ou por uma ação de um outro processo.
Durante o seu ciclo de vida, os processos podem assumir três diferentes estados: “pronto” – quando está em condições de ser posto em execução; “em execução” - quando está efetivamente alocado na CPU; e “em espera” – no momento que está aguardando uma resposta externa ou a liberação de recursos computacionais compartilhados para que possa prosseguir com o processamento. São permitidas três transições entre estes estados, entre os estados de pronto e em execução, independentemente do sentido, do estado de execução para o estado de espera e deste para o estado de pronto.
De forma a reduzir a quantidade de mudanças de estado entre os diferentes processos, operação que ocasiona perda de capacidade de processamento, foi introduzido no âmbito dos Sistemas Operacionais o conceito de threads. Em seu conceito tradicional, as threads são executadas dentro do contexto de um processo, que pode ser single-threaded ou multithreaded, ou seja, permitir a execução de apenas uma thread ou de múltiplas threads simultaneamente. No contexto dos sistemas operacionais, as threads podem ser executadas tanto em modo usuário quanto em modo kernel, sendo possível, ainda, a abordagem híbrida e a utilização do modelo “Scheduler Activations”.