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
1вин букмекер 1win36247.help
1win bonus lunar 1win38174.help
1вин Кыргызстан 1win68017.help
1win официальный сайт http://1win60925.help/
1win причины отказа в выводе http://1win60925.help/
canadian rx pharmacy
1win apk Бишкек скачать https://1win82361.help/
1win демо авиатор 1win демо авиатор
1win банковская карта депозит 1win15478.help
1win логин 1win логин
auditkit – Found practical insights today; sharing this article with colleagues later.
мелбет кз пополнение yumoney http://melbet60432.help/
sloturi casino melbet melbet42310.help
мелбет mastercard http://melbet60432.help
1win фрибет 1win фрибет
1win куда вводить промокод http://www.1win15478.help
1win официальный сайт https://1win15478.help
mostbet Киргизия https://www.mostbet90753.help
1win lucky jet pariu http://1win38174.help
1вин установить приложение 1вин установить приложение
промокоды melbet промокоды melbet .
online pharmacy no prescription necessary
1вин plinko https://1win15478.help/
мелбет кз актуальное зеркало http://melbet60432.help/
1вин Киргизия [url=https://1win15478.help/]https://1win15478.help/[/url]
1win скачать на android https://1win15478.help
pin-up qanday depozit qilish http://pinup14278.help
мостбет apk установить [url=https://mostbet90753.help/]мостбет apk установить[/url]
smartbyte – Content reads clearly, helpful examples made concepts easy to grasp.
melbet cod bonus melbet42310.help
мелбет официальный сайт мелбет официальный сайт
1win сколько идет вывод http://www.1win82361.help
pin-up mines demo o‘ynash pin-up mines demo o‘ynash
1win скачать на ios 1win скачать на ios
cyberstack – Navigation felt smooth, found everything quickly without any confusing steps.
melbet aplicatie nu merge [url=https://melbet42310.help]https://melbet42310.help[/url]
keyvaulty – Overall, professional vibe here; trustworthy, polished, and pleasantly minimal throughout.
clicktechy – Mobile version looks perfect; no glitches, fast scrolling, crisp text.
1win бонус Киргизия 1win бонус Киргизия
bytetap – Mobile version looks perfect; no glitches, fast scrolling, crisp text.
techvertex – Mobile version looks perfect; no glitches, fast scrolling, crisp text.
pixelengine – Loved the layout today; clean, simple, and genuinely user-friendly overall.
mostbet bonus pentru casino http://mostbet63218.help/
1win зеркало сегодня https://www.1win20819.help
mostbet pariuri live https://mostbet63218.help/
express pharmacy
pinup telefonda https://www.pinup14278.help
canadian pharmacy
mostbet лимиты KGS http://mostbet45087.help
price prescription