Sincronização de Processos Flashcards

1
Q

A desabilitação de interrupções pode afetar com frequência o relógio do sistema. Explique por que isso pode ocorrer e como esses efeitos podem ser minimizados.

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Explique por que o Windows, o Linux e o Solaris implementam vários mecanismos de
trancamento. Descreva as circunstâncias em que eles usam spinlocks, locks mutex, semáforos mutex adaptativos e variáveis de condição. Em cada caso, explique por que o mecanismo é necessário.

A

spinlock refere-se a um mecanismo de sincronização no qual um thread aguarda ativamente a disponibilidade de um recurso, verificando periodicamente se ele pode acessá-lo. É eficiente quando os threads aguardam por um curto período, pois evita a sobrecarga de troca de contexto ou reescalonamento. Bloqueio mutex é um mecanismo que garante o acesso exclusivo a recursos compartilhados, permitindo que apenas um thread acesse uma seção crítica de código por vez, prevenindo conflitos de acesso concorrente.
Bloqueio mutex adaptável combina elementos do “spinlock” e do “bloqueio mutex”. Ele permite que um thread aguarde girando (spin) por um recurso se estiver atualmente bloqueado por outro thread em execução. Caso contrário, o thread entra em modo de espera. Essa abordagem é eficiente para recursos que podem ser acessados com curtos períodos de espera.Semáforos são usados para controlar o acesso a recursos compartilhados. Eles mantêm uma contagem dos recursos disponíveis e permitem que threads prossigam quando recursos estão disponíveis. Semáforos podem ser binários (um recurso) ou de contagem (vários recursos). Variável de Condição é um mecanismo que permite que um thread avance quando uma condição específica é atendida. Se a condição não for atendida, o thread é colocado em uma fila de espera. Quando a condição é satisfeita, a variável de condição notifica um ou todos os threads na fila de espera, permitindo que continuem a execução.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Qual é o significado do termo espera em ação? Que outros tipos de espera existem em um sistema operacional? A espera em ação pode ser totalmente evitada? Explique sua resposta.

A

Espera ocupada refere-se ao estado em que um processo ou thread aguarda um recurso, não realizando nenhuma tarefa útil enquanto espera. Embora seja preferível evitá-la, a espera ocupada tem usos específicos e desejáveis em sistemas operacionais.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Explique por que os spinlocks não são apropriados para sistemas com um único processador, mas são usados com frequência em sistemas multiprocessadores.

A

Os spinlocks não são recomendados em sistemas de processador único devido à execução de espera ocupada, que é vista como um desperdício de recursos de computação. Em sistemas multiprocessadores, especialmente em kernels, os spinlocks são usados, pois giram por um curto período de tempo, resultando em menos sobrecarga do que a troca de contexto ou o reescalonamento. Além disso, em sistemas multiprocessadores, o uso de spinlocks não desperdiça completamente o poder de computação, pois outros processadores continuam a funcionar enquanto um está em um spinlock.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Explique por que os spinlocks não são apropriados para sistemas com um único processador, mas são usados com frequência em sistemas multiprocessadores.

A

A exclusão mútua garante que apenas um thread possa acessar uma região crítica de cada vez. No entanto, se as operações wait() e signal() não forem atômicas, pode ocorrer uma situação de corrida. Por exemplo, se a contagem atual do semáforo for 1, e tanto o thread A quanto o thread B desejarem entrar na região crítica, eles podem executar a função wait() concorrentemente. Se essas operações não forem atômicas e forem interrompidas entre a leitura, a atualização e a gravação, ambos os threads podem entrar na região crítica simultaneamente, o que quebraria a exclusão mútua. Portanto, é crucial que as operações de semáforo, como wait() e signal(), sejam atômicas para garantir a correta exclusão mútua.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Mostre como um semáforo binário pode ser usado para implementar a exclusão mútua entre n processos

A

Um semáforo binário possui uma contagem de 0 ou 1, indicando a disponibilidade de um recurso protegido. Threads ou processos podem alcançar exclusão mútua usando esse semáforo: quando o recurso está livre (contagem 1), um thread/processo pode entrar na região crítica, reduzindo a contagem para 0. Outros aguardam na fila. Após concluir o trabalho, o thread/processo sinaliza o semáforo, aumentando a contagem e permitindo que outros na fila acessem a região crítica. A organização da fila pode seguir diferentes critérios, como ordem de chegada ou prioridade, garantindo que apenas um thread/processo entre na região crítica de cada vez.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly