Escalonamento de processos
FCFS, SJF, SRTF, Round Robin, prioridades, justiça proporcional e tempo real.
Quatro compilações estão prontas e há uma só CPU. Dar primeiro serviço à mais curta reduz certas esperas; interromper uma compilação longa pode dar resposta mais cedo às restantes. O escalonador escolhe uma tarefa pronta. Para comparar políticas, fixamos chegadas, rajadas, desempates e custos.
Hipóteses e métricas
Nos exemplos, temos uma CPU, uma rajada de CPU por processo, sem I/O e custo de troca de contexto nulo. Uma política não preemptiva mantém a tarefa até terminar a rajada ou bloquear. Uma política preemptiva pode interrompê-la e devolvê-la à fila de prontos.
Sejam a chegada, a duração da rajada, o primeiro início e o fim. Definimos:
é retorno (turnaround), espera na fila de prontos e resposta até ao primeiro serviço. Se houver I/O, subtrai também o tempo bloqueado para obter a espera. Em tempo real, alguns textos chamam resposta a ; verifica a definição do enunciado.
Utilização é a fração de tempo em que a CPU trabalha. Throughput conta tarefas concluídas por unidade de tempo. Melhorar uma média pode piorar a resposta de uma tarefa específica.
FCFS e SJF com a mesma entrada
Cada política é uma regra de escolha perante a fila de prontos. FCFS escolhe por ordem de chegada. SJF não preemptivo escolhe a menor rajada entre as tarefas já prontas, sem adivinhar chegadas futuras. Só depois de fixar a regra é que a tabela compara os resultados.
Todos chegam em 0, por ordem P1, P2, P3, P4, com durações 6, 3, 2 e 4.
| Política | Intervalos | Esperas de P1, P2, P3, P4 | Média |
|---|---|---|---|
| FCFS | P1: 0–6, P2: 6–9, P3: 9–11, P4: 11–15 | 0, 6, 9, 11 | 6,5 |
| SJF | P3: 0–2, P2: 2–5, P4: 5–9, P1: 9–15 | 9, 2, 0, 5 | 4 |
Um processo longo à frente faz os curtos esperar, ou seja tens o efeito de comboio.
Com todas disponíveis e durações conhecidas, ordenar por duração minimiza a espera média, mas não resolve automaticamente todas as situações com chegadas futuras.
A duração pode ser estimada por média exponencial:
é a rajada medida e a previsão anterior. Para , e , a próxima previsão é 6. Um elevado dá mais peso à medição recente.
Chegadas diferentes e SRTF
A chega em 0 com duração 5, B em 1 com duração 3 e C em 2 com duração 1. Em SJF não preemptivo, A começa por ser o único disponível e corre até 5. Seguem-se C até 6 e B até 9. As esperas são A=0, B=5, C=3, média .
SRTF escolhe o menor tempo restante. Usamos desempate pela chegada mais antiga:
| Instante | Decisão |
|---|---|
| 0 | A começa |
| 1 | A tem 4 restantes; B tem 3, por isso B interrompe A |
| 2 | B tem 2 restantes; C tem 1, por isso C corre |
| 3 | C termina; B tem 2 e A tem 4, por isso B retoma |
| 5 | B termina e A retoma até 9 |
Fins A=9, B=5, C=3. Esperas , e , média . Ao surgir uma tarefa curta, compara com o tempo restante da atual, não com a sua duração inicial.
Round Robin
Round Robin dá até um quantum a cada tarefa e coloca no fim da fila quem ainda não terminou. Com os quatro processos do primeiro exemplo e :
Os fins são 14, 6, 8 e 15; as esperas são 8, 3, 6 e 11, média 7. Segue a fila depois de cada fatia: P1 corre 0-3 e vai para o fim; P2 corre 3-6 e termina; P3 corre 6-8 e termina; P4 corre 8-11 e volta ao fim; P1 corre 11-14 e termina; P4 corre 14-15 e termina. P1 não espera apenas até à primeira fatia: volta a esperar enquanto outros correm. Os tempos de primeira resposta são 0, 3, 6 e 8. FCFS tinha 0, 6, 9 e 11, por isso Round Robin melhora aqui a resposta dos últimos, embora a espera média aumente.
Para comparar, mantém as mesmas rajadas e muda só o quantum para 2. O traço fica:
| Intervalo | Processo | Efeito no fim da fatia |
|---|---|---|
| 0–2 | P1 | Restam 4; volta ao fim |
| 2–4 | P2 | Resta 1; volta ao fim |
| 4–6 | P3 | Termina |
| 6–8 | P4 | Restam 2; volta ao fim |
| 8–10 | P1 | Restam 2; volta ao fim |
| 10–11 | P2 | Termina |
| 11–13 | P4 | Termina |
| 13–15 | P1 | Termina |
P1, P2, P3 e P4 terminam em 15, 11, 6 e 13. As esperas são 15-6=9, 11-3=8, 6-2=4 e 13-4=9, média 7,5. Diminuir o quantum não garante reduzir a espera média: o objetivo de resposta pode exigir outro compromisso.
Um quantum muito grande aproxima o modelo de FCFS. Um quantum muito pequeno aumenta a frequência de trocas. Se cada fatia útil tiver duração e cada troca custo , uma aproximação à fração útil é , desde que existam tarefas para alternar e fatias completas.
Quando a aproximação falha
A fração supõe fatias cheias e fila sempre ocupada. Com rajadas mais curtas que o quantum ou CPU por vezes sem trabalho, mede antes os intervalos reais de execução e troca.
Prioridades e filas
Uma prioridade fixa pode deixar uma tarefa esperar indefinidamente se chegam sempre tarefas de prioridade superior. Isto é inanição. Aging aumenta a prioridade de quem espera para combater esse problema.
Em filas multinível, tarefas de classes diferentes ficam em filas fixas, que podem ter políticas próprias. É preciso definir como a CPU é repartida entre filas. Prioridade estrita entre elas pode causar inanição; quotas de tempo dão outro compromisso.
Em filas multinível com realimentação, ou MLFQ, as tarefas podem mudar de fila segundo o comportamento observado. Um modelo comum começa com prioridade alta, reduz a prioridade de quem consome a sua quota e periodicamente promove tarefas para evitar inanição. Especifica os quantums e as regras de promoção: MLFQ não designa um único algoritmo com resultados universais.
Para tarefas periódicas, como ler um sensor de 4 em 4 ms, usa o modelo de custo e período da secção de tempo real, não uma fila multinível genérica. O CFS histórico e o EEVDF atual do Linux inspiram-se em justiça proporcional, mas os seus detalhes e parâmetros não são o modelo de resposta dos exercícios.
Justiça proporcional e Linux
O modelo CFS organiza tarefas por vruntime, tempo executado ponderado pelo peso. Escolher quem tem menor vruntime tenta compensar quem recebeu menos CPU. Maior peso faz o vruntime crescer mais devagar para a mesma duração física, dando uma maior quota de CPU. Em nice, valores menores correspondem a maior prioridade e peso; não invertas esta relação.
Por exemplo, se os pesos de A e B são 2 e 1, a divisão ideal com ambos sempre prontos é para A e para B. Uma árvore ordenada permite encontrar o menor vruntime. Este é um modelo estudado; Linux moderno está a transitar para EEVDF, que escolhe entre tarefas elegíveis pela deadline virtual. Não confundir a deadline virtual com o prazo físico de uma tarefa de tempo real.
Tempo real: RMS e EDF
Uma tarefa periódica tem custo máximo , período e deadline. Uma hard deadline é um requisito cujo incumprimento é falha; uma soft deadline admite atraso com perda de qualidade.
No modelo com uma CPU, tarefas independentes, preempção, custo desprezável e deadlines iguais aos períodos, RMS dá prioridade fixa ao menor período. Para tarefas, a condição suficiente
prova escalonabilidade. Exceder o limite não prova impossibilidade: podes precisar de analisar a linha do tempo ou os tempos de resposta. EDF escolhe a job pronta com deadline absoluta mais próxima. Nas mesmas hipóteses, é o critério de escalonabilidade de EDF.
Para A com e B com , . O limite de RMS para duas tarefas é cerca de 0,828, por isso ambos os critérios aceitam o conjunto. Para A com e B com , passa em EDF, mas não no limite suficiente de RMS. Neste caso RMS falha: A corre 0–2, B 2–4, A 4–6, e a primeira job de B ainda precisa de uma unidade na sua deadline 6.
Exercícios
Espera média com preempção
A chega em 0 com duração 5, B em 1 com 3 e C em 2 com 1. Aplica SRTF, sem custos e com desempate pela chegada mais antiga. Qual é a espera média? Arredonda a duas casas.
Pista
Mais uma pista
Solução
A corre 0–1, B 1–2, C 2–3, B 3–5 e A 5–9. Cada chegada exige comparar tempos restantes. As esperas são 9-0-5=4, 5-1-3=1 e 3-2-1=0. A média é 5/3, arredondada para 1,67.
Erros frequentes
Subtrair só a chegada ou comparar a nova tarefa com a duração original da atual.
Espera depois de várias fatias
P1 e P2 chegam em 0, nesta ordem, com durações 5 e 4. Round Robin tem quantum 2, sem custos. Quanto espera P2 no total?
Pista
Mais uma pista
Solução
P2 termina em 8. O retorno é 8 e a duração é 4, por isso espera 4 unidades, não 5. A espera é 2 antes da primeira fatia e 2 entre as duas fatias.
Erros frequentes
Confundir a espera com o instante de fim ou com o retorno do outro processo.
Exceder um limite suficiente
Duas tarefas têm utilização total 0,9. O limite suficiente de RMS é aproximadamente 0,828. Isto prova que RMS falha? E o que permite concluir EDF numa CPU, com tarefas independentes e preemptivas, custos desprezáveis e deadlines iguais aos períodos?
Pista
Um teste suficiente pode ser inconclusivo fora do limite.
Mais uma pista
Para EDF, compara a utilização com 1 nas hipóteses indicadas.
Solução
Exceder 0,828 não prova falha de RMS; é preciso outro teste ou analisar a execução. No modelo indicado, EDF admite utilização até 1, por isso 0,9 cumpre o critério.
Confere a tua resposta:
- Distingui condição suficiente de necessária.
- Indiquei as hipóteses de EDF.
- Não concluí impossibilidade só pelo limite de RMS.
Erros frequentes
Usar uma condição suficiente como necessária ou aplicar EDF sem verificar as deadlines.
FCFS e SJF com uma chegada tardia
P1 chega em 0 com rajada 4; P2 chega em 1 com rajada 2; P3 chega em 2 com rajada 1. Uma CPU, sem I/O nem custos de troca. Aplica FCFS e SJF não preemptivo. Desenha os intervalos, calcula a espera de cada processo e a média. Neste modelo, espera e primeira resposta coincidem?
Pista
Solução
Em 0 só P1 está pronto. Ambas as políticas o executam até 4; SJF não fica à espera de uma tarefa curta futura.
FCFS segue P2 de 4 a 6 e P3 de 6 a 7. As esperas são 0, 4-1=3 e 6-2=4; a média é 7/3, cerca de 2,33.
Em SJF, no instante 4 estão disponíveis P2 e P3. Escolhe P3 de 4 a 5 e P2 de 5 a 7. As esperas de P1, P2, P3 são 0, 5-1=4 e 4-2=2; a média é 2. Espera e primeira resposta coincidem aqui, pois cada processo tem uma única rajada não preemptiva e sem I/O.
Confere a tua resposta:
- Comecei P1 em 0 sem esperar por chegadas futuras.
- Obtive fins 4,6,7 em FCFS e 4,7,5 em SJF.
- Calculei espera e primeira resposta de cada processo.
Espera pronta e espera por I/O
Uma CPU usa Round Robin com quantum 2 e custos nulos. A e B chegam em 0, nesta ordem; C chega em 1. A executa uma rajada de CPU de 2, bloqueia durante 3 unidades de I/O e volta para uma rajada de CPU de 1. B tem uma rajada de 5 e C uma de 1. Quem termina I/O entra no fim da fila de prontos. I/O não ocupa a CPU.
Desenha a linha do tempo e calcula, por processo, retorno, tempo à espera de CPU e primeira resposta. Em 5, B já está na fila antes de A regressar.
Pista
Solução
O traço é A 0-2, B 2-4, C 4-5, B 5-7, A 7-8, B 8-9. A está bloqueado de 2 a 5 e não recebe fatias nesse intervalo. Em 4, B volta ao fim da fila atrás de C; quando A regressa, fica atrás de B.
| Processo | Retorno | Espera por CPU | Primeira resposta |
|---|---|---|---|
| A | 8-0=8 | 8-3-3=2 | 0 |
| B | 9-0=9 | 9-5=4 | 2 |
| C | 5-1=4 | 4-1=3 | 4-1=3 |
A usou três unidades de CPU e esteve três bloqueado. As outras duas são espera na fila de prontos, de 5 a 7. Subtrair apenas a CPU ao retorno daria 5 e confundiria espera por I/O com espera por CPU.
Confere a tua resposta:
- Retirei A da fila de prontos durante as três unidades de I/O.
- Obtive fins A=8, B=9 e C=5.
- Separei as esperas prontas 2, 4 e 3 do tempo bloqueado.