Captulo 5: Escalonamento da CPU Conceitos bsicos Critrios de escalonamento Algoritmos de escalonamento Escalonamento multi-processador Escalonamento em tempo real SUMRIO: Silberschatz, Galvin and Gagne 2002 5.2 Operating System Concepts Conceitos bsicos Objectivo do escalonamento do processador (principal recurso): Ideia base da multiprogramao: maximizar a utilizao da CPU via multiprogramao. Quando um processo tem de esperar (p.ex operao I/O), o sistema operativo retira-lhe a CPU, dando-a a outro processo. Conceitos bsicos: Ciclo burst CPU-I/O execuo dum processo consiste dum ciclo de execuo na CPU e espera I/O Escalonador da CPU Escalonamento preemptivo Despachador Silberschatz, Galvin and Gagne 2002 5.3 Operating System Concepts A execuo dum processo consiste em vrios ciclos CPU-I/0 tal que uma intermitncia (burst) de execuo da CPU alterna com uma intermitncia (burst) de espera pela finalizao duma operao I/O. Os processos I/O-bound tm em geral um grande nmero de CPU bursts de curta durao. Os processos CPU-bound tm em geral um pequeno nmero de CPU-bursts de longa durao. O sucesso do escalonamento da CPU depende da seguinte observao sobre os processos:
Histograma de CPU bursts Sequncia alternada de intermitncias de CPU e I/O Silberschatz, Galvin and Gagne 2002 5.4 Operating System Concepts Escalonador da CPU Sempre que a CPU fica livre, cabe ao sistema operativo seleccionar um dos processos da ready queue a fim de o colocar em execuo. A seleco efectuada pelo escalonador de curto prazo ou escalonador da CPU. O escalonamento da CPU pode ter lugar quando um processo: 1. Comuta do estado RUNNING para o estado WAITING. 2. Comuta do estado RUNNING para o estado READY. 3. Comuta do estado WAITING para o estado READY. 4. Termina. Situaes geradoras de escalonamento da CPU Ready queue uma abstraco .. Pode ser fifo, fila de prioridades, arvore, lista- ligada simples etc. Silberschatz, Galvin and Gagne 2002 5.5 Operating System Concepts Escalonamento No-Preemptivo As decises de escalonamento da CPU tm lugar nas 4 seguintes circunstncias:
1. um processo comuta do estado running para o estado waiting. Interrupo I/O ou Sleep Chamado ao sistema wait() espera a terminao dum processo filho.
2. um processo comuta do estado running para o estado ready Ocorrncia dum interrupo
3. um processo comuta do estado waiting para o estado ready Terminao de I/O Recurso livre
4. Um processo termina System call _exit() O processo ocupa a CPU at ao seu trmino ou at que passe ao estado waiting as 1 e 4 situaes. Agora um novo processo da ready queue tem que ser seleccionado para execuo. O escalonamento dito ser no-preemptivo MS Windows 3.1, MAC OS (antes de OSX), SOs especializadas. Os sistemas operativos no-preemptivos no so adequados para sistemas de tempo real, pois no garantem a execuo em primeiro lugar dos processos com prioridade mais alta.
Cooperative Multitasking : one poorly designed program can consume all of the CPU time for itself or cause the whole system to hang. Silberschatz, Galvin and Gagne 2002 5.6 Operating System Concepts Escalonamento Preemptivo Preemptive multitasking involves the use of an interrupt mechanism which suspends the currently executing process and invokes a scheduler to determine which process should execute next. Preempo nas 2 e 3 situaes. Necessite algum Hardare/Mecansimo especifico (Hardware Timer) Mas aqui h um custo a pagar. Considere que dois processos partilham dados. Um dos processos est a actualizar os dados quando ocorre a preempo do segundo processo que passa a executar e a ler os dados. Os dados assim podem ficar num estado inconsistente. Acesso sincronizado aos dados ..estudado mais tarde. Algumas tarefas (do OS) no so interuptaveis p.ex o proprio interrupt handler routine As decises de escalonamento da CPU tm lugar nas 4 seguintes circunstncias:
1. um processo comuta do estado running para o estado waiting. Interrupo I/O ou Sleep Chamado ao sistema wait() espera a terminao dum processo filho.
2. um processo comuta do estado running para o estado ready Ocorrncia dum interrupo
3. um processo comuta do estado waiting para o estado ready Terminao de I/O Recurso livre
4. Um processo termina System call _exit() Silberschatz, Galvin and Gagne 2002 5.7 Operating System Concepts Despachador o mdulo que despacha o controlo da CPU para o processo seleccionado pelo escalonador de curto-prazo.
Executa as seguintes operaes : comutao de contexto comutao para o modo de utilizador salto para o endereo certo de memria do programa por forma a (re-)execut-lo
O despacho deve ser to rpido quanto possvel.
O tempo que decorre entre a paragem de execuo dum processo e o incio doutro designado por latncia de despacho. Silberschatz, Galvin and Gagne 2002 5.8 Operating System Concepts Critrios de Escalonamento H vrios critrios para comparar algoritmos de escalonamento:
Utilizao da CPU: maximizar a utilizao da CPU. Deve variar entre 40% e 90% em sistemas de tempo real. Um critrio de maximizao. Dbito (throughput): maximizar o n de processos concludos por unidade de tempo. Critrio de maximizao. Tempo de circulao (turnaround): tempo que decorre entre o instante em que um processo submetido e o instante em que concludo. Critrio de minimizao. Tempo de espera: a soma dos perodos dispendidos na ready queue. Critrio de minimizao. Tempo de resposta: minimizar o tempo que decorre entre a submisso dum pedido e o incio da resposta. Este critrio adequado para sistemas interactivos. Critrio de minimizao. geralmente usamos uma mdia Silberschatz, Galvin and Gagne 2002 5.9 Operating System Concepts Algoritmos de Escalonamento First-Come, First-Served (FCFS Shortest-Job-First (SJT) Prioridade Round-Robin (R-R) Multi-fila Multi-fila com transbordo Metricos : TME Tempo Mdio de Espera TMT Tempo Mdio de Turnaround Silberschatz, Galvin and Gagne 2002 5.10 Operating System Concepts First-Come, First-Served (FCFS) Processo Burst Time P 1 24 P 2 3 P 3 3
Suponha que os processos chegam pela ordem: P 1 , P 2 , P 3 A Carta Gantt de escalonamento :
Tempos de espera: P 1 = 0; P 2 = 24; P 3 = 27 TME: (0 + 24 + 27)/3 = 17 P 1 P 2 P 3
24 27 30 0 O algoritmo mais simples: processos so seleccionados ou servidos pela ordem de chegada ready queue. Assim que a CPU libertada, o processo cabea da ready queue seleccionado e despachado para a CPU. Silberschatz, Galvin and Gagne 2002 5.11 Operating System Concepts FCFS (Cont.) Suponha que os processos chegam pela ordem: P 2 , P 3 , P 1 . A Carta de Gantt de escalonamento :
Tempos de espera P 1 = 6;
P 2 = 0 ; P 3 = 3
TME: (6 + 0 + 3)/3 = 3 Muito melhor que o caso anterior. Convoy effect: processo curto antes de processo longo P 1 P 3 P 2
6 3 30 0 Silberschatz, Galvin and Gagne 2002 5.12 Operating System Concepts Concluses FCFS O tempo mdio de espera , por vezes, bastante elevado, mas isto depende muito da durao e frequncia dos bursts. O algoritmo FCFS no preemptivo. No , pois, adequado para sistemas interactivos (time sharing) ou de tempo real. Batch Systems Pode ser Adequado Silberschatz, Galvin and Gagne 2002 5.13 Operating System Concepts Shortest-Job-First (SJF) Associa-se a cada processo (ao PCB) o tempo do seu prximo CPU burst. Usa-se estes tempos para escalonar/seleccionar o processo com o CPU burst mais pequeno. Quando dois processo tm o mesmo CPU burst, o desempate faz-se por FCFS. Dois esquemas: no-preemptivo uma vez a CPU atribuda a um processo, este no pode ser preempcionado at completar o seu CPU burst. preemptivo se um novo processo chega ready queue com um CPU burst menor que o tempo restante do processo em execuo, ento h preempo. Este esquema conhecido por Shortest-Remaining-Time-First (SRTF). SJF ptimo uma vez que minimiza o tempo mdio de espera dum dado conjunto de processos. O problema est em determinar qual o valor do prximo CPU burst dum processo. Silberschatz, Galvin and Gagne 2002 5.14 Operating System Concepts Exemplos Processo Arrival Time Burst Time P 1 0.0 7 P 2 2.0 4 P 3 4.0 1 P 4 5.0 4
SJF (no-preemptivo)
Tempo mdio de espera (0 + 6 + 3 + 7)/4 = 4
Processo Arrival Time Burst Time P 1 0.0 7 P 2 2.0 4 P 3 4.0 1 P 4 5.0 4
SJF (preemptivo)
Tempo mdio de espera (9 + 1 + 0 +2)/4 = 3 P 1 P 3 P 2
7 3 16 0 P 4
8 12 P 1 P 3 P 2
4 2 11 0 P 4
5 7 P 2 P 1
16 SJF no-preemptivo SJF preemptivo Silberschatz, Galvin and Gagne 2002 5.15 Operating System Concepts Determinio da durao do Proximo CPU Burst
Apenas uma estimativa possvel
Utilize-se uma mdia mvel baseado na durao de CPU bursts anteriores
: Def ine 4. 1 0 , 3. burst CPU proximo o para estimado valor 2. burst CPU n do verdadeira urao d t 1. n th n s s = = + o o t 1 ( ) . t n n n t o o t + = = 1 1
Valor tpico de alpha=0.5. Os bancos e Euribor Silberschatz, Galvin and Gagne 2002 5.16 Operating System Concepts Previso da durao do proximo CPU Burst Silberschatz, Galvin and Gagne 2002 5.17 Operating System Concepts Escalonamento por prioridades Processo Prioridade Burst Time P 1 3 10 P 2 1 1 P 3 3 2 P 4 4 1 P 5 2 5
no-preemptivo
Tempo mdio de espera = 8.2
P 1
P 3 P 5
1 0 P 4
6 P 2
16 18 19 O algoritmo SJF um caso particular do algoritmo de escalanomento por prioridades, em que a prioridade o prximo tempo prevsivel de CPU burst. Uma prioridade atribuda a cada processo, e o escalonador atribui a CPU ao processo com maior prioridade (menor inteiro). preemptivo no-preemptivo Se dois processos tm a mesma prioridade, o desempate feito recorrendo ao FCFS Problema inanio (starvation) processos de baixa prioridade arriscam- se a nunca executar. Soluo envelhecimento (aging) medida que o tempo passa, a prioridade dum processo aumenta. Silberschatz, Galvin and Gagne 2002 5.18 Operating System Concepts Critrios de prioridade A prioridade atribuda a um processo pode ser definida em funo dos seguintes factores: Factores internos: limites de tempo requisitos de memria n de ficheiros abertos durao mdia dos bursts de I/O durao mdia dos bursts de CPU Factores externos: importncia do processo preo pago pela utilizao proprietrio do processo Silberschatz, Galvin and Gagne 2002 5.19 Operating System Concepts Round Robin (RR) Este algoritmo foi concebido para sistemas de time-sharing. semelhante ao FCFS, mas preemptivo. Cada processo obtm uma pequena unidade de tempo na CPU (time quantum ou time slice), vulgarmente 10-100 milisegundos. Aps decorrer este tempo, o processo preempcionado e adicionado cauda da fila READY. A fila READY tratada como uma fila circular. Se h n processos na fila READY e o time quantum q, ento cada processo obtm 1/n do tempo da CPU em fatias de q unidades de tempo duma vez. Nenhum processo espera mais do que (n-1)q unidades de tempo. Desempenho q grande FIFO q pequeno q tem de ser grande relativamente comutao de contexto; caso contrrio, a sobrecarga muito elevada. Process Burst Time P 1 53 P 2 17 P 3 68 P 4 24 A Carta Gantt :
Tipicamente, turnaround mdio mais elevado do que SJF, mas tem melhor resposta. P 1 P 2 P 3 P 4 P 1 P 3 P 4 P 1 P 3 P 3 0 20 37 57 77 97 117 121 134 154 162 time quantum = 20 ms Silberschatz, Galvin and Gagne 2002 5.20 Operating System Concepts Comparao de tempos de processamento time quantum versus tempo de comutao de contexto tempo de turnaround varia com o time quantum Silberschatz, Galvin and Gagne 2002 5.21 Operating System Concepts Algorithm Evaluation Modelao e Simulao Define um workload e depois simule o desempenho de cada algoritmo para este workload. Workloads podem ser : Determinstica Define um workload baseando por exemplo em dados reais ou inventados Aleatrio utilizando processos aleatrios e probabilsticos tempo de chegada poisson burst time .. exponencial
Analise Matemtica Queueing models M/M/1 etc. Silberschatz, Galvin and Gagne 2002 5.22 Operating System Concepts Evaluation of CPU Schedulers by Simulation Silberschatz, Galvin and Gagne 2002 5.23 Operating System Concepts Fila multi-nvel Este tipo de escalonamento usado quando fcil classificar os processos em classes distintas (processos interactivos, processos batch, etc.). A fila READY particionada em vrias filas, uma por cada classe de processos: foreground (interactive) background (batch) Cada fila tem o seu prprio algoritmo de escalonamento: foreground RR background FCFS O escalonamento entre as filas tem de ser feito. Escalonamento de prioridades fixas; (i.e., serve todas as filas, desde as foreground at s background). Problema:inanio. Time slice cada fila obtm uma certa quantidade de tempo da CPU que pode ser escalonado pelos seus processos; por exemplo., 80% para foreground em RR20% para background em FCFS escalonamento de fila multi-nvel Silberschatz, Galvin and Gagne 2002 5.24 Operating System Concepts Fila multi-nvel com transbordo Um processo pode mover-se entre vrias filas; a tcnica de envelhecimento pode ser implementada desta forma. Outras caractersticas: prioridades por fila preempo generalidade configurabilidade Trs filas: Q 0 time quantum de 8 milisegundos Q 1 time quantum de 16 milisegundos Q 2 FCFS Escalonamento Um novo processo entra na fila Q 0 , a qual segue uma poltica FCFS. Quando ganha a CPU, o processo recebe 8 ms. Se no termina em 8 ms, o processo transladado para a fila Q 1 . Em Q 1 , o processo servido novamente por uma poltica de escalonamento FCFS e recebe 16 ms adicionais. Se mesmo assim no termina, o processo preempcionado e transladado para a fila Q 2 . exemplo Silberschatz, Galvin and Gagne 2002 5.25 Operating System Concepts Escalonamento Multi-Processor No existe uma soluo ptima de escalonamento mesmo para sistemas uniprocessador. O problema do escalonamento torna- se ainda mais complexo para sistemas multiprocessador. Processadores homogneos dentro do sistema multi-processador. Partilha de carga Multi-processamento assimtrico s um processador acede s estruturas de dados do sistema, aliviando a necessidade de partilha de dados. usada uma nica fila ready, e no uma fila por processador, para evitar que haja algum processador inactivo enquanto outros tm processos na suas filas ready espera. H duas polticas de escalonamento multiprocessador: Processadores auto-escalonveis. Neste caso, cada processador responsvel pela seleco dum processo existente na fila ready partilhada. Processador mestre - processador escravo. H um processador (mestre) que desempenha o papel de escalonador dos restantes (escravos) Cf a Caixa-Geral e McDonalds !! Silberschatz, Galvin and Gagne 2002 5.26 Operating System Concepts Escalonamento em tempo-real Escalonamento: Escalonamento por prioridades. Processos de tempo real tm prioridade mxima. Manuteno da prioridade. Ao contrrio doutros processos, um processo de tempo real mantm a sua prioridade. Latncia de despacho. Deve ser baixa o mais possvel. Para isso, h sistemas operativos que admitem a preempo das chamadas ao sistema de longa durao. Dois tipos de sistemas operativos de tempo real: sistemas estritos de tempo real (hard real-time systems). So necessrios para garantir a concluso duma tarefa crtica dentro duma quantidade de tempo pr-definida. sistemas latos de tempo real (soft real-time systems). So menos restritivos. Mas, os processos crticos tm sempre a mxima prioridade. Fim de Captulo