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.