Unidade E - Multiprogramação

Processo vs Programa

Antes de mais nada é preciso compreender o significado de processo sua relação com o programa. Sempre que criamos algum programa, escrevemos seu código em um editor de programas (também conhecido como IDE), este código fonte passa então por um processo de compilação que gera um arquivo executável.

Este executável é um PROGRAMA, ou seja, um arquivo com um conjunto de instruções passíveis de execução pelo meu sistema informatizado1. Este arquivo fica armazenado no disco rígido pronto para ser executado – aguardando a ordem do usuário para entrar em execução.

Um PROGRAMA é um arquivo executável, estático, passivo, contem um conjunto de instruções (em código de máquina) pronto para ser executado pelo sistema.

Ao entrar em execução, o programa é carregado para a memória e neste momento passa a ser considerado um processo. Enquanto o processo existir (estiver carregado na memória) irá passar por diversos estados e transformações, sendo em algum momento encerrado (deixa de existir). O processo normalmente é composto por uma cópia do código de máquina, chamado área de programa; e uma parte para variáveis, chamado área de dados.

Um PROCESSO é um programa em execução, caracterizado por:

Ciclo de vida do processo

Desligamento/reinicialização do computador  - neste momento todos os processos devem ser encerrados; se algum processo não quiser se encerrar naturalmente, o sistema operacional “faz o serviço”.

Relacionamento inter processos

Os processos em execução podem ou não ter algum tipo de relacionamento entre si – isto varia conforme a origem (fabricante) do sistema operacional. Sistemas operacionais Unix-Like2 utilizam o conceito de grupo de processos onde há uma hierarquia e passagem de herança explicita entre processos, ou seja, um processo (pai) irá criar outro (filho) e assim sucessivamente.

Todo processo filho herda algumas características de seu pais (permissões de acesso por exemplo). Desta forma, temos uma estrutura em árvore, conforme figura E.4.

Em nossa máquina virtual instalada, podemos ver a árvore de processos usando o programa pstree3, que deve ser utilizado em conjunto como less para facilitar a visualização (para sair da visualização, usar q). Como visto na figura E.5, o resultado do comando será uma árvore, mostrando os processos e seus filhos, é claro na forma de uma árvore.

$ pstree | less.

Estados do processo

De forma geral, durante sua existência, o processo podem assumir 3 estados básicos que são:

Transição entre os estados do processo

Durante a existência dos processos, eles “transitam” entre os estados Pronto, Execução e Bloqueado. As transições possíveis são (acompanhar pela figura E.4) :

Modos do processador

O processador tem dois modos de operação, que são:

Interrupções

Interrupções, também conhecidas IRQ (Interrupt Request) por  são sinais de hardware enviados ao processador por algum dispositivo,  chamando a atenção deste para alguma ação específica. Sempre que algum device precisar de algo do processador irá disparar um pedido de interrupção.

A interrupção lembra uma chamada de telefone em uma residência, onde uma pessoa  está executando uma tarefa comum, lendo um livro por exemplo. Neste momento o telefone toca, gerando uma interrupção, neste caso a pessoa terá de parar sua atividade e atender o telefone, ou seja, tratar a requisição de interrupção.

Exemplificando em um computador real, se uma placa de rede recebe algum pacote na sua entrada, este fluxo de dados que entra, precisará de algum tratamento então a placa de rede gera um pedido de interrupção ao processador. Quando o processador atender a requisição, irá dar o tratamento necessário aos dados.

A transição entre os estados dos processos, PRONTO ↔ EXECUÇÃO, EXECUÇÃO ↔ BLOQUEADO e EXECUÇÃO ↔ PRONTO, é controlada por um dispositivo chamado RTC (Real Time Clock); um relógio que gera um sinal de interrupção em intervalos regulares. Ou seja, o processador sabe que é hora de trocar de processo em execução quando o RTC avisa.

 

1   Neste contexto, sistema representa o par Hardware + Sistema Operacional.

2   Sistemas operacionais originários ou inspirados do Unix.

3   Este programa é fornecido pelo pacote psmisc.

4   CPU's multicore terão um processo por núcleo.