CPU SCHEDULING
O escalonamento de CPU � o ponto central de sistemas operacionais multiprogram�veis. Estes sistemas tornam o computador mais produtivo, na medida em que repartem o tempo de processamento da CPU entre diferentes processos.
Quando falarmos aqui de "processos" n�o estaremos fazendo distin��o entre processos de usu�rios e processos internos do kernel, nem mesmo se estes s�o threads, lightweight process ou heavyweight process. Isto porque nossa inten��o � criar um modelo gen�rico de escalonamento de CPU, podendo a CPU ser escalonada tanto para processos, tradicionalmente como s�o conhecidos, como para outros tipos de servi�os que necessitem de tempo de processamento de CPU.
A "vida" de um processo (o tempo de sua execu��o) obedece a um comportamento c�clico. O processo alterna entre os estados de uso da CPU e de espera para I/O. Um processo que utilize mais a CPU do que fa�a servi�os de I/O (CPU-bound) tem alguns poucos e longos per�odos de uso de CPU. J� um processo que execute mais I/O do que c�lculos na CPU (I/O-bound), cont�m v�rios e curtos per�odos de utiliza��o de CPU. A correta observa��o destas distribui��es � muito importante na determina��o do algoritmo de escalonamento apropriado.
Sempre que a CPU ficar ociosa, o sistema operacional dever� selecionar um processo na fila de processos prontos (ready queue) para serem executados na CPU. A Sele��o deste processo � feita pelo escalonador da CPU (CPU Scheduler). O CPU Scheduler seleciona um processo na mem�ria que esteja pronto para ser executado e aloca a CPU para um deles. Esta sele��o ir� obedecer a um crit�rio de escalonamento, o qual ir� determinar o algoritmo de escalonamento mais apropriado.
Outro componente presente no modelo � o Dispatcher. O Dispatcher ir� dar o controle da CPU para o processo selecionado pelo CPU Scheduler. Para isso o Dispatcher dever�:
- Salvar o contexto do processo que est� deixando a CPU (a menos que o processo esteja deixando a CPU porque tenha terminado sua tarefa);
- Carregar de volta o contexto do processo que est� sendo alocado � CPU;
- Selecionar, ou seja, enviar para o CPU Scheduler um aviso de que a CPU est� ociosa e que este dever� selecionar o pr�ximo processo a ser alocado na CPU.
Crit�rios de Escalonamento
Diferentes algoritmos de escalonamento favorecem diferentes classes de processos, de acordo com os crit�rios que tal algoritmo venha a seguir. A escolha de algum crit�rio de escalonamento ir� fazer uma grande diferen�a na escolha do algoritmo de escalonamento. Os crit�rios seguintes s�o usados na determina��o de que algoritmo usar para o escalonamento da CPU:
- Utiliza��o da CPU: a inten��o � manter a CPU ocupada o maior tempo poss�vel;
- Throughput: a inten��o � maximizar o throughput, ou seja, o n�mero de processos completados por unidade de tempo;
- Turnaround Time: � o tempo que o processo leva para completar sua tarefa. Este tempo engloba o tempo gasto na fila de espera, o tempo para ser carregado na mem�ria, o tempo em execu��o na CPU e o tempo fazendo I/O;
- Waiting Time: � a soma de todos os tempos gastos na fila de processos prontos para execu��o;
- Response Time: � o tempo que o processo leva para come�ar a produzir resultados.
Modelagem inicial:
Escalonador final:
C�digo fonte