A transformação de um programa em um processo envolve várias etapas importantes:
1.
Compilação (ou interpretação): Um programa escrito em um idioma de alto nível (como C ++, Java, Python) precisa ser traduzido em instruções compreensíveis da máquina. Isso acontece de duas maneiras principais:
*
Compilação: O compilador traduz o programa inteiro em um arquivo executável completo (por exemplo, um arquivo `.exe` no Windows ou um arquivo binário no Linux/MacOS). Este executável contém código de máquina específico para a arquitetura do computador de destino.
*
Interpretação: Um intérprete traduz e executa a linha por linha, sem criar um executável separado. Isso é mais lento que a compilação, mas oferece mais independência da plataforma. Idiomas como Python e JavaScript são tipicamente interpretados (embora a compilação just-in-time [JIT] seja frequentemente usada para melhorar o desempenho).
2.
Carregando: O carregador do sistema operacional é responsável por carregar o executável do programa na memória. Isso envolve:
*
Encontrando o executável: O carregador localiza o arquivo de programa no dispositivo de armazenamento (disco rígido, SSD, etc.).
*
alocando memória: Ele se reserva espaço na RAM do computador para o código, dados e pilha do programa. A pilha é usada para dados temporários e chamadas de função. A pilha é usada para memória alocada dinamicamente.
*
Relocação: O carregador ajusta os endereços de memória dentro do programa para refletir sua localização real na RAM.
*
Linking: Se o programa usar bibliotecas ou módulos externos, o carregador as vincula ao programa.
3.
Criação do Bloco de Controle de Processos (PCB): O sistema operacional cria uma PCB, uma estrutura de dados que mantém todas as informações necessárias para gerenciar o processo. Esta informação inclui:
*
ID do processo (PID): Um identificador exclusivo para o processo.
*
Contador do programa: Aponta para a próxima instrução a ser executada.
*
registros da CPU: Armazene dados temporários usados pela CPU.
*
Informações sobre gerenciamento de memória: Detalhes sobre a memória alocada ao processo.
*
status de E/S: Informações sobre as operações de E/S do processo.
*
Estado: Indica se o processo está em execução, pronto, bloqueado, etc.
4.
Execução: Depois que o programa é carregado e o PCB é criado, o agendador do sistema operacional atribui o processo a um núcleo da CPU. A CPU busca instruções do código do programa na memória, as executa e atualiza o PCB de acordo. O processo continua executando até concluir ou ser encerrado.
Em resumo, um programa é um conjunto estático de instruções, enquanto um processo é uma instância dinâmica de um programa de execução. O processo possui seu próprio espaço de memória, recursos e um PCB gerenciado pelo sistema operacional. Vários processos podem ser executados simultaneamente (embora não necessariamente simultaneamente em uma CPU de núcleo único).