Trabalho 4/5 – EPOS
Idle Thread
Timing Mechanisms
Nos exercícios 4 e 5 deveríamos criar uma Idle-Thread, a qual deveria somente ser escalonada quando não existirem mais processos prontos para execução. Também tínhamos que eiminar bugs, como o timer handler acordar indesejadamente as threads, e remover o busy-waiting do método delay.
A nova Thread é criada no thread_init.cc, o método passado para ela executar inicialmente é o idle, que foi modificado pra ter um loop, e seu status inicial é WAITING. Para garantir que ela não esteja em nenhuma fila, foram realizadas alterações no método body, para que caso o estado inicial seja WAITING, não acontecer nada. Uma nova variável estática para Thread foi criada, que sempre aponta para a Thread _idle, assim permitindo que qualquer Thread passe a execução para a mesma.
Foi criado um novo método switch_threads(Thread * next), que faz a mudança da thread atual para a thread recebida como parâmetro. Todos os métodos que chamavam a idle() ao perceberem que não possuia ninguém na fila foram alterados para mudar o contexto para a Thread _idle.
O construtor de Alarm foi alterado para receber uma Thread ao invés de uma referência para um método. O método delay foi alterado para suspender a Thread e criar um novo Alarm com uma referência para ela. Assim ela é acordada apenas no tempo programado, elimindando o busy-waiting. Para garantir que ao resumir uma Thread não haveria perdas de informações importantes os resumes são dados somente no final do método timer_handler, mantendo a consistência da fila de Alarms.
O tratador master foi mantido como referência para um método, permitindo que outros tipos de escalonamento sejam definidos. Na definição atual, o mesmo chama o método yield do objeto em execução, caso existam outras Threads prontas para execução ele muda o contexto para a próxima thread. Isto nos gerou outro bug, porque quando a Thread IDLE era executada e chamava o método yield, se já existiam pessoas para continuar a execução ela era inserida na fila de READY, passando a ser tratada como um processo normal. Isso foi corrigido verificando se a thread que estava dando YIELD era a thread _idle, caso fosse, não inseria na lista e não mudava o _state.
Arquivos Modificados:
alarm
thread
alarm
thread_init
thread
mt5 download for pc https://metatrader-5-mac.com/ .
возмещение ущерба после залива возмещение ущерба после залива .
определить виновника залива https://ekspertiza-zaliva-kvartiry-3.ru/ .
как провести оценку ущерба после залива https://ekspertiza-zaliva-kvartiry-4.ru .
сколько стоит экспертиза после залива http://ekspertiza-zaliva-kvartiry-4.ru/ .
смета на ремонт после залива смета на ремонт после залива .
metatrader5 metatrader5 .
mt5 mac download http://metatrader-5-downloads.com/ .
рулонные шторы с автоматическим управлением avtomaticheskie-rulonnye-shtory11.ru .
download mt5 for mac http://www.metatrader-5-mac.com/ .
download mt5 for mac metatrader-5-sync.com .
определить виновника залива определить виновника залива .
mt5 download mt5 download .
рулонные шторы виды механизмов http://rulonnye-zhalyuzi-avtomaticheskie.ru .
экспертиза залива для суда http://www.ekspertiza-zaliva-kvartiry-1.ru .
mt5 trading platform mt5 trading platform .
экспертиза по заливу квартиры экспертиза по заливу квартиры .
download metatrader 5 download metatrader 5 .
mt5 download mac https://www.metatrader-5-mac.com .
speed n cash лайфак speed n cash лайфак
мелбет промокод http://melbet5007.ru/
mines 1win скачать mines 1win скачать
Плиты Армстронг https://potolok-armstrong1.ru .
заказать курсовую работу качественно kupit-kursovuyu-3.ru .
рейтинг сео компаний рейтинг сео компаний .
курсовая заказать недорого http://kupit-kursovuyu-2.ru/ .
заказать студенческую работу kupit-kursovuyu-8.ru .
купить филлеры москва купить филлеры москва .
карниз с электроприводом карниз с электроприводом .
заказать курсовую работу http://www.kupit-kursovuyu-1.ru .
купить курсовую сайт http://www.kupit-kursovuyu-6.ru .
купить курсовая работа http://www.kupit-kursovuyu-1.ru/ .
курсовая работа недорого курсовая работа недорого .
seo agents seo agents .
заказать качественную курсовую заказать качественную курсовую .
где можно купить курсовую работу https://kupit-kursovuyu-6.ru/ .
заказать курсовую работу спб kupit-kursovuyu-8.ru .
заказать курсовую работу спб kupit-kursovuyu-10.ru .
психолог нарколог в москве http://narkologicheskaya-klinika-38.ru .
топ агентства seo топ агентства seo .
электрожалюзи на заказ электрожалюзи на заказ .
решение курсовых работ на заказ [url=http://kupit-kursovuyu-10.ru]http://kupit-kursovuyu-10.ru[/url] .
написание курсовых на заказ написание курсовых на заказ .
télécharger melbet apk pour android ios https://melbet5004.ru/
продвижение сайтов топ агентство продвижение сайтов топ агентство .
курсовые под заказ курсовые под заказ .
ставки на спорт melbet http://melbet5009.ru
курсовая работа купить курсовая работа купить .
скачать lucky jet на андроид [url=1win12041.ru]скачать lucky jet на андроид[/url]
рейтинг интернет агентств seo http://www.reiting-seo-kompanii.ru/ .