2. PROCESSOS
Processo é um programa em execução e mais os dados necessários à definição completa de seu estado. Cada processo trabalha como se tivesse para si uma UCP, chamada UCP virtual. Na UCP real, os processos são executados um por vez, mas essa execução é realizada de forma a criar a ilusão de que eles estão sendo executados em paralelos. Time-Slice: é a fatia do tempo da execução de cada processo.
Exemplo de processo: padeiro (UCP), prepara um pão, através da receita (programa), e dos ingredientes (entradas). O processo é o ato do padeiro estar executando a receita através das entradas disponíveis. Suponha que o padeiro está amassando o pão e é picado por um inseto. Ele decide cuidar da picada e para isso dispões de novas entradas (medicamentos) e de um novo programa (livro médico). Terminado o curativo, ele volta amassar o pão no mesmo ponto que parou (para isso as informações foram guardadas, o ponto da receita em que parou etc.). Ocorreu então uma interrupção (picada) fazendo com o padeiro (UCP) chavear do processo 1 (preparação do pão) para o processo 2 (curativo da picada).
Um processo tem a possibilidade de gerar outros processos, que por sua vez podem gerar outros, (o processo gerado recebe o nome de filho e o que pediu a geração, recebe o nome de pai), assim gerando uma hierarquia de processos.
Estados dos processos: quando o processo tem todas as condições de executar, mas não pode pois a UCP foi alocada para a execução de outro processo, dizemos que o processo está pronto.
Existem três estados: execução, bloqueado e pronto. Quando o escalonador seleciona um processo este vai do estado pronto para a execução. Quando o escalonador seleciona outro processo, o que está em execução vai para o estado pronto. Quando há um bloqueamento por falta de entrada, o processo que está em execução torna-se bloqueado. Quando a entrada fica disponível, o processo que antes estava bloqueado vai para o estado pronto.
Implementação de processos: para a implementação dos processos, além dos programas à serem executados, devem ser guardadas algumas informações, para permitir que um processo seja reassumido exatamente no ponto em que foi interrompido. Esses dados são armazenados na tabela de processos.
O material acima está dividido em oito partes, foi escrito por Alex De Francischi Coletta em 2003 e adaptado para a WEB.
Bibliografia: FREITAS, Ricador Luis de “Apostila de Sistemas Operacionais” utilizado no curso de graduação em Engenharia de Computação da Pontifícia Universidade Católica de Campinas na disciplina de Sistemas Operacionais I.