Processo (informática)

Question book-4.svg
Esta página ou secção cita fontes confiáveis e independentes, mas que não cobrem todo o conteúdo, o que compromete a verificabilidade (desde maio de 2010). Por favor, insira mais referências no texto. Material sem fontes poderá ser removido.
Encontre fontes: Google (notícias, livros e acadêmico)
Uma lista de processos como mostrada pelo htop

Em computação, um processo é uma instância de um programa de computador que está sendo executada. Ele contem o código do programa e sua atividade atual. Dependendo do sistema operacional (SO), um processo pode ser feito de várias linhas de execução que executam instruções concorrentemente.[1][2]

Um programa de computador é uma coleção passiva de instruções, enquanto que um processo é a execução real dessas instruções. Vários processos podem ser associados com o mesmo programa. Por exemplo, abrir várias instâncias do mesmo programa geralmente significa que mais de um processo está sendo executado.

Multitarefa é um método que permite vários processos compartilharem processadores (UCPs) e outros recursos. Cada UCP (núcleo) executa uma única tarefa por vez. Entretanto, a computação multitarefa permite que cada processador comute entre tarefas que estão sendo executadas sem ter que esperar que cada tarefa finalize. Dependendo da implementação do sistema operacional, a comutação pode ser realizada quando tarefas realizam operações de entrada/saída, quando uma tarefa indica que ela pode ser comutada, ou quando há interrupções de hardware.

Uma forma comum de multitarefa é o compartilhamento de tempo. Compartilhamento de tempo é um método para permitir resposta rápida para aplicações interativas de usuário. Em sistemas de tempo compartilhado, trocas de contexto são realizadas rapidamente, o que faz parecer que vários processos estejam sendo executados simultaneamente no mesmo processador. Esta aparente execução de vários processos simultaneamente é chamada de concorrência.

Para segurança e confiabilidade, a maioria dos sistemas operacionais modernos impedem a comunicação direta entre processos independentes, fornecendo funcionalidade de comunicação entre processos estritamente mediada e controlada.

Tipos de Processo

Dentre os processos, podemos destacar dois principais tipos que estão relacionados a seu local de execução, no caso CPU e Entrada e Saída de dados.

  • Processos CPU bound (orientados à CPU): são processos que utilizam muito o processador, em que o tempo de execução é definido pelos ciclos de processador.
  • Processos I/O bound (orientados à E/S): são processos que realizam muitas operações de entrada e saída de dados, em que o tempo de execução é definido pela duração destas. 
  • IDEAL: existir um balanceamento entre processos CPU-bound e I/O-bound;