A sincronização entre processos concorrentes é fundamental p...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a E - semáforo mutex.
Vamos entender melhor o porquê.
A sincronização entre processos concorrentes é essencial para garantir que as operações realizadas em um sistema multiprogramável ocorram de maneira ordenada e correta, sem conflitos ou corrupção de dados. Isso é particularmente importante quando vários processos ou threads precisam acessar recursos compartilhados, como variáveis, arquivos ou segmentos de memória.
Um conceito fundamental para essa sincronização é a exclusão mútua. A exclusão mútua garante que, em um dado momento, apenas um processo (ou thread) possa acessar um recurso crítico. Isso evita situações de inconsistência e garante que os dados não sejam corrompidos por acessos simultâneos.
Vários mecanismos podem ser usados para implementar a exclusão mútua, um deles é o semáforo mutex. O semáforo mutex (abreviação de semaphore mutual exclusion) é um tipo específico de semáforo utilizado justamente para controle de acesso a um recurso compartilhado. Ele funciona como uma chave que permite a um único processo entrar na seção crítica de cada vez.
Ao contrário de técnicas que usam espera ocupada (busy wait), onde um processo permanece em um loop contínuo verificando se pode acessar o recurso, os semáforos mutex utilizam uma abordagem mais eficiente. Eles colocam os processos em uma fila de espera quando o recurso está ocupado, liberando-os quando o recurso estiver disponível, evitando desperdício de ciclos de CPU.
Agora, vamos analisar por que as outras alternativas estão incorretas:
A - deadlock: Um deadlock é uma situação onde dois ou mais processos ficam permanentemente bloqueados, esperando por recursos que nunca serão liberados. Não é um mecanismo de sincronização.
B - mutual lock: Não é um termo padrão em sistemas operacionais. Pode ser uma confusão com mutual exclusion (exclusão mútua) ou mutex.
C - escalonamento binário: Não se refere a um mecanismo de sincronização. O escalonamento é o processo de decidir qual processo deve ser executado pela CPU em um dado momento.
D - buffer contador: Refere-se a uma estrutura de dados que pode ser usada em várias operações, mas não é especificamente um mecanismo de sincronização para exclusão mútua sem espera ocupada.
Portanto, a alternativa E - semáforo mutex é a correta, pois é um mecanismo eficiente e amplamente utilizado para implementar a exclusão mútua em sistemas multiprogramáveis, evitando a deficiência da espera ocupada.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
O semáforo mutex é usado para exclusão mútua. Ele é projetado para garantir que apenas um processo de cada vez esteja lendo ou escrevendo no buffer e em variáveis associadas. Essa exclusão mútua é necessária para evitar o caos.
E.
Tanenbaum.
GABARITO E
Mutex: É uma variável compartilhada que pode estar em um de dois estados: destravado ou travado. Um bit para representá-lo:
- 0: destravado;
- Demais inteiros: travado;
Versão simplificada do semáforo utilizada quando a capacidade de contagem dele não é necessária.
ATENÇÃO!! Mutexes são bons somente para gerenciar a exclusão mútua de algum recurso ou trecho de código compartilhado.
FONTE: Tanenbaum
Um deadlock acontece quando duas ou mais tarefas bloqueiam permanentemente uma à outra; uma tarefa está bloqueando um recurso que a outra tarefa está tentando bloquear. Por exemplo:
A transação A adquire um bloqueio compartilhado na linha 1.
A transação B adquire um bloqueio compartilhado na linha 2.
A transação A agora solicita um bloqueio exclusivo na linha 2 e é bloqueada até que a transação B termine e libere o bloqueio compartilhado existente na linha 2.
A transação B agora solicita um bloqueio exclusivo na linha 1 e é bloqueada até que a transação A termine e libere o bloqueio compartilhado existente na linha 1.
A transação A não pode terminar até que a transação B termine, mas a transação B está bloqueada pela transação A. Essa condição é também chamada de dependência cíclica: a transação A tem uma dependência da transação B, e a transação B fecha o círculo tendo uma dependência da transação A.
Ambas as transações em um deadlock esperarão indefinidamente, a menos que o deadlock seja quebrado por um processo externo.
estudar teoria
Deadlock: Refere-se a uma situação em que dois ou mais processos ficam bloqueados indefinidamente, aguardando recursos que nunca serão liberados. Isso geralmente ocorre quando dois ou mais processos competem por recursos (como memória, arquivos ou dispositivos de E/S) e cada processo está esperando que o outro libere um recurso que ele precisa, resultando em um impasse.
Mutual Lock: Esse termo pode se referir a uma situação em que dois ou mais processos tentam adquirir o mesmo recurso exclusivo, o que pode levar a um deadlock. Ou pode referir-se a uma abordagem onde dois ou mais processos estão protegendo mutuamente sua execução, garantindo que apenas um deles execute uma seção crítica de código de cada vez.
Escalonamento binário: Esse termo não é comumente usado na área de sistemas operacionais ou computação concorrente. Pode se referir a um tipo específico de algoritmo de escalonamento ou a um método de escalonamento que considera apenas dois estados possíveis para os processos, como "pronto" e "bloqueado".
Buffer contador: Isso geralmente se refere a uma estrutura de dados utilizada para implementar buffers em sistemas concorrentes. Um buffer contador é uma variação de um buffer comum que inclui uma contagem do número de itens no buffer. Ele é frequentemente utilizado para comunicação entre threads ou processos concorrentes.
Semáforo mutex: Um semáforo mutex (abreviação de "mutual exclusion") é uma primitiva de sincronização utilizada para proteger o acesso a recursos compartilhados em ambientes de programação concorrente. Ele garante que apenas um processo ou thread possa acessar o recurso protegido por vez, evitando condições de corrida e garantindo consistência nos dados.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo