Ir ao conteúdo

Exercicio 2 – Sistemas Operacionais II – INE5424 – UFSC

Trabalho 2 – EPOS
Implementação de Idle-waiting

    A implementação do exercicio 2, consiste em alteração da classe Syncronizer, onde na versão inicial a mesma utiliza yield gerando uma carga desnecessária para o processador. A alteração deve ser semelhante a realizada no exercicio um, fazendo com que não seja gasto recursos sem necessidade.
    Durante as discussões sobre a implementação imaginamos uma nova váriavel dentro de cada Thread para monitorar se a mesma está em uma estrutura como Semaphoro, Mutex ou váriavel condicional. Assim sendo possivel a verificação se está ou não, permitindo que nós façamos as devidas verificações para que o método resume e suspend não possam ser chamados quando a mesma estivesse esperando. Após algum tempo discutindo e analise dos códigos foi imaginada uma abordagem que em vez de criar uma váriavel nova para cada Thread seria necessário simplesmente a criação de um novo estado, denominado por nós de WAITING. Junto a isso foi criada uma fila para cada “Synchronizer”, que possui os processos que estão esperando para serem acordados. Os métodos que acordam os outros processos (wakeup e wakeup_all) foram implementados de forma não bloqueante, ou seja, as threads acordadas são apenas colocadas na fila “_ready”, sem troca imediata de contexto.
    Outras alterações também foram realizadas nos arquivos synchronizer.h, thread.cc, condition.h e semaphore.h, para que os mesmos funcionem corretamente com o novo estado WAITING. Por exemplo, no arquivo Thread.cc as implementações de Join, Resume e exit foram alteradas para a utilização deste novo estado, neste arquivo também foram criados novos métodos denominados sleep e wakeup. Que basicamente tratam a parte de colocar para dormir e botar neste novo estado e também na fila do “Synchronizer”. As devidas alterações foram realizadas nos demais arquivos, para que os mesmos funcionem com o novo estado WAITING.
    Também implementamos o busy waiting no “Synchronizer”, para o usuário poder escolher entre busy e idle waiting alterando uma variável booleana.

Arquivos Modificados:
synchronizer
condition.h
semaphore
thread

4.374 Comentários

  1. https://miamifightcard.com/
    Regarding MediaFightCard’s lineup, the wagering lines showcase a compelling dynamic with titleholders entering as underdogs and aspirants holding favorite status. In the featured bout for the open light heavyweight title, previous belt-holder Jiri Prochazka opened as a marginal favorite at -143 over the in-form Carlos Ulberg, who is priced at a +116 underdog considering his nine-fight winning streak.

  2. https://sportium.net.co/
    A Sportium Colombia trata-se de um cassino e uma casa de apostas esportivas pela internet que opera com total legalidade amparado pela licenca da Coljuegos, resultado da alianca entre CIRSA e Ladbrokes a partir de 2007. Disponibiliza um site robusto e confiavel no qual os apostadores colombianos podem aproveitar desde apostas ao futebol ate slots e cassino em tempo real com atendentes reais, tudo em um mesmo sitio.

  3. GichardDulge GichardDulge

    Attractive section of content. I just stumbled upon your site and in accession capital to assert that I acquire in fact enjoyed account your blog posts. Anyway I’ll be subscribing to your feeds and even I achievement you access consistently fast.
    Buy viagra here buy cialis on this site

  4. Thanks for some other informative site. The place else may just I get that type of information written in such a perfect way? I’ve a venture that I’m simply now working on, and I have been on the look out for such info.

  5. Greetings! Very helpful advice within this post! It is the little changes which will make the most important changes. Many thanks for sharing!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *