Um programa é um conjunto de instruções que são executadas por um computador. Ele pode ser escrito em qualquer linguagem de programação e é armazenado em um arquivo no disco rígido ou em outro dispositivo de armazenamento.
Um processo, por outro lado, é a execução de um programa. Quando um programa é iniciado, o sistema operacional cria um processo para ele. Cada processo tem um espaço de endereçamento próprio, o que significa que cada processo tem sua própria área de memória para armazenar seus dados e instruções.
Um programa pode ser responsável por iniciar vários processos diferentes, enquanto cada processo corresponde a uma única execução de um programa. Portanto, um programa é um conjunto de instruções que podem ser executadas várias vezes, enquanto um processo é uma instância de um programa em execução.
As tarefas podem ser classificadas como CPU bound ou IO bound com base em sua demanda por recursos de CPU e entrada/saída.
Tarefas CPU bound são aquelas que requerem muita capacidade de processamento do processador, como cálculos complexos e processamento de grandes conjuntos de dados. Essas tarefas geralmente requerem poucas operações de entrada/saída, o que significa que elas não são interrompidas com frequência pelo sistema operacional. Tarefas CPU bound tendem a consumir muitos ciclos de CPU, o que pode afetar o desempenho de outras tarefas em execução no sistema.
Por outro lado, tarefas IO bound são aquelas que requerem muitas operações de entrada/saída, como leitura ou gravação de arquivos em disco ou comunicação com dispositivos de rede. Essas tarefas geralmente requerem menos ciclos de CPU e, portanto, não afetam tanto o desempenho de outras tarefas em execução no sistema. No entanto, elas podem levar mais tempo para serem concluídas, pois estão esperando por operações de entrada/saída para serem concluídas.
Um programa é carregado para a memória RAM através de uma série de etapas.
Primeiro, o sistema operacional deve localizar o programa em armazenamento secundário, como o disco rígido ou um dispositivo de armazenamento externo. Em seguida, o sistema operacional carrega o código do programa em um espaço de endereço da memória RAM, que é um espaço de armazenamento temporário que pode ser acessado rapidamente pelo processador.
Antes de carregar o programa na memória RAM, o sistema operacional pode precisar carregar bibliotecas dinâmicas e outros arquivos necessários para o funcionamento do programa. Estes são arquivos de sistema que são compartilhados por vários programas e são carregados apenas uma vez na memória RAM, independentemente de quantos programas os utilizam.
Uma vez que o programa e todos os arquivos necessários são carregados na memória RAM, o processador pode começar a executar o código do programa. Enquanto o programa está sendo executado, o processador acessa continuamente a memória RAM para ler as instruções do programa e armazenar os dados resultantes.
Quando o programa é fechado, o sistema operacional libera o espaço de endereço da memória RAM que o programa ocupava, permitindo que outros programas o utilizem.
O ciclo de vida de um processo é o conjunto de estágios pelos quais um processo passa, desde a sua criação até o seu término. A primeira etapa do ciclo de vida de um processo é a criação, que ocorre quando um programa é iniciado pelo usuário ou pelo sistema operacional. Quando um processo é criado, o sistema operacional aloca espaço de endereço na memória RAM para o processo e atribui a ele um identificador único, conhecido como PID (Process ID).
Em sistemas operacionais mono tarefa, o ciclo de vida de um processo pode ser dividido em várias etapas: