DEE355 – Sistemas Operacionais
Prof. Jéfer – jefer@ufpr.br
Objetivos:
Versão Antiga: Clique aqui
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.
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).
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)
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
Definição: Executa as tarefas na ordem de chegada (Silberschatz, Cap. 6).
Exemplo:
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 |
Tarefa | Cor | Turnaround (Tt) | Espera (Tw) |
---|---|---|---|
T1 | 5 | 0 | |
T2 | 7 | 5 | |
T3 | 10 | 6 | |
T4 | 11 | 8 |
Tempo médio de execução (Tt médio): 8,25
Tempo médio de espera (Tw médio): 4,75
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.
Exemplo com quantum = 2:
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 |
Tarefa | Cor | Turnaround (Tt) | Espera (Tw) |
---|---|---|---|
T1 | 13 | 8 | |
T2 | 4 | 2 | |
T3 | 11 | 7 | |
T4 | 11 | 8 |
Tempo médio de execução (Tt médio): 9,75
Tempo médio de espera (Tw médio): 6,25
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.
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 |
Tarefa | Cor | Turnaround (Tt) | Espera (Tw) |
---|---|---|---|
T1 | 14 | 9 | |
T2 | 2 | 0 | |
T3 | 5 | 1 | |
T4 | 6 | 3 |
Tempo médio de execução (Tt médio): 6,75
Tempo médio de espera (Tw médio): 3,25
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.
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 |
Tarefa | Cor | Turnaround (Tt) | Espera (Tw) |
---|---|---|---|
T1 | 15 | 7 | |
T2 | 10 | 6 | |
T3 | 2 | 0 | |
T4 | 2 | 1 |
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
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:
Tempo médio de execução (Tt médio): 7,25
Tempo médio de espera (Tw médio): 3,5
Exemplo 2: Considerando T1 (7s), T2 (3s), T3 (4s), T4 (2s) e T5 (1s) com diferentes tempos de ingresso, demonstrando múltiplas preempções.
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 |
Tarefa | Cor | Turnaround (Tt) | Espera (Tw) |
---|---|---|---|
T1 | 16 | 9 | |
T2 | 7 | 4 | |
T3 | 9 | 5 | |
T4 | 5 | 3 | |
T5 | 2 | 1 |
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
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):
Tempo médio de execução (Tt médio): 7,8
Tempo médio de espera (Tw médio): 4,4
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.
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]
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).
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 |
Tarefa | Cor | Turnaround (Tt) | Espera (Tw) |
---|---|---|---|
T1 | 7 | 2 | |
T2 | 2 | 0 | |
T4 | 7 | 4 | |
T3 | 13 | 9 |
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
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:
Tempo médio de execução (Tt médio): 7,25
Tempo médio de espera (Tw médio): 3,75
-----------------------------------------------------------------
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)
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 |
Tarefa | Cor | Turnaround | Espera |
---|---|---|---|
T1 | 10 | 5 | |
T2 | 2 | 0 | |
T3 | 13 | 9 | |
T4 | 3 | 0 |
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
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
Tempo médio de execução (Tt médio): 7,00
Tempo médio de espera (Tw médio): 3,50
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).
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 |
- 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).
Tempo total das tarefas (ΣTt): 1+5+6+8+10 = 30
Tempo total de espera (ΣTw): 0+1+3+6+7 = 17
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).
ΣTt = 1+12+8+10+6 = 37
ΣTw = 0+8+5+7+4 = 24
- 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).
ΣTt = 1+5+5+8+10 = 29
ΣTw = 0+1+3+5+7 = 16
Aqui supomos que menor número = maior prioridade.
- 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).
ΣTt = 29
ΣTw = 16
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).