Na computação , um processo é a instância de um programa de computador que está sendo executado por um ou mais threads . Ele contém o código do programa e sua atividade. Dependendo do sistema operacional (SO), um processo pode ser composto de vários threads de execução que executam instruções simultaneamente . [1] [2]
Enquanto um programa de computador é uma coleção passiva de instruções normalmente armazenadas em um arquivo no disco, um processo é a execução dessas instruções após serem carregadas do disco para a memória. Vários processos podem estar associados ao mesmo programa; por exemplo, abrir várias instâncias do mesmo programa geralmente resulta na execução de mais de um processo.
Multitarefa é um método que permite que vários processos compartilhem processadores (CPUs) e outros recursos do sistema. Cada CPU (núcleo) executa uma única tarefa por vez. No entanto, a multitarefa permite que cada processador alterne entre as tarefas que estão sendo executadas sem ter que esperar a conclusão de cada tarefa ( preempção ). Dependendo da implementação do sistema operacional, as opções podem ser realizadas quando as tarefas são iniciadas e aguardam a conclusão das operações de entrada / saída , quando uma tarefa cede voluntariamente a CPU, nas interrupções de hardware e quando o planejador do sistema operacional decide que um processo expirou seu justo compartilhamento de tempo de CPU (por exemplo, pelo Completely Fair Schedulerdo kernel Linux ).
Uma forma comum de multitarefa é fornecida pelo compartilhamento de tempo da CPU, que é um método para intercalar a execução de processos e threads dos usuários, e até mesmo de tarefas de kernel independentes - embora o último recurso seja viável apenas em kernels preemptivos como o Linux . A preempção tem um efeito colateral importante para processos interativos que recebem prioridade mais alta em relação aos processos vinculados à CPU, portanto, os usuários recebem recursos de computação imediatamente com o simples pressionar de uma tecla ou ao mover um mouse. Além disso, aplicativos como reprodução de vídeo e música recebem algum tipo de prioridade em tempo real, antecipando qualquer outro processo de prioridade mais baixa. Em sistemas de compartilhamento de tempo, mudanças de contextosão executados rapidamente, o que faz parecer que vários processos estão sendo executados simultaneamente no mesmo processador. Essa execução simultânea de vários processos é chamada de simultaneidade .
Para segurança e confiabilidade, a maioria dos sistemas operacionais modernos evita a comunicação direta entre processos independentes, fornecendo funcionalidade de comunicação entre processos estritamente mediada e controlada.
O sistema operacional mantém a maior parte dessas informações sobre os processos ativos em estruturas de dados chamadas de blocos de controle de processos . Qualquer subconjunto dos recursos, normalmente pelo menos o estado do processador, pode ser associado a cada um dos threads do processo em sistemas operacionais que oferecem suporte a threads ou processos filho .
Uma lista de processos conforme exibido pelo htop
Os vários estados do processo, exibidos em um diagrama de estado , com setas indicando possíveis transições entre os estados.