← Questões de Banco de Dados

Banco de Dados · FGV · 2024

Questão comentada de Banco de Dados

Com relação aos spinlock no MS SQL Server 2019, avalie as afirmativas a seguir. I. Os spinlocks não são uma exclusividade do MS SQL Server. São utilizados pelo sistema operacional quando é necessário obter acesso a uma determinada estrutura de dados somente por um curto intervalo de tempo. Por exemplo, quando uma thread não consegue obter acesso ao tentar adquirir um spinlock, ela é executada de maneira periódica se o recurso está disponível ou não, em vez de fazer uma suspensão imediata. Após algum tempo, a thread que está aguardando o spinlock será suspenso antes de poder adquirir o recurso. A suspensão permite que outras threads em execução na mesma CPU sejam executadas. II. O MS SQL Server usa spinlocks para proteger o acesso a algumas estruturas internas de dados. Os spinlocks são usados no mecanismo para serializar o acesso a determinadas estruturas de dados de maneira semelhante aos locks. III. A principal diferença entre o lock e o spinlock é o fato de que os locks executar um loop por um período verificando a disponibilidade de uma estrutura de dados. Por outro lado, uma thread tentando obter acesso a uma estrutura protegida por spinlock cederá imediatamente se recurso não estiver disponível. A suspensão requer a alternância de contexto de uma thread fora da CPU para que outra thread possa ser executada. Está correto o que se afirma em

Gabarito: D

Spinlock é uma trava usada para proteger estruturas internas por tempo muito curto, sem fazer a thread dormir de imediato. A ideia é simples: em vez de já entregar a CPU, a thread fica “girando” por um tempo, tentando de novo até conseguir o recurso ou até o sistema decidir suspender a espera. Isso evita o custo de alternância de contexto em disputas rápidas. No SQL Server, os spinlocks são usados para serializar acesso a certas estruturas internas, especialmente quando a contenção tende a ser breve. Eles não são uma invenção exclusiva do SQL Server: são um mecanismo conhecido no sistema operacional e em outras áreas de concorrência. A afirmativa I está correta porque descreve justamente esse comportamento: tentativa repetida por curto período e, se não resolver, suspensão posterior. A II também está correta porque o SQL Server realmente usa spinlocks para proteger dados internos e coordenar acesso de forma semelhante, embora não igual, aos locks. A III está errada porque inverte os conceitos: quem faz o “loop” de espera é o spinlock, não o lock. Já o lock costuma levar a espera bloqueada, com a thread cedendo a CPU, o que envolve alternância de contexto. Por isso, o gabarito é D, apenas I e II.

Continue treinando

Questões relacionadas