Sistemas operacionais/Gerência de processos

O que são processos?

Muitas pessoas confundem programas com processos, mas os dois são relacionados. Em poucas palavras, um processo é um programa em execução no processador, equanto um programa é uma entidade inanimada.

Estados e Estados de Transição

Um sistema operacional deve ser capaz de gerenciar o uso da CPU pelos processos. A gerência é feita por meio de estados e estados de transição. Por simplicidade, há três estados que os processos podem tomar: bloqueado, pronto e execução. Um processo está bloqueado quando há dependências para sua execução, como uma operação de entrada e saída, por exemplo. Um processo está pronto quando suas dependências foram satisfeiras e está pronto para usar o processador e enfim transitar para o estado de execução.

Quando um processo transita do estado de pronto para execução diz-se que houve um despacho. Os processos prontos e execução são demoninados processos acordados, porque disputam o uso do processador concorrentemente, ao passo que os processos bloqueados são chamados de processos adormecidos, pois não estão aptos a usar o processador.

Os processos prontos ficam armazenados em uma lista LILO (Last-In, Last-Out), ou seja, quando o usuário inicia um novo programa, o respectivo processo entrará no fim da fila e esperará até que os processos a sua frente usem o processador para liberar o acesso aos processos à sua retaguarda.

Para que um processador monopoliza (isto é, fique tempo demais) no processador é dado um tempo limite de execução para suas operações. Esse tempo é definido pelo relógio de interrupções. Caso um processo, antes do término de seu tempo no processador, inicie uma operação de E/S e seu tempo acabar, o próprio processo se bloqueia para esperar o fim da operação.

PCB Process Control Block (Bloco de Controle de Processo)

Também chamado de descritor de processo, o PCB é uma estrutura de dados responsável por armazenar todos os dados da execução de um processo. Quando um processo inicia pela primeira vez, o OS lhe atribui um PID (Process Identification Number, Número de Identificação de processo) e cria um PCB para armazenar, por exemplo, os valores do registrador referentes à execução.

Todos os PCBs ficam armazenados em uma estrutura de dados chamada tabela de processos, que relaciona cada processo com seu respectivo PCB. O PCB de todos os processos residem na memória principal em uma área exclusiva do sistema operacional. A seguir, uma lista de algumas informações que um PCB armazena:

  • PID;
  • Estado do Processo;
  • Contador do Programa;
  • Registradores da CPU;
  • Informações de Gerenciamento de Memória;
  • Ponteiro da Pilha;
  • Prioridade de Escalonamento Corrente;
  • Tempo de CPU Usado;
  • Tamanho do quantum;
  • Nome do processo.