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
пластиковые жалюзи с электроприводом elektricheskie-zhalyuzi97.ru .
электрокарнизы для штор купить в москве https://www.elektrokarniz777.ru .
электрокарнизы цена электрокарнизы цена .
онлайн трансляция заказать москва http://zakazat-onlayn-translyaciyu5.ru/ .
рулонные шторы на окна цена рулонные шторы на окна цена .
автоматические шторы на окна автоматические шторы на окна .
рулонные шторы с электроприводом на окна http://www.rulonnye-shtory-s-elektroprivodom7.ru/ .
электрическая рулонная штора http://www.rulonnye-shtory-s-elektroprivodom7.ru/ .
1xbet giris 1xbet giris .
1xbet t?rkiye giri? http://1xbet-giris-2.com .
1 x bet giri? 1xbet-giris-4.com .
bahis siteler 1xbet bahis siteler 1xbet .
купить электрические рулонные шторы http://www.avtomaticheskie-rulonnye-shtory77.ru .
съемка подкастов http://www.studiya-podkastov-spb4.ru/ .
электрические рулонные шторы купить москва https://avtomaticheskie-rulonnye-shtory1.ru/ .
рулонные шторы с электроприводом на окна https://www.rulonnye-shtory-s-elektroprivodom7.ru .
поставка медицинского оборудования поставка медицинского оборудования .
перепланировка нежилого здания http://www.pereplanirovka-nezhilogo-pomeshcheniya16.ru .
аренда студии для записи подкаста studiya-podkastov-spb4.ru .
1xbet t?rkiye giri? 1xbet t?rkiye giri? .
1x bet 1x bet .
1xbwt giri? http://www.1xbet-giris-8.com .
рольшторы заказать https://avtomaticheskie-rulonnye-shtory1.ru/ .
1xbet mobi http://www.1xbet-giris-2.com .
купить рулонные шторы москва купить рулонные шторы москва .
1xbet giri? 2025 http://1xbet-giris-4.com/ .
согласование перепланировки нежилого здания http://www.pereplanirovka-nezhilogo-pomeshcheniya17.ru .
смарт вей https://www.sajt-smart-way.ru .
смарт вэй sajt-smart-way.ru .
согласование перепланировки в нежилом помещении http://www.pereplanirovka-nezhilogo-pomeshcheniya17.ru .
смарт вей http://sajt-smart-way.ru/ .
перепланировка нежилого помещения в москве http://pereplanirovka-nezhilogo-pomeshcheniya18.ru .
seo agentura https://www.reiting-kompanii-po-prodvizheniyu-sajtov.ru .
перепланировка нежилого здания перепланировка нежилого здания .
электрожалюзи на заказ http://avtomaticheskie-zhalyuzi.ru .
рекламное агентство seo рекламное агентство seo .
швейное производство http://www.arbuztech.ru .
услуги аренды экскаватора погрузчика услуги аренды экскаватора погрузчика .
экскаватор погрузчик jcb аренда москва http://www.arenda-ekskavatora-pogruzchika-1.ru .
agency seo agency seo .
продвижение сайта продвижение сайта .
оформить перепланировку цена оформить перепланировку цена .
согласовать перепланировку нежилого помещения https://www.pereplanirovka-nezhilogo-pomeshcheniya17.ru .
согласование перепланировки нежилого помещения согласование перепланировки нежилого помещения .
смартвэй компании http://www.sajt-smart-way.ru/ .
seo аудит веб сайта seo аудит веб сайта .
рейтинг компаний seo оптимизации reiting-seo-kompanii.ru .
seo продвижение сайтов агентство http://www.reiting-seo-kompanii.ru .
каталог seo агентств http://reiting-seo-kompanii.ru .
швейное производство одежды https://www.miniatelie.ru .