Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal do Ceará - Campus Crateús Lista Sincronização de Processos - EAD Disciplina: Sistemas Operacionais Professor: Adeilson S. Aragão Lista Módulo II Parte II MATEUS VIEIRA MOURÃO - 421736 1. A parte do programa onde um recurso compartilhado é acessado é chamada seção crítica. Para evitarmos "race-conditions" (condições de corrida) deve-se garantir a exclusão mútua. Considerando que o ambiente é multiprogramado, descreva as quatro condições para uma boa solução. Exclusão mútua: se o processo Pi está executando código de sua seção crítica então nenhum outro processo pode estar executando código de suas seções críticas; Progresso: se nenhum processo estiver executando sua seção crítica e alguns processos quiserem entrar em suas seções críticas, só os processos que não estiverem executando suas seções remanescentes poderão participar da decisão sobre qual processo será o próximo a entrar em sua seção crítica, e essa seleção não poderá ser adiada indefinidamente; Espera limitada: há um limite para o número de vezes que outros processos podem entrar em suas seções críticas após um processo ter feito uma solicitação para entrar na sua seção crítica e ter essa solicitação atendida. 2. Qual é o significado do termo espera ocupada? Que outros tipos de espera existem em um sistema operacional? A espera ocupada pode ser completamente evitada? Explique sua resposta. A espera ocupada ocorre quando um processo está realizando um loop enquanto espera a ocorrência de um evento externo. Ela é chamada espera ocupada porque o processo normalmente está em um loop tipo while(true);. Existem outros exemplos de espera ocupada em um sistema operacional operacional: esperar até que a E/S esteja disponível, esperar a E/S esteja disponível, esperar até que até que um semáforo seja liberado etc. Sim, a espera ocupada pode ser evitada por meio de uma primitiva de sincronismo, como um mutex, semáforo ou variável de condição. 3. Dado que nós podemos criar código em nível de usuário para controlar o acesso às seções críticas (por exemplo, o algoritmo de Peterson), por que é importante para um sistema operacional fornecer mecanismos de sincronização, como os semáforos no kernel? O mecanismo que coloca os processos aguardando o recurso para prosseguir sua execução chama-se sincronização. Em sistemas operacionais multiprogramados este mecanismo é importante para garantir a integridade e a confiabilidade na execução de aplicações concorrentes. Há ocasiões onde é extremamente necessário que dois ou mais processos/threads acessem um único recurso comum. Caso esse tipo de paralelismo não ocorra de forma controlada, podemos fazer com que um processo "sequestre/atropele.' a operação de outro. É neste momento que entram em ação os sinalizadores, ou semáforos. Com eles, é possível acesso controlado a processos, de forma que só haverá disponibilidade quando a operação em andamento for finalizada. 4. Explique o conceito de atomicidade de transação. É uma operação, ou conjunto de operações, que deve ser executada completamente em caso de sucesso, ou ser abortada completamente em caso de erro. 5. Explique que, se as operações de semáforo wait() e signal() não forem executadas atomicamente, a exclusão mútua pode ser violada. Uma operação wait decrementa atomicamente o valor associado a um semáforo. Se duas operações wait forem executadas em um semáforo quando seu valor for 1, se as duas operações não forem executadas atomicamente, é possível que ambas decrementam o valor do semáforo, violando assim a exclusão mútua.
Compartilhar