Gerenciamento de Processos
Estados de um processo
Tabela de processos
Mecanismos de escalonamento de processos
Os t�picos a serem examinados podem ser encontrados nos seguintes cap�tulos de livros:
Modern Operating Systems, Tanenbaum, cap. 2
Operating Systems Concepts, Peterson/Silberschatz, cap. 4
Outros bons livros de sistemas operacionais, nos cap�tulos sobre gerenciamento ou escalonamento de processos
1. Estados de um processo
Do cap�tulo anterior � poss�vel perceber que os v�rios processos executando em um sistema est�o sempre disputando o acesso � CPU. Com isso, � preciso definir um conjunto de estados para representar os processos em cada condi��o. De modo geral os processos podem assumir os seguintes estados:
Ativo (ou executando), quando estiver fisicamente ocupando a cpu;
Pronto, quando estiver apenas esperando por uma chance de ocupar a cpu;
Em espera (ou bloqueado), quando estiver esperando pela ocorr�ncia de algum evento externo que o permita ficar esperando apenas pela cpu;
Inativo (ou morto), quando n�o estiver executando.
Al�m desses estados � poss�vel diferenciar outros estados a partir do fato do processo estar ou n�o residindo fisicamente na mem�ria.
A passagem de um processo de um estado para outro ocorre em determinadas circunst�ncias, que s�o:
Pronto para Ativo: quando o dispatcher escalonar o processo;
Ativo para Pronto: quando o dispatcher decidir que outro processo deve ocupar a cpu (por estouro do tempo de cpu, por exemplo);
Ativo para Em espera: quando o processo solicitar uma opera��o de entrada/sa�da ou for bloqueado por algum sem�foro (ou outro mecanismo de bloqueio);
Ativo para Inativo: quando o processo for retirado da mem�ria ou terminar sua execu��o;
Inativo para Pronto: quando o scheduler trazer o processo do disco para a mem�ria;
Em espera para Pronto: quando a opera��o de E/S for completada ou o processo for desbloqueado.
2. Tabela de processos
Para que o sistema tenha condi��es de manipular os processos (e seus estados) � necess�rio que se tenha uma estrutura para armazenar informa��es de cada processo. Isso � feito por uma tabela, normalmente chamada de tabela de processos ou bloco de controle de processos (BCP), que deve conter informa��es tais como o n�mero do processo (PID), identificador de seu estado, instante de cria��o, tempo acumulado de execu��o, conte�do dos registradores da cpu por ele usados, endere�o na mem�ria, pilha, etc.
� atrav�s da manipula��o desta tabela que o sistema operacional pode controlar todos os processos e, tamb�m, fornecer informa��es para os algoritmos de escalonamento na cpu. Uma descri��o mais detalhada dos dados de uma tabela de processos pode ser vista nos livros de SO.
3. Mecanismos de escalonamento de processos
A ocupa��o da cpu pelos processos que estejam no estado de pronto deve ser feita de forma organizada. Para tanto existem algoritmos de escalonamento que atuam de acordo com premissas estabelecidas pelo tipo de processo do sistema, necessidades do usu�rio, disponibilidade de recursos de hardware, etc. Esses algoritmos podem ser classificados em duas categorias principais: algoritmos sem preemp��o (FCFS - primeiro a chegar primeiro a executar, SJF - primeiro o mais curto, etc.), e algoritmos com preemp��o (Round-Robin, Prioridade, SRTF - primeiro quem falta menos tempo, Filas multin�vel, etc.).
Os algoritmos sem preemp��o n�o permitem que um processo seja interrompido ap�s assumir o controle da cpu, o que passa a ser permitido nos algoritmos com preemp��o. A diferen�a entre algoritmos com preemp��o est� centrada exatamente nos motivos que originam a preemp��o de um processo. De forma geral os algoritmos com preemp��o s�o muito mais eficientes do que os sem preemp��o por fazer um melhor uso da cpu.
A efici�ncia de cada um desses algoritmos pode ser medida atrav�s de m�tricas de desempenho, tais como ocupa��o da cpu, throughput (taxa de sa�da ou vaz�o), tempos de espera, tempos de execu��o m�dios (turnaround time), etc. A ado��o de uma dessas m�tricas de desempenho � feita de acordo com a necessidade do usu�rio, sendo que cada algoritmo de escalonamento pode resultar em medidas bastante distintas de desempenho para conjuntos de processos diferentes. Cabe ao usu�rio, portanto, escolher a medida que mais lhe interessa e determinar o algoritmo de escalonamento que melhor se adequa � sua situa��o.
Por fim, � preciso observar que esse cen�rio vem mudando com o surgimento de threads e processadores multicore. Atualmente � poss�vel executar v�rios threads simultaneamente, o que aumenta as possibilidades de escalonamento para o gerenciador. Assim, as vers�es mais recentes dos SO dispon�veis j� fazem uso dessa capacidade, permitindo um aumento no throughput do sistema.