Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

escalonamento de tempo real, Exercícios de Computação Distribuída

projeto realizado sobre como funciona o escalonamento de tempo real

Tipologia: Exercícios

2020

Compartilhado em 26/10/2022

marcelo-copis
marcelo-copis 🇧🇷

3 documentos

1 / 2

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Escalonamento garantido
Ele assegura que cada processo seja executado, dando a cada uma
mesma quantidade de tempo para execução usando a CPU. ,
Escalonamento garantido
Uma estratégia completamente diferente de escalonamento é fazer promessas
realistas aos usuários sobre o desempenho e, então, cumpri-las. Uma
promessa realista e fácil de cumprir: se houver n usuários conectados
enquanto você estiver trabalhando, você receberá cerca de 1/n do poder da
CPU. De maneira semelhante, em um sistema monousuário com n processos
em execução, todas as tarefas sendo iguais, cada uma deve receber 1/n dos
ciclos da CPU. Para cumprir essa promessa, o sistema deve monitorar quanto
da CPU cada processo recebeu desde a sua criação. Então, ele calcula quanto
da CPU é atribuído a cada um; isto é, o tempo desde a criação dividido por n.
Como a quantidade de tempo da CPU que cada processo realmente recebeu
também é conhecida, é simples calcular a proporção entre o tempo real da
CPU consumido e o tempo da CPU atribuído. Uma proporção de 0,5 significa
que um processo recebeu metade do que devia ter recebido e uma
proporção de 2,0 significa que um processo recebeu o dobro do tempo que lhe
foi atribuído. O algoritmo, então, é executar o processo com a proporção mais
baixa até que sua proporção fi que acima do seu concorrente mais próximo.
Escalonamento garantido
Uma abordagem completamente diferente para o escalonamento é fazer
promessas reais para os usuários a respeito do desempenho e então cumpri-
las. Uma promessa realista de se fazer e fácil de cumprir é a seguinte: se n
usuários estão conectados enquanto você está trabalhando, você receberá em
torno de 1/n da potência da CPU. De modo similar, em um sistema de usuário
único com n processos sendo executados, todos os fatores permanecendo os
mesmos, cada um deve receber 1/n dos ciclos da CPU. Isso parece bastante
justo. Para cumprir essa promessa, o sistema deve controlar quanta CPU cada
processo teve desde sua criação. Ele então calcula o montante de CPU a que
cada um tem direito, especificamente, o tempo desde a criação dividido por n.
Tendo em vista que o montante de tempo da CPU que cada processo
realmente teve também é conhecido, calcular o índice de tempo de CPU real
consumido com o tempo de CPU ao qual ele tem direito é algo bastante direto.
Um índice de 0,5 significa que o processo teve apenas metade do que deveria,
e um índice de 2,0 significa que teve duas vezes o montante de tempo ao qual
ele tinha direito. O algoritmo então executará o processo com o índice mais
baixo até que seu índice aumente e se aproxime do de seu competidor. Então
este é escolhido para executar em seguida.
pf2

Pré-visualização parcial do texto

Baixe escalonamento de tempo real e outras Exercícios em PDF para Computação Distribuída, somente na Docsity!

Escalonamento garantido Ele assegura que cada processo seja executado, dando a cada uma mesma quantidade de tempo para execução usando a CPU. , Escalonamento garantido Uma estratégia completamente diferente de escalonamento é fazer promessas realistas aos usuários sobre o desempenho e, então, cumpri-las. Uma promessa realista e fácil de cumprir: se houver n usuários conectados enquanto você estiver trabalhando, você receberá cerca de 1/ n do poder da CPU. De maneira semelhante, em um sistema monousuário com n processos em execução, todas as tarefas sendo iguais, cada uma deve receber 1/ n dos ciclos da CPU. Para cumprir essa promessa, o sistema deve monitorar quanto da CPU cada processo recebeu desde a sua criação. Então, ele calcula quanto da CPU é atribuído a cada um; isto é, o tempo desde a criação dividido por n. Como a quantidade de tempo da CPU que cada processo realmente recebeu também é conhecida, é simples calcular a proporção entre o tempo real da CPU consumido e o tempo da CPU atribuído. Uma proporção de 0,5 significa que um processo só recebeu metade do que devia ter recebido e uma proporção de 2,0 significa que um processo recebeu o dobro do tempo que lhe foi atribuído. O algoritmo, então, é executar o processo com a proporção mais baixa até que sua proporção fi que acima do seu concorrente mais próximo. Escalonamento garantido Uma abordagem completamente diferente para o escalonamento é fazer promessas reais para os usuários a respeito do desempenho e então cumpri- las. Uma promessa realista de se fazer e fácil de cumprir é a seguinte: se n usuários estão conectados enquanto você está trabalhando, você receberá em torno de 1/n da potência da CPU. De modo similar, em um sistema de usuário único com n processos sendo executados, todos os fatores permanecendo os mesmos, cada um deve receber 1/n dos ciclos da CPU. Isso parece bastante justo. Para cumprir essa promessa, o sistema deve controlar quanta CPU cada processo teve desde sua criação. Ele então calcula o montante de CPU a que cada um tem direito, especificamente, o tempo desde a criação dividido por n. Tendo em vista que o montante de tempo da CPU que cada processo realmente teve também é conhecido, calcular o índice de tempo de CPU real consumido com o tempo de CPU ao qual ele tem direito é algo bastante direto. Um índice de 0,5 significa que o processo teve apenas metade do que deveria, e um índice de 2,0 significa que teve duas vezes o montante de tempo ao qual ele tinha direito. O algoritmo então executará o processo com o índice mais baixo até que seu índice aumente e se aproxime do de seu competidor. Então este é escolhido para executar em seguida.

Escalonamento por loteria Embora realizar promessas para os usuários e cumpri-las seja uma bela ideia, ela é difícil de implementar. No entanto, outro algoritmo pode ser usado para gerar resultados similarmente previsíveis com uma implementação muito mais simples. Ele é chamado de escalonamento por loteria (WALDSPURGER e WEIHL, 1994). A ideia básica é dar bilhetes de loteria aos processos para vários recursos do sistema, como o tempo da CPU. Sempre que uma decisão de escalonamento tiver de ser feita, um bilhete de loteria será escolhido ao acaso, e o processo com o bilhete fica com o recurso. Quando aplicado ao escalonamento de CPU, o sistema pode realizar um sorteio 50 vezes por segundo, com cada vencedor recebendo 20 ms de tempo da CPU como prêmio. Parafraseando George Orwell: “Todos os processos são iguais, mas alguns processos são mais iguais”. Processos mais importantes podem receber bilhetes extras, para aumentar a chance de vencer. Se há 100 bilhetes emitidos e um processo tem 20 deles, ele terá uma chance de 20% de vencer cada sorteio. A longo prazo, ele terá acesso a cerca de 20% da CPU. Em comparação com o escalonador de prioridade, em que é muito difícil de afirmar o que realmente significa ter uma prioridade de 40, aqui a regra é clara: um processo que tenha uma fração f dos bilhetes terá aproximadamente uma fração f do recurso em questão. O escalonamento de loteria tem várias propriedades interessantes. Por exemplo, se um novo processo aparece e ele ganha alguns bilhetes, no sorteio seguinte ele teria uma chance de vencer na proporção do número de bilhetes que tem em mãos. Em outras palavras, o escalonamento de loteria é altamente responsivo. Processos cooperativos podem trocar bilhetes se assim quiserem. Por exemplo, quando um processo cliente envia uma mensagem para um processo servidor e então bloqueia, ele pode dar todos os seus bilhetes para o servidor a fim de aumentar a chance de que o servidor seja executado em seguida. Quando o servidor tiver concluído, ele devolve os bilhetes de maneira que o cliente possa executar novamente. Na realidade, na ausência de clientes, os servidores não precisam de bilhete algum. O escalonamento de loteria pode ser usado para solucionar problemas difíceis de lidar com outros métodos. Um exemplo é um servidor de vídeo no qual vários processos estão alimentando fluxos de vídeo para seus clientes, mas em diferentes taxas de apresentação dos quadros. Suponha que os processos precisem de quadros a 10, 20 e 25 quadros/s. Ao alocar para esses processos 10, 20 e 25 bilhetes, nessa ordem, eles automaticamente dividirão a CPU em mais ou menos a proporção correta, isto é, 10: 20: 25.