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

9.754 Comentários

  1. 888starz apk 888starz apk

    888starz rasmiy sayti O’zbekiston foydalanuvchilari uchun o’yin-kulgi va sport tikishlarining to’liq to’plamini taqdim etadi.

    Kazinoda Evoplay, Spade Gaming, Smartsoft va Spinthon kabi studiyalardan minglab slot mavjud.

    Real vaqt rejimidagi tikish yuqori koeffitsiyentlar bilan taqdim etiladi.

    888UZ777 promokodi maksimal xush kelibsiz paketini ochib beradi.

    Mijozlarga yordam xizmati kun bo’yi bir nechta kanal orqali javob beradi.

  2. 888starz rasmiy veb-sayti foydalanuvchilarga kazino va sport stavkalarini bitta platformada taqdim etadi.

    Foydalanuvchilar rasmiy sayt orqali jonli kazino stollarida istalgan vaqtda o’ynashlari mumkin.

    Rasmiy saytda jonli tikish koeffitsiyentlari o’yin davomida real vaqtda yangilanadi.

    888starz https://archevore.com/

  3. 888starz rasmiy sayti kazino va sport bo’limlariga to’liq kirish imkonini beradi.

    Rasmiy saytda jonli dilerli kazino bo’limi real dilerlar bilan o’ynash imkonini beradi.

    Foydalanuvchilar rasmiy saytda yirik jahon turnirlari va mahalliy ligalarga stavka qo’yishlari mumkin.

    888starz https://archevore.com/

  4. 888starz mobil versiyasi va Android hamda iOS ilovalari harakatda ham o’ynash imkonini beradi.
    888starzning o’ziga xos 888Games o’yinlari va jonli dilerlar istalgan vaqtda mavjud.
    888starz 888starz
    Sayt yirik xalqaro tadbirlar hamda mahalliy musobaqalar bo’yicha liniyalarni taklif etadi.
    888starz birinchi to’ldirishga 100% qo’shimcha va 150 bepul spin beradi.
    Qo’llab-quvvatlash xizmati kun bo’yi bir nechta aloqa kanali orqali javob beradi.

Deixe um comentário

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