menu_book Índice

Logo UFPR

Técnicas de Escalonamento

Logo Licenciatura

DEE355 – Sistemas Operacionais

Prof. Jéferjefer@ufpr.br

docs.ufpr.br/~jefer

Objetivos:

  • Entender como o SO gerencia o processador entre tarefas (Tanenbaum, 2.4.1).
  • Explorar algoritmos para sistemas em lote, interativos e tempo real (Silberschatz, Cap. 6).
  • Aplicar escalonamento com exemplos práticos (Maziero, Cap. 6).

Versão Antiga: Clique aqui

Logo UFPR

Comportamento Temporal

Logo Licenciatura

Tempo Real: Previsibilidade para sistemas críticos (ex.: controle industrial – Tanenbaum, 2.4.4). Exigem previsibilidade em seus tempos de resposta aos eventos externos, pois geralmente estão associadas ao controle de sistemas críticos, como processos industriais, tratamento de fluxos multimídia, etc. O escalonamento de tarefas de tempo real é um problema complexo, discutido mais profundamente em [ Burns and Wellings, 1997 , Farines et al., 2000 ].

Interativas: Resposta rápida a eventos (ex.: editores, navegadores – Maziero, Cap. 6). São tarefas que recebem eventos externos (do usuário ou através da rede) e devem respondê-los rapidamente, embora sem os requisitos de previsibilidade das tarefas de tempo real. Esta classe de tarefas inclui a maior parte das aplicações dos sistemas desktop (editores de texto, navegadores Internet, jogos) e dos servidores de rede (e-mail, web, bancos de dados).

Em Lote: Foco na eficiência, sem requisitos temporais rígidos (ex.: backups – Silberschatz, Cap. 6). São tarefas sem requisitos temporais explícitos, que normalmente executam sem intervenção do usuário, como procedimentos de backup , varreduras de antivírus, cálculos numéricos longos, renderização de animações, etc.


----------------------

Tarefas orientadas a processamento ( CPU-bound tasks ): ão tarefas que usam intensivamente o processador na maior parte de sua existência. Essas tarefas passam a maior parte do tempo nos estados pronta ou executando . A conversão de arquivos de vídeo e outros processamentos numéricos longos. [Anderson et al., 2002] apresenta bons exemplos desta classe de tarefas.

Tarefas orientadas a entrada/saída (IO-bound tasks): são tarefas que dependem muito mais dos dispositivos de entrada / saída que do processador. Essas tarefas despendem boa parte de suas existências no estado suspenso, aguardando respostas às suas solicitações de leitura e / ou escrita de dados nos dispositivos de entrada / saída. Exemplos desta classe de tarefas incluem editores, compiladores e servidores de rede.

Logo UFPR

Métricas

Logo Licenciatura

Tempo de Execução (Tt) - ou de vida (turnaround time): Tempo total da criação ao fim (Maziero, Cap. 6), diz respeito ao tempo total da “vida” de cada tarefa, ou seja, o tempo decorrido entre a criação da tarefa e seu encerramento, computando todos os tempos de processamento e de espera.

Tempo de Espera (waiting time, Tw): Tempo que a tarefa aguarda na fila de prontas (Silberschatz, Cap. 6).

Tempo de Resposta (Tr): Intervalo até a primeira resposta (Tanenbaum, 2.4.1).

Objetivos

Justiça e Eficiência: Equilíbrio entre desempenho e equidade no uso do CPU.

Justiça: diz respeito à distribuição do processador entre as tarefas prontas: duas tarefas de comportamento similar devem receber tempos de processamento similares e ter durações de execução similares.

Eficiência: indica o grau de utilização do processador na execução das tarefas do usuário. Ela depende sobretudo da rapidez da troca de contexto e da quantidade de tarefas orientadas a entrada/saída no sistema (tarefas desse tipo geralmente abandonam o processador antes do fim do quantum , gerando assim mais trocas de contexto que as tarefas orientadas a processamento)

Logo UFPR

Preemptivo vs. Cooperativo

Logo Licenciatura

Preemptivo: A tarefa pode ser interrompida pelo sistema (ex.: Linux – Maziero, Cap. 6). nestes sistemas uma tarefa pode perder o processador caso termine seu quantum de tempo, execute uma chamada de sistema ou caso ocorra uma interrupção que acorde uma tarefa mais prioritária (que estava suspensa aguardando um evento).

Cooperativo: A tarefa cede o controle voluntariamente (ex.: Windows 3.x – Tanenbaum, 2.4.1), a tarefa em execução permanece no processador tanto quanto possível, só abandonando o mesmo caso termine de executar, solicite uma operação de entrada/saída ou libere explicitamente o processador, voltando à fila de tarefas prontas. Esses sistemas são chamados de cooperativos por exigir a cooperação das tarefas entre si na gestão do processador, para que todas possam executar.

Exemplo: Preempção melhora a resposta em sistemas de tempo real (Silberschatz, Cap. 6).

Curiosidade: Atualmente a maioria dos sistemas operacionais de uso geral atuais é preemptiva. Sistemas mais antigos, como o Windows 3.*, PalmOS 3 e MacOS 8 e 9 operavam de forma cooperativa. Em um sistema preemptivo, normalmente as tarefas só são interrompidas quando o processador está no modo usuário; a thread de núcleo correspondente a cada tarefa não sofre interrupções. Entretanto, os sistemas mais sofisticados implementam a preempção de tarefas também no modo núcleo. Essa funcionalidade é importante para sistemas de tempo real, pois permite que uma tarefa de alta prioridade chegue mais rapidamente ao processador quando for reativada. Núcleos de sistema que oferecem essa possibilidade são denominados núcleos preemptivos ; Solaris, Linux 2.6 e Windows NT são exemplos de núcleos preemptivo

Logo UFPR

FCFS (First-Come, First-Served)

Logo Licenciatura

Definição: Executa as tarefas na ordem de chegada (Silberschatz, Cap. 6).

Exemplo:

Vetor FCFS

Escalonamento FCFS

Tabela de Tarefas

Tarefa Ingresso (ti) Duração Término Turnaround (Tt) Espera (Tw)
T1 0 5 5 5 0
T2 0 2 7 7 5
T3 1 4 11 10 6
T4 3 3 14 11 8

Diagrama de Gantt

T1
T2
T3
T4

Legenda (Tt e Tw por tarefa)

Tarefa Cor Turnaround (Tt) Espera (Tw)
T1 5 0
T2 7 5
T3 10 6
T4 11 8
Média FCFS

Resumo

Tempo médio de execução (Tt médio): 8,25

Tempo médio de espera (Tw médio): 4,75

Logo UFPR

Round Robin (RR)

Logo Licenciatura

Definição: FCCS + Preempção - adição da preempção por tempo ao escalonamento FCFS dá origem a outro algoritmo de escalonamento bastante popular, conhecido como escalonamento por revezamento, ou Round-Robin. Escalonamento com preempção em que cada tarefa recebe uma fatia de tempo (quantum) e, se não for concluída, volta para o final da fila.

Vetor FCFS

Exemplo com quantum = 2:

Escalonamento Round Robin

Tabela de Tarefas

Tarefa Ingresso (ti) Duração Término Turnaround (Tt) Espera (Tw)
T1 0 5 13 13 8
T2 0 2 4 4 2
T3 1 4 12 11 7
T4 3 3 14 11 8

Diagrama de Gantt

T1
T1
T1
T2
T3
T3
T4
T4

Legenda (Tt e Tw por tarefa)

Tarefa Cor Turnaround (Tt) Espera (Tw)
T1 13 8
T2 4 2
T3 11 7
T4 11 8
Média FCFS

Resumo

Tempo médio de execução (Tt médio): 9,75

Tempo médio de espera (Tw médio): 6,25

Logo UFPR

SJF (Shortest Job First)

Logo Licenciatura

Definição: Seleciona a tarefa com o menor tempo de execução estimado (não preemptivo) (Silberschatz, Cap. 6).

Exemplo: T1(5s), T2(2s), T3(4s) e T4(3s) – a ordem SJF, considerando as chegadas, é: T2, T3, T4 e T1.

Escalonamento SJF

Tabela de Tarefas

Tarefa Ingresso (ti) Duração Término Turnaround (Tt) Espera (Tw)
T1 0 5 14 14 9
T2 0 2 2 2 0
T3 1 4 6 5 1
T4 3 3 9 6 3

Diagrama de Gantt

Vetor FCFS
T2
T3
T4
T1

Legenda (Tt e Tw por tarefa)

Tarefa Cor Turnaround (Tt) Espera (Tw)
T1 14 9
T2 2 0
T3 5 1
T4 6 3
Vetor FCFS

Resumo

Tempo médio de execução (Tt médio): 6,75

Tempo médio de espera (Tw médio): 3,25

Logo UFPR

SRTF (Shortest Remaining Time First)

Logo Licenciatura

Definição: Versão preemptiva do SJF, onde a tarefa com o menor tempo restante pode interromper a execução atual (Tanenbaum, 2.4).

Exemplo 1: Considerando T1 (8s), T2 (4s), T3 (2s) e T4 (1s) com diferentes tempos de ingresso, o exemplo ilustra a preempção quando uma tarefa com menor tempo restante chega.

Escalonamento SRTF - Exemplo 1

Tabela de Tarefas

Tarefa Ingresso (ti) Duração Término Turnaround (Tt) Espera (Tw)
T1 0 8 15 15 7
T2 1 4 11 10 6
T3 2 2 4 2 0
T4 3 1 5 2 1

Diagrama de Gantt

0
2
4
5
9
15
T1
T1
T2
T3
T4

Legenda (Tt e Tw por tarefa)

Tarefa Cor Turnaround (Tt) Espera (Tw)
T1 15 7
T2 10 6
T3 2 0
T4 2 1

Resumo

Cálculo de Turnaround Time (Tt)

Tt(t1) = tfim(t1) – tingresso(t1) = 15 – 0 = 15
Tt(t2) = tfim(t2) – tingresso(t2) = 11 – 1 = 10
Tt(t3) = tfim(t3) – tingresso(t3) = 4 – 2 = 2
Tt(t4) = tfim(t4) – tingresso(t4) = 5 – 3 = 2

Tt = (Tt(t1) + Tt(t2) + Tt(t3) + Tt(t4)) / 4 = (15 + 10 + 2 + 2) / 4 = 29 / 4 = 7,25

Cálculo de Tempo de Espera (Tw)

tw(ti) = Tt(ti) – duração(ti)

tw(t1) = 15 – 8 = 7
tw(t2) = 10 – 4 = 6
tw(t3) = 2 – 2 = 0
tw(t4) = 2 – 1 = 1

Tw = (tw(t1) + tw(t2) + tw(t3) + tw(t4)) / 4 = (7 + 6 + 0 + 1) / 4 = 14 / 4 = 3,5

Pontos de Preempção:

  • Em t = 2: T3 chega e preempta T1 (T3 tem 2s restantes, enquanto T1 ainda tem 6s)
  • Em t = 3: T4 chega, mas não preempta T3 (T3 tem 1s restante, T4 tem 1s - continua T3)
  • Em t = 4: T3 termina, T4 inicia (menor tempo restante: 1s)
  • Em t = 5: T4 termina, T2 inicia (menor tempo restante: 4s)
  • Em t = 9: T2 termina, T1 continua (único restante com 6s)

Tempo médio de execução (Tt médio): 7,25

Tempo médio de espera (Tw médio): 3,5

Escalonamento SRTF - Exemplo 2 (Mais Trocas)

Exemplo 2: Considerando T1 (7s), T2 (3s), T3 (4s), T4 (2s) e T5 (1s) com diferentes tempos de ingresso, demonstrando múltiplas preempções.

Tabela de Tarefas

Tarefa Ingresso (ti) Duração Término Turnaround (Tt) Espera (Tw)
T1 0 7 16 16 9
T2 2 3 9 7 4
T3 4 4 13 9 5
T4 6 2 11 5 3
T5 8 1 10 2 1

Diagrama de Gantt

0
2
4
6
8
9
10
11
13
16
T1
T1
T2
T2
T2
T3
T3
T4
T4
T5

Legenda (Tt e Tw por tarefa)

Tarefa Cor Turnaround (Tt) Espera (Tw)
T1 16 9
T2 7 4
T3 9 5
T4 5 3
T5 2 1

Resumo do Exemplo 2

Cálculo de Turnaround Time (Tt)

Tt(t1) = tfim(t1) – tingresso(t1) = 16 – 0 = 16
Tt(t2) = tfim(t2) – tingresso(t2) = 9 – 2 = 7
Tt(t3) = tfim(t3) – tingresso(t3) = 13 – 4 = 9
Tt(t4) = tfim(t4) – tingresso(t4) = 11 – 6 = 5
Tt(t5) = tfim(t5) – tingresso(t5) = 10 – 8 = 2

Tt = (Tt(t1) + Tt(t2) + Tt(t3) + Tt(t4) + Tt(t5)) / 5 = (16 + 7 + 9 + 5 + 2) / 5 = 39 / 5 = 7,8

Cálculo de Tempo de Espera (Tw)

tw(ti) = Tt(ti) – duração(ti)

tw(t1) = 16 – 7 = 9
tw(t2) = 7 – 3 = 4
tw(t3) = 9 – 4 = 5
tw(t4) = 5 – 2 = 3
tw(t5) = 2 – 1 = 1

Tw = (tw(t1) + tw(t2) + tw(t3) + tw(t4) + tw(t5)) / 5 = (9 + 4 + 5 + 3 + 1) / 5 = 22 / 5 = 4,4

Pontos de Preempção (Exemplo 2):

  • Em t = 2: T2 chega e preempta T1 (T2 tem 3s restantes, T1 tem 5s)
  • Em t = 4: T3 chega e preempta T2 (T3 tem 4s restantes, T2 tem 1s)
  • Em t = 6: T4 chega, mas não interrompe T3 (ambos têm 2s restantes, T3 continua)
  • Em t = 7: T4 preempta T3 (T4 tem 2s restantes, T3 tem 1s)
  • Em t = 8: T5 chega, mas não interrompe T4 (T5 tem 1s restante, T4 tem 1s)
  • Em t = 9: T4 termina, T5 inicia (menor tempo restante: 1s)
  • Em t = 10: T5 termina, T4 continua (menor tempo restante: 1s)
  • Em t = 11: T4 termina, T3 continua (menor tempo restante: 2s)
  • Em t = 13: T3 termina, T1 continua (único restante com 5s)

Tempo médio de execução (Tt médio): 7,8

Tempo médio de espera (Tw médio): 4,4

Logo UFPR

Escalonamento por Prioridade

Logo Licenciatura

Definição: As tarefas são escalonadas conforme sua prioridade. Definição das prioridades:

Fatores externos (estático): são informações providas pelo usuário ou o administrador do sistema, que o escalonador não conseguiria estimar sozinho. Os fatores externos mais comuns são a classe do usuário (administrador, diretor, estagiário) o valor pago pelo uso do sistema (serviço básico, serviço premium ) e a importância da tarefa em si (um detector de intrusão, um script de reconfiguração emergencial, etc.).

Fatores internos (Dinâmico): são informações que podem ser obtidas ou estimadas pelo escalonador, com base em dados disponíveis no sistema local. Os fatores internos mais utilizados são a idade da tarefa, sua duração estimada, sua interatividade, seu uso de memória ou de outros recursos, etc.

Curiosidades:


No Linux (núcleo 2.4 e sucessores)

Tarefas interativas:: a escala de prioridades é negativa: a prioridade de cada tarefa vai de -20 (mais importante) a +19 (menos importante) e pode ser ajustada através dos comandos nice e renice . Esta escala é padronizada em todos os sistemas UNIX.

Tarefas de tempo real: a prioridade de cada tarefa vai de 1 (mais importante) a 99 (menos importante). As tarefas de tempo real têm precedência sobre as tarefas interativas e são escalonadas usando políticas distintas. Somente o administrador pode criar tarefas de tempo real

Fatores internos (Dinâmico): são informações que podem ser obtidas ou estimadas pelo escalonador, com base em dados disponíveis no sistema local. Os fatores internos mais utilizados são a idade da tarefa, sua duração estimada, sua interatividade, seu uso de memória ou de outros recursos, etc.


Prioridades Window:

Windows 2000 e sucessores: processos e threads são associados a classes de prioridade (6 classes para processos e 7 classes para threads ); a prioridade final de uma thread depende de sua prioridade de sua própria classe de prioridade e da classe de prioridade do processo ao qual está associada, assumindo valores entre 0 e 31. 4: baixa, 6: abaixo do normal, 8: normal, 10:acima do normal, 13:alta, 24:tempo real.

Outros Escalonadores:

escalonadores de tempo real [Farines et al., 2000]
escalonadores multimídia [Nieh and Lam, 1997]
escalonadores justos [Kay and Lauder, 1988, Ford and Susarla, 1996]
escalonadores multiprocessador [Black, 1990]
multicore [Boyd-Wickizer et al., 2009]


Aqui adotamos a convenção: quanto maior o número, maior a prioridade.

Exemplo:
T1(ingresso=0, dur=5, prio=2),
T2(ingresso=0, dur=2, prio=3),
T3(ingresso=1, dur=4, prio=1),
T4(ingresso=3, dur=3, prio=4).

Execução (não preemptiva): T2 (0–2) → T1 (2–7) → T4 (7–10) → T3 (10–14).

Tabela de Tarefas

Tarefa Ingresso Duração Prioridade Término Turnaround (Tt) Espera (Tw)
T1 0 5 2 7 7 2
T2 0 2 3 2 2 0
T3 1 4 1 14 13 9
T4 3 3 4 10 7 4

Diagrama de Gantt

Vetor FCFS
T2
T1
T4
T3

Legenda (Tt e Tw por tarefa)

Tarefa Cor Turnaround (Tt) Espera (Tw)
T1 7 2
T2 2 0
T4 7 4
T3 13 9

Resumo

Cálculo do Turnaround (Tt)

Tt(t2) = 2 – 0 = 2
Tt(t1) = 7 – 0 = 7
Tt(t4) = 10 – 3 = 7
Tt(t3) = 14 – 1 = 13

Tt = (2 + 7 + 7 + 13) / 4 = 29 / 4 = 7,25

Cálculo do Tempo de Espera (Tw)

tw(ti) = Tt(ti) – duração(ti)

tw(t2) = 2 – 2 = 0
tw(t1) = 7 – 5 = 2
tw(t4) = 7 – 3 = 4
tw(t3) = 13 – 4 = 9

Tw = (0 + 2 + 4 + 9) / 4 = 15 / 4 = 3,75

Logo:

Vetor FCFS

Tempo médio de execução (Tt médio): 7,25

Tempo médio de espera (Tw médio): 3,75


-----------------------------------------------------------------


Escalonamento por Prioridades Preemptivo


Definição: A cada instante, o processo com maior valor de prioridade (nesta convenção) tem preferência e pode preemptar o que estiver rodando.


Tarefas:
T1(ing=0, dur=5, prio=2), T2(ing=0, dur=2, prio=3), T3(ing=1, dur=4, prio=1), T4(ing=3, dur=3, prio=4).


Cronograma resultante:
• T2 roda de 0 a 2 (conclui)
• T1 roda de 2 a 3 (1 unidade), mas é preemptada em t=3
• T4 chega em t=3 e roda até 6 (conclui)
• T1 retorna de 6 a 10 (conclui)
• T3 roda de 10 a 14 (conclui)


Tabela de Tarefas

Vetor FCFS
Tarefa Ingresso Duração Prioridade Término Turnaround (Tt) Espera (Tw)
T1 0 5 2 10 10 5
T2 0 2 3 2 2 0
T3 1 4 1 14 13 9
T4 3 3 4 6 3 0

Diagrama de Gantt

T2
T1
T4
T1
T3

Legenda (Tt e Tw por tarefa)

Tarefa Cor Turnaround Espera
T1 10 5
T2 2 0
T3 13 9
T4 3 0


Cálculo do Turnaround (Tt)

Tt(t2) = 2 – 0 = 2
Tt(t4) = 6 – 3 = 3
Tt(t1) = 10 – 0 = 10
Tt(t3) = 14 – 1 = 13

Tt = (2 + 3 + 10 + 13) / 4 = 28 / 4 = 7

Cálculo do Tempo de Espera (Tw)

tw(ti) = Tt(ti) – duração(ti)

tw(t2) = 2 – 2 = 0
tw(t4) = 3 – 3 = 0
tw(t1) = 10 – 5 = 5
tw(t3) = 13 – 4 = 9

Tw = (0 + 0 + 5 + 9) / 4 = 14 / 4 = 3,5


Resumo

Vetor FCFS

Tempo médio de execução (Tt médio): 7,00

Tempo médio de espera (Tw médio): 3,50

Logo UFPR

Prática

Logo Licenciatura

Terminal:

  • nice -n 10 sleep 5 & – Executa com baixa prioridade.
  • ps -l | grep sleep – Verifica a prioridade (coluna NI).
  • renice 5 -p $(pidof sleep) – Ajusta a prioridade.

Exemplo em C – Simulação RR:

#include 
#include 
#define QUANTUM 2
void task(int id, int duration) {
    for (int t = 0; t < duration; t += QUANTUM) {
        printf("T%d executa (%d/%d)\n", id, t+QUANTUM, duration);
        sleep(QUANTUM);
    }
}
int main() {
    task(1, 3);
    task(2, 5);
    task(3, 4);
    return 0;
}
        

Atividade: Calcule Tt e Tw para FCFS, RR (quantum = 2), SJF e SRTF usando: T1 (3s), T2 (5s) e T3 (4s).


-----------------------------------------

Questão

Dadas as tarefas, faça os escalonamentos pedidos, calcule o tempo total das tarefas e o tempo total de espera:

Tarefa Ingresso Duração Prioridade
T1 0 1 1
T2 0 4 2
T3 2 3 3
T4 3 3 4
T5 2 2 2

Resposta Detalhada

1) FCFS (FIFO)

Passo a Passo

- t=0: Chegam T1(dur=1) e T2(dur=4). T1 executa de 0 a 1.
- t=1: T1 terminou. T2 inicia (1..5).
- t=2: T3(dur=3) e T5(dur=2) chegam, mas T2 não é interrompida (FCFS).
- t=3: T4(dur=3) chega, T2 continua até 5.
- t=5: T2 terminou. Agora T3, T5 e T4 estão na fila (por ordem de chegada). T3 chegou antes de T5, mas a ordem FCFS considera T3 (ing=2) e T5 (ing=2) empatados; se mantivermos T3 primeiro, T3 roda 5..8, depois T5(8..10), e finalmente T4(10..13).

Cálculos

  • T1: Término=1 → Tt=1−0=1, Tw=1−1=0
  • T2: Término=5 → Tt=5−0=5, Tw=5−4=1
  • T3: Término=8 → Tt=8−2=6, Tw=6−3=3
  • T5: Término=10 → Tt=10−2=8, Tw=8−2=6
  • T4: Término=13 → Tt=13−3=10, Tw=10−3=7

Tempo total das tarefas (ΣTt): 1+5+6+8+10 = 30
Tempo total de espera (ΣTw): 0+1+3+6+7 = 17

Diagrama de Gantt (FCFS)

T1
T2
T3
T5
T4

2) Round Robin (q=1)

Passo a Passo

Supondo quantum = 1:
- t=0..1: T1 executa (termina).
- t=1..2: T2 (restam 3).
- t=2: Chegam T3(dur=3) e T5(dur=2). Próxima fatia: T3(2..3).
- t=3: Chega T4(dur=3). Próxima fatia: T5(3..4).
- t=4..5: T2(agora 2 unidades restantes).
- t=5..6: T3(agora 1 unid. rest.).
- t=6..7: T4(2 unid. rest.).
- t=7..8: T5(termina).
- t=8..9: T2(1 unid. rest.).
- t=9..10: T3(termina).
- t=10..11: T4(1 unid. rest.).
- t=11..12: T2(termina).
- t=12..13: T4(termina).

Cálculos

  • T1: Término=1 → Tt=1, Tw=0
  • T2: Término=12 → Tt=12, Tw=12−4=8
  • T3: Término=10 → Tt=10−2=8, Tw=8−3=5
  • T4: Término=13 → Tt=13−3=10, Tw=10−3=7
  • T5: Término=8 → Tt=8−2=6, Tw=6−2=4

ΣTt = 1+12+8+10+6 = 37
ΣTw = 0+8+5+7+4 = 24

Diagrama de Gantt (Round Robin)

T1
T2
T3
T5
T2
T3
T4
T5
T2
T3
T4
T2
T4

3) SJF (não preemptivo)

Passo a Passo

- t=0: Chegam T1(dur=1) e T2(dur=4). A mais curta é T1 → 0..1.
- t=1: T1 terminou. T2 é a única disponível; executa 1..5.
- t=2: Chegam T3(dur=3) e T5(dur=2), mas T2 não é interrompida (SJF não preemptivo).
- t=3: T4(dur=3) chega, T2 continua até 5.
- t=5: T2 terminou. T3, T4, T5 estão prontos. O mais curto é T5(dur=2) → 5..7.
- t=7: Restam T3(dur=3) e T4(dur=3). T3 chegou primeiro, executa 7..10, depois T4(10..13).

Cálculos

  • T1: Término=1 → Tt=1−0=1, Tw=1−1=0
  • T2: Término=5 → Tt=5−0=5, Tw=5−4=1
  • T5: Término=7 → Tt=7−2=5, Tw=5−2=3
  • T3: Término=10 → Tt=10−2=8, Tw=8−3=5
  • T4: Término=13 → Tt=13−3=10, Tw=10−3=7

ΣTt = 1+5+5+8+10 = 29
ΣTw = 0+1+3+5+7 = 16

Diagrama de Gantt (SJF)

T1
T2
T5
T3
T4

4) Prioridade (não preemptivo)

Aqui supomos que menor número = maior prioridade.

Passo a Passo

- t=0: Chegam T1(prio=1) e T2(prio=2). T1 é mais prioritário → 0..1.
- t=1: T1 terminou. T2 é a única pronta, executa 1..5.
- t=2: Chegam T3(prio=3) e T5(prio=2), mas T2 não é interrompida.
- t=3: Chega T4(prio=4), T2 continua até 5.
- t=5: T2 terminou. Agora T3, T4, T5. A maior prioridade é T5(prio=2) → 5..7.
- t=7: Sobra T3(prio=3) e T4(prio=4). T3 executa 7..10, depois T4(10..13).

Cálculos

  • T1: Término=1 → Tt=1−0=1, Tw=1−1=0
  • T2: Término=5 → Tt=5−0=5, Tw=5−4=1
  • T5: Término=7 → Tt=7−2=5, Tw=5−2=3
  • T3: Término=10 → Tt=10−2=8, Tw=8−3=5
  • T4: Término=13 → Tt=13−3=10, Tw=10−3=7

ΣTt = 29
ΣTw = 16

Diagrama de Gantt (Prioridade)

T1
T2
T5
T3
T4

Comparação Final

Algoritmo Ordem de Execução Σ(Tt) Σ(Tw)
FCFS T1 → T2 → T3 → T5 → T4 30 17
Round Robin (q=1) fatias alternadas 37 24
SJF T1 → T2 → T5 → T3 → T4 29 16
Prioridade T1 → T2 → T5 → T3 → T4 29 16

Menor tempo total (ΣTt) e menor espera (ΣTw) foram obtidos por SJF e Prioridade (29 e 16, respectivamente).

Logo UFPR

Mini-Quiz

Logo Licenciatura
Logo UFPR

Bibliografia

Logo Licenciatura

- Silberschatz et al., Fundamentos de SOs, 8ª ed., LTC, 2010, Cap. 5. slide
- Tanenbaum, SOs Modernos, 3ª ed., Prentice Hall, 2009, Cap. 2.4.
- Maziero, SOCM, Cap. 6 (link).