Sistemas Operacionais: Processos
Quando estamos falando de sistemas operacionais multiprogramáveis, é importante entendermos o conceito de processo aplicado na arquitetura e operação destes SOs. Historicamente, termos como programa ou job eram utilizados, mas o conceito de processo surgiu para refletir a necessidade de gerenciar unidades de execução concorrente. A gestão de um ambiente multiprogramável é uma função exclusiva do sistema operacional, que deve controlar a execução dos diversos programas e o uso concorrente de recursos. Portanto, “um programa, ao ser executado, deve estar sempre associado a um processo” (Machado e Maia, 2014, p. 89).
Para Tanenbaum e Woodhull (2008, p. 37), um “processo pode ser definido como a abstração de um programa em execução“. Enquanto o programa representa algo estático, como um conjunto de instruções ou um algoritmo expresso em notação conveniente, o processo é um conceito dinâmico, tratando-se da execução sequencial de um programa.
A definição mais abrangente de processo o estabelece como um “conjunto necessário de informações para que o sistema operacional implemente a concorrência de programas” (Machado e Maia, 2014). Outro entendimento, também conforme Machado e Maia (2014), é que um processo pode ser entendido como o ambiente abstrato onde um programa é executado, que inclui as informações sobre a execução e a quantidade de recursos do sistema que o programa pode utilizar.
Estrutura e Representação de um Processo
Para implementar e gerenciar a execução concorrente de programas, o sistema operacional organiza o processo em uma estrutura complexa, que armazena todas as informações necessárias para que o processamento possa ser interrompido e, posteriormente, restaurado, como se nunca tivesse sido parado.
A estrutura de um processo é formada por três componentes principais, que reúnem todas as informações essenciais à sua execução: o contexto de hardware, o contexto de software e o espaço de endereçamento. A Figura 1 representa de forma satisfatória os contextos de um processo.

Fonte: Machado e Maia (2014).
Contexto de Hardware
O contexto de hardware armazena o conteúdo dos registradores gerais da Unidade Central de Processamento (UCP), além dos registradores de uso específico, como o contador de programa (program counter — PC), o ponteiro da pilha (stack pointer — SP) e o registrador de status (Machado e Maia, 2014). Em outras palavras, quando um processo está em execução, seu contexto de hardware reside nos registradores do processador.
A alternância dos processos na utilização do processador exige que o sistema operacional salve as informações de um processo que perde o direito de uso do processador e, em seguida, carregue no processador o novo conjunto de informações referente ao próximo processo a ser executado. Essa operação de substituição do contexto de hardware de um processo pelo de outro é denominada troca de contexto (ou mudança de contexto). Essa operação está desenhada na Figura 2.

Fonte: Machado e Maia (2014).
Contexto de Software
O contexto de software é responsável por especificar os limites e as características dos recursos que o processo pode alocar, como a prioridade de execução e o número máximo de arquivos abertos simultaneamente. Conforme Machado e Maia (2024), ele é subdividido em três grupos de informações:
- Identificação: inclui o PID (Process IDentification), um número único que permite ao sistema operacional e a outros processos referenciar o processo existente. Também armazena a UID (user identification) do usuário ou processo que o criou.
- Quotas: correspondem aos limites de recursos que um processo pode alocar. Exemplos incluem o tamanho máximo de memória principal e secundária, e o número máximo de processos filhos que podem ser criados.
- Privilégios: definem as ações que um processo está autorizado a realizar em relação a si mesmo, aos demais processos e ao sistema operacional.
Espaço de Endereçamento
O espaço de endereçamento é, basicamente, uma lista de posições de memória em que o processo pode ler e escrever. Este espaço contém o programa executável, os dados do programa e sua pilha (Tanenbaum e Woodhull, 2008, p. 37).
Todo processo possui seu próprio espaço de endereçamento, isolado e devidamente protegido do acesso dos demais processos, mesmo que eventualmente ocorram problemas de acesso indevido (Machado e Maia, 2014). Os mecanismos implementados para gerência de memória e memória virtual dos sistemas operacionais são os responsáveis pela administração desse espaço de endereçamento.
Na Figura 3 há a representação esquemática ampliada dos contextos que compõem a ideia do processo. Observe que além do programa em si (centro), há diversas informações que complementam o ambiente de execução do programa. São estas informações que permitem ao SO realizar a gestão dos programas e gerir a concorrência pelos recursos.

Fonte: Machado e Maia (2014).
Bloco de Controle do Processo (PCB)
A implementação do conceito de processo pelo sistema operacional é realizada por meio de uma estrutura de dados chamada Bloco de Controle do Processo (do inglês, Process Control Block – PCB). De acordo com Maziero (2019), o bloco de controle de processo armazena todas as informações de contexto do processador numa estrutura para que ela possa ser salva e carregada na CPU quantas vezes forem necessárias durante a execução do programa.
As informações contidas na PCB incluem o estado da tarefa, as listas de áreas de memória, os arquivos abertos, as conexões de rede e as informações de gerência (como prioridade e tempo de processamento decorrido), conforme observa-se na Figura 4.

Fonte: Machado e Maia (2014).
Importante ressaltar que os blocos de controle de todos os processos ativos residem na memória principal, em uma área exclusiva do sistema operacional reservada para este fim. Este é um dos inúmeros motivos que fazem com que um sistema operacional tenha uma parte da memória RAM reservada para si.
Estados de um Processo e Transições
Ao longo de sua execução, um processo em um sistema multiprogramável transiciona por diferentes estados, em função de eventos gerados pelo próprio processo ou pelo sistema operacional. Existem três estados fundamentais que um processo ativo pode ocupar, conforme as definições de Tanenbaum & Woodhull (2008) e Machado & Maia (2014):
- Pronto (ready): o processo está pronto para ser executado, mas foi temporariamente parado porque o sistema operacional alocou o processador para outro processo. Os processos nesse estado são frequentemente organizados em listas encadeadas, ordenadas por algum critério.
- Execução (running): o processo está ativamente utilizando o processador. Em um sistema com apenas uma CPU, somente um processo pode estar nesse estado por vez. No caso de sistemas com múltiplos processadores, a quantidade de processos depende do número de núcleos disponíveis na arquitetura do dispositivo.
- Espera (wait) / Bloqueado (blocked): o processo está logicamente impedido de prosseguir e aguarda a ocorrência de algum evento externo – como o término de uma operação de E/S – ou a concessão de um recurso não disponível – como a liberação de um arquivo para leitura ou escrita.
Na Figura 5 temos uma representação dos estados possíveis e das transições entre eles.

Fonte: Machado e Maia (2014).
Além dos citados, a maioria dos sistemas operacionais estabelece estados adicionais para os momentos de criação e eliminação. São eles:
- Criação (new): o sistema operacional já criou um novo PCB, mas o processo ainda não pode ser colocado na lista de prontos, geralmente devido a limites de recursos ou desempenho.
- Terminado / Término (exit): o processo encerrou sua execução, mas suas informações de controle (PCB) ainda são mantidas em memória para que o sistema operacional possa recuperar dados de contabilização (tempo total de UCP utilizado, por exemplo).
A Figura 6 apresenta como estes novos estado se encaixam na engrenagem de funcionamento dos estados básicos.

Fonte: Machado e Maia (2014).
Para assumir os diversos estados possíveis, os processos transitam entre eles em função de eventos. Este fluxo pode ser analisado nas Figuras 5 e 6. Contudo, para completar as imagens, as possibilidades de transição entre os estados são:
- Pronto para Execução: ocorre quando o escalonador do sistema operacional seleciona o processo para utilizar a CPU.
- Execução para Espera: o processo passa a esperar por um evento gerado por ele próprio (como uma operação de E/S) ou por um evento externo (suspensão temporária).
- Espera para Pronto: ocorre quando o recurso ou evento esperado é concedido ou atendido.
- Execução para Pronto: o processo é preemptado (trocado), geralmente pelo término de sua fatia de tempo (quantum).
Tipos de Processos
De forma simplória, pode-se classificar os processos de duas maneiras, segundo Machado e Maia (2014): pelo seu comportamento e pela interação com o usuário.
Em relação ao comportamento, observa-se que processos podem ter sua execução predominantemente vinculada ao uso do processador ou dos dispositivos de E/S. Os processos chamados CPU-bound (ligados à CPU) passam a maior parte do tempo no estado de execução ou pronto, utilizando intensivamente o processador. Pode-se citar as aplicações científicas que realizam muitos cálculos como exemplo. Por outro lado, os processos chamados I/O-bound (ligados à E/S) passam a maior parte do tempo no estado de espera, realizando um elevado número de operações de E/S, com rajadas curtas de uso de CPU. Este tipo de processo é comum em aplicações comerciais.
Na Figura 7 há uma demonstração por meio de gráficos bidimensionais de como se comportam ambos os tipos de processos em relação à CPU e às operações de E/S.

Fonte: Machado e Maia (2014).
A outra classificação distingue os processos quanto à sua interação com o usuário, conforme a Figura 8. Os processos Foreground são aqueles que permitem a comunicação direta com o usuário durante o processamento, sendo a base do processamento interativo. Navegadores e editores de texto são exemplos dessa categoria. Em contrapartida, há os chamados processos Background, que não exigem comunicação com o usuário durante a execução. São processos que executam atividades em segundo plano para prover serviços, como a gerência de impressão ou de rede.

Fonte: Machado e Maia (2014).
Considerações finais
A gerência de processos é uma das principais funções do núcleo do sistema operacional, possibilitando a criação, eliminação e a alocação de recursos. Além disso, permite também o compartilhamento de dados e a sincronização de execuções. A gerência de processos é tipicamente exercida por um componente do sistema chamado Gerenciador de Processos (Tanenbaum e Woodhull, 2008).
O mecanismo pelo qual o sistema operacional decide qual processo no estado de pronto deve utilizar o processador é chamado escalonador (scheduler), e o algoritmo utilizado pelo escalonador é conhecido como algoritmo de escalonamento. Estes termos são frequentemente vistos quando se estuda as políticas de escalonamento em sistemas operacionais. Por isso, continue lendo os artigos deste site, além de consultar as fontes de referência utilizadas.
Obrigado pela leitura e bons estudos.
Referências
MACHADO, Francis Berenger; MAIA, Luiz Paulo. Arquitetura de sistemas operacionais. 5ª ed. Rio de Janeiro: LTC, 2014.
MAZIERO, Carlos Alberto. Sistemas operacionais: conceitos e mecanismos. 1ª ed. [recurso eletrônico] / Carlos Alberto Maziero – Curitiba : DINF – UFPR, 2019.
TANENBAUM, Andrew S.; WOODHULL, Albert S.. Sistemas operacionais: projeto e implementação. 3ª ed. [recurso eletrônico] / Tradução: João Tortello – Porto Alegre: Bookman, 2008.


