Você está na página 1de 29

Definição de prioridades

Anísio A. Silva
anisio.silva@física.ufmt.br
Fatores da definição de prioridades
• A definição da prioridade de uma tarefa é influenciada por diversos fatores,
que podem ser classificados em dois grandes grupos:
• Fatores externos : 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: 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.
Figura 01: Composição da prioridade dinâmica
Inanição e envelhecimento de tarefas

• No escalonamento por prioridades básico, as tarefas de baixa


prioridade só recebem o processador na ausência de tarefas de maior
prioridade. Caso existam tarefas de maior prioridade frequentemente
ativas, as de baixa prioridade podem sofrer de inanição, ou seja,
nunca ter acesso ao processador.
• Caso o sistema receba três tarefas: t1 com prioridade 1, t2 com prioridade 2
e t3 com prioridade 3, espera-se que t3 receba mais o processador que t2, e
esta mais que t1 (assumindo uma escala de prioridades positiva). Entretanto,
se aplicarmos o algoritmo de prioridades básico, as tarefas irão executar de
forma sequencial, sem distribuição proporcional do processador. Esse
resultado indesejável ocorre porque, a cada fim de quantum, sempre a
mesma tarefa é escolhida para processar: a mais prioritária.

Fig. 02 : Escalonamento por prioridades.


Envelhecimento

• Para evitar a inanição e garantir a proporcionalidade expressa através


das prioridades estáticas, um fator interno denominado
envelhecimento (task aging) deve ser definido.
Uma forma simples de implementar o envelhecimento está resumida no
seguinte algoritmo (que considera uma escala de prioridades positiva):
Envelhecimento
Em outras palavras, a cada turno o escalonador escolhe como
próxima tarefa (𝑡𝑝 ) aquela com a maior prioridade dinâmica (𝑝𝑑𝑝 ). A
prioridade dinâmica dessa tarefa é igualada à sua prioridade estática
(𝑝𝑑𝑝 ←𝑝𝑒𝑝 ) e então ela recebe o processador.
A prioridade dinâmica das demais tarefas é aumentada de α , ou
seja, elas “envelhecem” e no próximo turno terão mais chances de ser
escolhidas. A constante α é conhecida como fator de envelhecimento.
Envelhecimento

Fig 03: Escalonamento por prioridades com envelhecimento.

Nessa figura, percebe-se que todas as três tarefas recebem o processador


periodicamente, mas que 𝑡3 recebe mais tempo de processador que 𝑡2 , e que
𝑡2 recebe mais que 𝑡1 .
Inversão e herança de prioridades

• A inversão de prioridades consiste em processos de alta prioridade


serem impedidos de executar por causa de um processo de baixa
prioridade.
Considere o exemplo:

Um determinado sistema possui um processo de alta prioridade 𝑝𝑎 , um


processo de baixa prioridade 𝑝𝑏 e alguns processos de prioridade média
𝑝𝑚 . Além disso, há um recurso R que deve ser acessado em exclusão mútua;
para simplificar, somente 𝑝𝑎 e 𝑝𝑏 estão interessados em usar esse recurso.
Dessa forma a seguinte sequência de eventos pode ocorrer:

1. Em um dadoNeste momento,
momento, o processo está
o processador de alta
livreprioridade 𝑝𝑎 não
e é alocado a um
pode
processo de continuar
baixa sua 𝑝execução,
prioridade porque o recurso de que
𝑏;
necessita está nas mãos do processo de baixa prioridade
2. durante seu𝑝𝑏 . processamento,
Dessa forma 𝑝𝑎 deve 𝑝𝑏 esperar
obtémque o 𝑝acesso
𝑏 execute e libere R,a um
exclusivo
o que ajustifica
recurso R e começa usá-lo;o nome inversão de prioridades. A espera
de 𝑝𝑎 pode ser longa, pois 𝑝𝑏 tem baixa prioridade e
3. 𝑝𝑏 perde pode demorara receber
o processador, pois umo processo
processador com novamente,
prioridadecaso
maior
que a dele (𝑝𝑚existam outros processos
) foi acordado devido a em
umaexecução no sistema (como
interrupção;
𝑝𝑚 ). Como tarefas de alta prioridade são geralmente
4. 𝑝𝑏 volta aocríticas
final da filaode
para tarefas prontas,
funcionamento de umaguardando
sistema, ao processador;
inversão
enquanto ele não
de voltar a executar,
prioridades o recurso
pode ter efeitos Rgraves.
permanecerá alocado a ele e
ninguém poderá usá-lo;
5. Um processo de alta prioridade pa recebe o processador e solicita acesso
ao recurso R; como o recurso está alocado ao processo 𝑝𝑏 , 𝑝𝑎 é suspenso
até que o processo de baixa prioridade 𝑝𝑏 libere o recurso.
Inversão e herança de prioridades

Fig 04: Cenário de uma inversão de prioridades.


Protocolo de herança de prioridade

• Trata-se de uma solução elegante que consiste em aumentar


temporariamente a prioridade do processo 𝑝𝑏 que detém o recurso
de uso exclusivo R. Caso esse recurso seja requisitado por um
processo de maior prioridade 𝑝𝑎 , o processo 𝑝𝑏 “herda”
temporariamente a prioridade de 𝑝𝑎 , para que possa voltar a
executar e liberar o recurso R mais rapidamente.
Protocolo de herança de prioridade

Fig. 5: Um protocolo de herança de prioridade.


Exemplo:

Fig. 06: Sonda Mars Pathfinder com o robô Sojourner (NASA)


Comunicação entre tarefas
Comunicação entre tarefas

• Nem sempre um programa sequencial é a melhor solução para um


determinado problema. Muitas vezes, as implementações são
estruturadas na forma de várias tarefas interdependentes que
cooperam entre si para atingir os objetivos da aplicação, como
por exemplo em um navegador Web.
Comunicação entre tarefas
• Exemplo:
Construção de aplicações interativas : navegadores Web, editores de texto e
jogos são exemplos de aplicações com alta interatividade; nelas, tarefas
associadas à interface reagem a comandos do usuário, enquanto outras
tarefas comunicam através da rede, fazem a revisão ortográfica do texto,
renderizam imagens na janela, etc. Construir esse tipo de aplicação de forma
totalmente sequencial seria simplesmente inviável.
Localização da tarefa
• Se as tarefas estão no mesmo processo, elas compartilham a mesma área
de memória e a comunicação pode então ser implementada facilmente,
usando variáveis globais comuns.
• Caso as tarefas pertençam a processos distintos, não existem variáveis
compartilhadas; neste caso, a comunicação tem de ser feita por
intermédio do núcleo do sistema operacional, usando chamadas de
sistema.
• Caso as tarefas estejam em computadores distintos, o núcleo deve
implementar mecanismos de comunicação específicos, fazendo uso do
suporte de rede disponível.
Escopo da comunicação
• Os mecanismos de comunicação são habitualmente denominados de
forma genérica como “mecanismos de IPC” (Inter-Process Communication
mechanisms).
Características dos mecanismos de
comunicação

• De forma mais abstrata, a comunicação entre tarefas pode ser


implementada por duas primitivas básicas: enviar (dados, destino),
que envia os dados relacionados ao destino indicado, e receber
(dados, origem), que recebe os dados previamente enviados pela
origem indicada.
Tipos de comunicação
• Comunicação direta: o emissor identifica claramente o receptor e
vice-versa.

• Comunicação indireta: emissor e receptor não precisam se conhecer,


pois não interagem diretamente entre si. Eles se relacionam através
de um canal de comunicação, que é criado pelo sistema operacional,
geralmente a pedido de uma das partes.
Tipos de comunicação

Fig 06: Comunicação direta (esquerda) e indireta (direita).


Sincronismo
Quanto aos aspectos de sincronismo do canal de comunicação, a
comunicação entre tarefas pode ser:

• Síncrona : quando as operações de envio e recepção de dados


bloqueiam (suspendem) as tarefas envolvidas até a conclusão da
comunicação: o emissor será bloqueado até que a informação seja
recebida pelo receptor, e vice-versa. Esta modalidade de interação
também é conhecida como comunicação bloqueante.
Fig 07: Comunicação síncrona.
• Assíncrona : em um sistema com comunicação assíncrona, as primitivas de
envio e recepção não são bloqueantes: caso a comunicação não seja
possível no momento em que cada operação é invocada, esta retorna
imediatamente com uma indicação de erro.

Fig 08: Comunicação assíncrona


Semissíncrona : As primitivas de comunicação recebem um parâmetro
adicional: enviar (dados, destino, prazo) e receber (dados, origem,
prazo).

Fig. 08: Comunicação semissíncrona