Introdução a Processos
Por Arthur Silva Freire
(arthur.freire@ccc.ufcg.edu.br)
Para uma boa introdução à teoria dos Sistemas Operacionais, devemos entender bem o que é um processo. Não apenas o conceito, mas também conhecer os estados em que ele pode se encontrar e como ocorrem as trocas de estado de um processo.

Houve uma época em que os computadores só tinham capacidade para executar um programa por vez (Sistemas Monotarefas). Para executar outro programa, seria necessário encerrar a execução de algum que estivesse rodando para depois executar o desejado. Com o passar do tempo, novas técnicas surgiram e permitiram que os computadores executassem mais de um programa por vez (Sistemas Multitarefas). O processo tornou-se, então, o conceito essencial para a permissão da execução de mais de um programa.

Segundo [1], esta é a definição para processo: uma abstração de um programa em execução. Entretanto, esse conceito está um pouco limitado. Uma maneira mais adequada para definir um processo seria é a seguinte: programa em execução, incluindo os valores correntes de todos os registradores do hardware e das variáveis, manipuladas por ele no curso de sua execução.

Mas, por que não podemos apenas dizer que um processo é uma abstração de um programa? Imagine que você não sabe, mas precisa fazer um bolo. Preferencialmente, você separará os ingredientes e fará exatamente o que a receita pede. Pois bem, nesse caso, o programa seria a receita, e o processo seria a atividade resultante da preparação da comida: leitura da receita, busca/mistura dos ingredientes, etc. E, se o seu irmão mais novo aparecer, durante a preparação do bolo, chorando por ter sido picado por uma abelha? Você para o preparo do bolo, vai cuidar do seu irmão, e só depois dele ter sido cuidado, o bolo voltará a ser preparado. No contexto de Sistema Operacional, isto é o que acontece:

  • O estado do processo corrente é salvo;
  • O processador é chaveado de um processo para outro de maior prioridade;
  • Depois, volta ao ponto em que foi interrompido.

Quando ocorre alguma interrupção (irmão picado por abelha no exemplo anterior), o processo que está em execução deve mudar de estado. Mas, quais são os possíveis estados em que um processo pode se encontrar? Existem três possíveis estados, são eles: rodando, pronto e bloqueado. A imagem a seguir mostra as possíveis trocas de estado que podem ocorrer em um processo.

Possíveis estados e trocas de estado de um processo.

Conforme figura,

  • 1. Quando o processo descobre que não tem mais condições lógicas de prosseguir em seu processamento;
  • 2. Quando o escalonador (entidade do Sistema Operacional que define qual processo deve rodar primeiro) decide que o processo corrente já ocupou o processador por tempo suficiente, sendo o momento de deixar que outro processo execute;
  • 3. Quando os demais processos já tiveram oportunidade de rodar, sendo a vez do primeiro processo pronto rodar novamente;
  • 4. Quando acontece um evento externo pelo qual o processo estava aguardando, como a conclusão de entrada de dados.

Agora que você já sabe o que é um processo, fique sabendo também que “tudo gira em torno de um processo”. O rápido chaveamento do processador entre os processos é o que permite a multiprogramação. Esse chaveamento é tão rápido que nos dá a impressão de que os programas estão rodando em paralelo, quando na verdade apenas um “pedaço” de cada programa é executado por vez (isso para computadores que possuem apenas uma CPU).

Fonte:

  • [1] TANENBAUM, A.S. Sistemas Operacionais Modernos. 2a edição. Pearson Education do Brasil, 2003.
Jornal PETNews - Edição: Jeymisson Oliveira - Revisão: Savyo Igor e Joseana Fechine
Grupo PET Computação UFCG, 2012. All rights reserved.