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 Lista Módulo II Parte II …………………………………………………………………………………………………………... 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. R: As quatro condições para garantir uma boa solução são: 1- Dois ou mais processos não podem estar simultaneamente dentro de uma região crítica; 2- Não se podem fazer afirmações em relação à velocidade e ao número de CPUs; 3- Um processo fora da região crítica não deve causar bloqueio a outro processo; 4- Um processo não pode esperar infinitamente para entrar na região crítica; 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. R: A espera ocupada ocorre quando um processo está realizando um loop enquanto espera a ocorrência de um evento externo. Enquanto um processo estiver em sua seção crítica, qualquer outro processo que tentar entrar em sua seção crítica deve percorrer um loop de entrada. Ela é chamada de espera ocupada porque o processo normalmente está em um loop tipo while(true). Existem outros exemplos e espera ocupada em um sistema operacional: Esperar até que E/S esteja disponível, esperar até que um semáforo seja liberado etc. 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? R: 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. É nesse 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. R: A atomicidade é uma propriedade que garante que cada transação seja tratada como uma entidade única, a qual deve ser executada por completo ou falhar completamente. Desta forma, todas as operações da transação devem ser executadas com sucesso para que a transação tenha sucesso. Se uma única operação que seja do bloco da transação falhar, toda a transação deverá ser cancelada, as transações são aplicadas de uma forma “tudo ou nada”. Caso haja falha em qualquer operação da transação, o banco de dados será retornado ao estado anterior ao início da transação. 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. R: 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 decrementem o valor do semáforo, violando assim a execução mútua.
Compartilhar