Basic spinlock doubt

0

Eu li que no spinlock, o processo continua aguardando o bloqueio continuamente em um loop até receber sinal (lock) ou release (lock) de outro processo. Isso causa a espera ocupada e, portanto, os ciclos da CPU são desperdiçados.

Minha dúvida é se a CPU está continuamente verificando o valor da variável de bloqueio no loop, então como algum outro processo executará completamente a seção crítica e liberará o bloqueio como a execução da seção crítica também precisa da CPU e da CPU está ocupada verificando o valor de bloqueio outro processo?

    
por Zephyr 31.10.2017 / 09:27

1 resposta

2

Mesmo quando um processo está girando em um bloqueio, o agendador de tarefas ainda está ativo e agendará outras tarefas. Em um sistema com uma única CPU, a tarefa de rotação será suspensa e outra tarefa será executada em seu lugar; em um sistema com várias CPUs, o comportamento exato dependerá do número de tarefas em execução.

    
por 31.10.2017 / 09:52