Você está na página 1de 12

Ozório De Brito Luís Nhaca

Victor Jeremias
Wilma Clara Arlindo Moamba

Escalonamento de tarefas

Licenciatura em Informática

Universidade Pedagógica de Maputo


Maputo
2023
Ozório De Brito Luís Nhaca

Victor Jeremias

Wilma Clara Arlindo Moamba

Escalonamento de tarefas

Licenciatura em Informática

Trabalho apresentado à Faculdade de Engenharias


e Tecnologias da Universidade Pedagógica de
Maputo, com requisito parcial para a obtenção da
nota na disciplina de Sistemas Operativos.
Docente: Mestre Aurélio Armando Pires Ribeiro

Universidade Pedagógica de Maputo


Maputo
2023
Índice
1. Introdução............................................................................................................................ 1
1.1. Objectivos ........................................................................................................................ 1
1.1.1. Objectivo geral ......................................................................................................... 1
1.1.2. Objectivos específicos .............................................................................................. 1
2. Escalonamento de tarefas ................................................................................................ 2
3. Objectivos e métricas .......................................................................................................... 2
3.1. Tempo de execução ..................................................................................................... 2
3.2. Tempo de espera .......................................................................................................... 2
3.3. Tempo de resposta ....................................................................................................... 2
3.4. Justiça........................................................................................................................... 2
3.5. Eficiência ..................................................................................................................... 2
4. Escalonamento preemptivo e cooperativo........................................................................... 2
4.1. Sistemas preemptivo .................................................................................................... 2
4.2. Sistemas cooperativos .................................................................................................. 3
5. Algoritmos de escalonamento de tarefas ............................................................................. 3
5.1. Escalonamento FCFS (First-Come, First Served) ....................................................... 3
5.2. Escalonamento SJF (Shortest Job First) ...................................................................... 4
5.3. Escalonamento por prioridades .................................................................................... 5
5.3.1. Escalonamento por prioridades fixas (PRIOc, PRIOp) ........................................ 5
5.3.2. Escalonamento por prioridades dinâmicas ........................................................... 6
6. Outros algoritmos de escalonamento .................................................................................. 7
7. Um escalonador real ............................................................................................................ 7
8. Conclusão ............................................................................................................................ 8
9. Referências bibliográficas ................................................................................................... 9
1

1. Introdução
Qualquer que seja a pessoa, a sua vida é guiada por certos princípios que o fazem determinar o
que deve fazer e o que não deve fazer. Alguns destes princípios além de determinarem o que a
pessoa deve fazer e o que não deve fazer, também determinam quando deve fazer certa tarefa
em detrimento das condições em que estiver se encontrando num dado momento. Por exemplo,
como estudantes, diariamente estamos sujeitos a várias actividades por realizar, porem, por
causa da condição em que nos encontramos agora (estudantes), por padrão a nossa prioridade
são aos estudos, isto é, num leque de actividades que temos, alocamos mais o tempo para
dedicarmo-nos aos estudos, e distribuímos o tempo resto do tempo entre as demais tarefas.

Este fenômeno é análogo ao que ocorre num sistema computacional na gestão de tarefas por
parte do Sistema Operativo, pois, durante o seu uso, várias tarefas podem ser executadas, e para
tal existe uma sequência que deve obedecida.

Nestes Sistemas Computacionais, existe uma parte em Sistemas Operativos responsável por
gerenciar de acordo com o tempo de execução, distribuindo assim um tempo para cada tarefa
de modo a minimizar a ociosidade da CPU e dos demais recursos computacionais. Esta parte
do S.O, chama-se escalonador, e propomo-nos a abordar esta temática nesta obra, como forma
de saber mais acerca das particularidades inerentes aos Sistemas Operativos e os utilitários ou
programas de computador.

1.1. Objectivos
1.1.1. Objectivo geral
 Compreender o escalonamento de tarefas em um Sistema Computacional.
1.1.2. Objectivos específicos
 Apontar os objectivos e métricas do escalonamento de tarefas;
 Distinguir o escalonamento preemptivo e cooperativo;
 Enumerar alguns algoritmos de escalonamento de tarefas;
 Categorizar o escalonamento por prioridade.
2

2. Escalonamento de tarefas
Definição: É uma activade que consiste em decidir qual das tarefas (prontas para serem
executadas) deve ser executada. A parte responsável por tomar esta decisão chama-se
escalonador.

Escalonador: É a parte do sistema responsável do sistema Operativo responsável por realizar


o escalonamento de tarefas, através de um algoritmo de escalonamento.

3. Objectivos e métricas
Ao se definir um algoritmo de escalonamento, deve se ter em mente o seu objectivo. Porém, os
objectivos de em escalonador são contraditórios. Por exemplo pode se definir valores de
quantum baixos (tempo de execução) por cada tarefa de uma aplicação, e por causa disso, a
eficiência do uso do processador será baixo. Para isso existem vários critérios para a avaliação
de escalonadores. Dentre eles temos:
3.1. Tempo de execução
É tempo total de execução de uma tarefa (não confundir com tempo de processamento), isto é,
o tempo decorrido entre a criação da tarefa e seu encerramento, computando todos os tempos
de processamento e de espera.
3.2. Tempo de espera
É o tempo total perdido pela tarefa na fila de tarefas prontas, aguardando o processador. Deve-
se observar que esse tempo não inclui os tempos de espera em operações de entrada/saída (que
são inerentes à aplicação e aos dispositivos).
3.3. Tempo de resposta
É o tempo decorrido entre a chegada de um evento ao sistema e o resultado imediato de seu
processamento. Por exemplo, em um editor de textos seria o tempo decorrido entre apertar uma
tecla e o caractere correspondente aparecer na tela.
3.4. Justiça
Este critério diz respeito à distribuição do processador entre as tarefas prontas: duas tarefas de
comportamento e prioridade similares devem ter durações de execução similares.
3.5. 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).

4. Escalonamento preemptivo e cooperativo


Um escalonador de um Sistema Operativo, pode ser preemptivo ou cooperativo.
4.1. Sistemas preemptivo
Nestes sistemas uma tarefa pode perder o processador caso termine seu quantum de tempo, caso
execute uma chamada de sistema ou caso ocorra uma interrupção que faça ressurgir uma tarefa
mais prioritária.
3

4.2. Sistemas cooperativos


Nestes tipos de sistemas, uma tarefa em execução permanece no processador tanto quanto
possível, só liberando 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 todos possam executar.
Os sistemas mais modernos, geralmente são preemptivas e as mais antigas são cooperativas
Em um sistema preemptivo simples, normalmente as tarefas só são interrompidas quando o
processador está no modo usuário. Porém, 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.

5. Algoritmos de escalonamento de tarefas


Algoritmos de escalonamento servem de base conceitual para a construção dos escalonadores
mais complexos que são usados em sistemas operacionais reais. Para a descrição de cada
algoritmo, considerar-se-á um sistema monoprocessado e um conjunto de 5 tarefas hipotéticas.
5.1. Escalonamento FCFS (First-Come, First Served)
Esta é a forma de escalonamento mais elementar que consiste em atender as tarefas
sequencialmente, segundo a ordem de ingresso na fila de tarefas prontas. O diagrama a seguir
ilustra o escalonamento de 5 tarefas hipotéticas usando o algoritmo FCFS.

Figura 1: Escalonamento de tarefas através do algoritmo FCFS


Calculando o tempo médio de execução (Tt) e de espera (Tw) temos:
(5 − 0) + (7 − 0) + (11 − 1) + (12 − 3) + (14 − 5)
𝑇𝑡 =
5
5 + 7 + 10 + 9 + 9 40
𝑇𝑡 = = = 8,0𝑠
5 5
Equação 1: Tempo médio de execução das tarefas
(0 − 0) + (5 − 0) + (7 − 1) + (11 − 3) + (12 − 5)
𝑇𝑤 =
5
4

0 + 5 + 6 + 8 + 7 26
𝑇𝑤 = = = 5,2𝑠
5 5
Equação 2: Tempo Médio de espera das tarefas

5.2. Escalonamento SJF (Shortest Job First)


O algoritmo de escalonamento conhecido como menor tarefa primeiro (SJF - Shortest Job First)
consiste em atribuir o processador à menor (mais curta) tarefa da fila de tarefas prontas.
Esse algoritmo proporciona os menores tempos médios de espera das tarefas. O diagrama a
seguir ilustra o escalonamento de 5 tarefas hipotéticas usando o algoritmo SJF.

Figura 2: Escalonamento de tarefas através do algoritmo SJF


Calculando o tempo médio de execução (Tt) e de espera (Tw) temos:
(14 − 0) + (2 − 0) + (6 − 1) + (7 − 3) + (9 − 5)
𝑇𝑡 =
5
14 + 2 + 5 + 4 + 4 25
𝑇𝑡 = = = 5,8𝑠
5 5
Equação 3: Tempo médio de execução das tarefas
(9 − 0) + (0 − 0) + (2 − 1) + (6 − 3) + (7 − 5)
𝑇𝑤 =
5
9 + 0 + 1 + 3 + 2 15
𝑇𝑤 = = = 3,0𝑠
5 5
Equação 4: Tempo Médio de espera das tarefas
A maior dificuldade no uso do algoritmo SJF consiste em estimar a priori a duração de cada
tarefa, antes de sua execução.
Outro problema associado ao escalonamento SJF é a possibilidade de inanição (starvation) das
tarefas mais longas. Caso o fluxo de tarefas curtas chegando ao sistema seja elevado, as tarefas
mais longas nunca serão escolhidas para receber o processador e vão literalmente “morrer de
fome”, esperando na fila sem poder executar. Esse problema pode ser resolvido através de
técnicas de envelhecimento de tarefas.
5

5.3. Escalonamento por prioridades


O escalonamento por prioridade pode ser fixo ou dinâmico.
5.3.1. Escalonamento por prioridades fixas (PRIOc, PRIOp)
O escalonamento por prioridade pode ser preemptivo ou cooperativo e a cada tarefa é associada
uma prioridade, geralmente na forma de um número inteiro, que representa sua importância no
sistema.
O escalonamento permite modelar várias abordagens entre as quais o FCFS e SJF.
O diagrama a seguir mostra representa o escalonamento por prioridade cooperativo.

Figura 3: Escalonamento de tarefas através do algoritmo PRIOc


Calculando o tempo médio de execução (Tt) e de espera (Tw) temos:
(7 − 0) + (2 − 0) + (14 − 1) + (10 − 3) + (9 − 5)
𝑇𝑡 =
5
7 + 2 + 13 + 7 + 4 33
𝑇𝑡 = = = 6,6𝑠
5 5
Equação 5: Tempo médio de execução das tarefas
(2 − 0) + (0 − 0) + (10 − 1) + (9 − 3) + (7 − 5)
𝑇𝑤 =
5
2 + 0 + 9 + 6 + 2 19
𝑇𝑤 = = = 3,8𝑠
5 5
Equação 6: Tempo Médio de espera das tarefas
No escalonamento por prioridade preemptivo (PRIOp), quando uma tarefa de maior
prioridade se torna disponível para execução, o escalonador entrega o processador a ela,
trazendo a tarefa atualmente em execução de volta para a fila de prontas. A seguir está
representado o diagrama.
6

Figura 4: Escalonamento de tarefas através do algoritmo PRIOp.


Calculando o tempo médio de execução (Tt) e de espera (Tw) temos:
(10 − 0) + (0 − 0) + (14 − 1) + (4 − 3) + (7 − 5)
𝑇𝑡 =
5
10 + 0 + 13 + 1 + 2 28
𝑇𝑡 = = = 5,6𝑠
5 5
Equação 7: Tempo médio de execução das tarefas
[(2 − 0) + (4 − 3) + (7 − 5)] + (0 − 0) + (10 − 1) + (3 − 3) + (5 − 5)
𝑇𝑤 =
5
5 + 0 + 9 + 0 + 0 14
𝑇𝑤 = = = 2,8𝑠
5 5
Equação 8: Tempo Médio de espera das tarefas

5.3.2. Escalonamento por prioridades dinâmicas


No escalonamento por prioridades fixas, as tarefas de menor prioridade só recebem o
processador na ausência de tarefas de maior prioridade, isso causa um fenômeno chamado
inanimação. Para evitar a inanimação, um fator denominado envelhecimento deve ser
definido, permitindo assim aumentar a prioridade da tarefa em função do tempo, daí falar-se de
escalonamento por prioridade dinâmica.
Calculando o tempo médio de execução Tt e o tempo médio de espera Tw para a execução,
temos a figura a seguir:

Figure 5: Escalonamento de tarefas através do algoritmo PRIOd


7

(11 − 0) + (2 − 0) + (14 − 1) + (4 − 3) + (7 − 5)
𝑇𝑡 =
5
11 + 2 + 13 + 1 + 2 29
𝑇𝑡 = = = 5,9𝑠
5 5
Equação 9: Tempo médio de execução das tarefas
[(2 − 0) + (7 − 3)] + (0 − 0) + [(4 − 1) + (11 − 5)] + (3 − 3) + (5 − 5)
𝑇𝑤 =
5
6 + 0 + 9 + 0 + 0 15
𝑇𝑤 = = = 3,0𝑠
5 5
Equação 10: Tempo Médio de espera das tarefas
As prioridades dinâmicas resolvem um problema importante em sistemas de tempo
compartilhado.
A prioridade de tarefas é definida por um conjunto diverso de factores que podem ser
classificados em dois grupos, nomeadamente:
Fatores externos: informações providas pelo usuário ou o administrador do sistema, que o
escalonador não conseguiria estimar sozinho.
Fatores internos: informações que podem ser obtidas ou estimadas pelo próprio escalonador,
com base em dados disponíveis no sistema operacional.

6. Outros algoritmos de escalonamento


Além dos algoritmos apresentados acima, existem otros, alguns dos quais servem de base
conceituais para escalonadores usados em sistemas operacionais reais. Dentre eles, podem ser
citados os escalonadores de múltiplas filas, com ou sem feedback, os escalonadores justos, os
escalonadores multiprocessador e multicore, os escalonadores de tempo real e os escalonadores
multimídia.

7. Um escalonador real
Para lidar com essa grande diversidade de tarefas, os escalonadores dos sistemas como
Windows, Linux e MacOS implementam algoritmos complexos, combinando mais de uma
política de escalonamento.
No Linux por exemplo, as tarefas são divididas em classes de escalonamento de acordo com as
suas demandas de processamento, com cada classe possuindo a sua fila de tarefas.
Algumas classes definidas no escalonador actual (núcleo 4.16, em 2018) são:
Classe SCHED_DEADLINE, Classe SCHED_FIFO, etc.
8

8. Conclusão
A gestão inteligente de tarefas nos sistemas computacionais é um fenômeno importantíssimo
para uma melhor organização das tarefas.
O escalonamento de tarefas insere-se neste âmbito, constituindo uma forma de gerir as tarefas,
decidindo qual das tarefas deve se executar num dado instante em função de variados critérios.
Nesse sentido, conclui-se que o processo de escalonamento de tarefas, é um fator muito
importante para maximização da actividades dos recursos computacionais (eficiência), apesar
de em algumas situações, os objectivos serem contraditórios.
9

9. Referências bibliográficas
 TANENBAUM, Andrews S., BOS, Herbert Sistemas Operacionais Modernos, 4a ¯
edição. Pearson – Prentice-Hall, 2008.
 MAZIERO, Carlos, Sistemas Operacionais: Conceitos e Mecanismos, 2019.

Você também pode gostar