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
фирмы ремонт квартир в москве https://www.rejting-remontnyh-kompanij-moskvy.com .
plane crash game online earn money http://www.aviator-game-predict.com/ .
сайт мелбет v-bux.ru .
карнизы для штор купить в москве карнизы для штор купить в москве .
электрокарнизы в москве электрокарнизы в москве .
отделка ремонт квартир москва https://rejting-kompanij-po-remontu-kvartir-moskvy.com/ .
премиум ремонт квартир москва http://www.rejting-remontnyh-kompanij-moskvy.com .
aeroplane money game http://www.aviator-game-predict.com .
фирма ремонт квартир фирма ремонт квартир .
plane money game http://www.aviator-game-predict.com .
лучшая компания по ремонту квартир лучшая компания по ремонту квартир .
win crash game https://aviator-game-deposit.com .
ремонт квартир компании https://luchshie-kompanii-po-remontu-kvartir-v-moskve.com/ .
карниз для штор электрический карниз для штор электрический .
собаки слот https://wwwpsy.ru .
airplane game money https://aviator-game-deposit.com .
online melbet https://v-bux.ru/ .
лучший ремонт квартир в москве http://www.rejting-remontnyh-kompanij-moskvy.com .
jahaj udane wala game http://aviator-game-predict.com .
электрические рулонные шторы купить москва http://www.avtomaticheskie-rulonnye-shtory11.ru .
melbet sports betting http://www.v-bux.ru .
сайты по ремонту квартир в москве http://www.rejting-kompanij-po-remontu-kvartir-moskvy.com .
профессиональный ремонт квартир в москве профессиональный ремонт квартир в москве .
компании по ремонту квартир компании по ремонту квартир .
melbet probleme la retragere http://www.melbet5015.ru
купить рулонные шторы москва купить рулонные шторы москва .
автоматические шторы на окна автоматические шторы на окна .
рулонные шторы это http://www.rulonnye-zhalyuzi-avtomaticheskie.ru .
mt5 https://metatrader-5-downloads.com/ .
metatrader 5 mac download https://metatrader-5-mac.com .
жалюзи с электроприводом жалюзи с электроприводом .
melbet program de loialitate https://melbet5015.ru/
mt5 download mac metatrader-5-sync.com .
download mt5 for mac download mt5 for mac .
mt5 download mac http://www.metatrader-5-sync.com .
metatrader5 download https://metatrader-5-sync.com .
установление причины залива http://www.ekspertiza-zaliva-kvartiry-4.ru .
metatrader 5 metatrader 5 .
стоимость восстановительного ремонта после залива ekspertiza-zaliva-kvartiry-2.ru .
mt5 mac download metatrader-5-pc.com .
mt5 http://www.metatrader-5-downloads.com .
mt5 mt5 .
mt5 mac metatrader-5-downloads.com .
mt5 https://metatrader-5-downloads.com/ .
mt5 trading platform mt5 trading platform .
mt5 mt5 .
forex metatrader 5 http://metatrader-5-mac.com .
download mt5 for mac https://metatrader-5-mac.com/ .
metatrader5 metatrader5 .
meta trader 5 download http://metatrader-5-mac.com .