Uma preempção do kernel pode acontecer no contexto do processo com o estado 'TASK_INTERRUPTIBLE'?

0

Se um processo se definir para o estado de TASK_INTERRUPTIBLE , ele poderá ser precedido por outros componentes do kernel? Em caso afirmativo, acho que esse processo talvez tenha perdido a chance de ativação devido à falha na verificação da condição de ativação.

    
por user3824053 25.06.2015 / 04:43

1 resposta

2

O estado TASK_INTERRUPTIBLE tem a ver com a maneira pela qual uma tarefa é colocada em suspensão quando chama o agendador: seu nome é abreviação de "suspensão interrompível". Ele não controla a preempção (e, de fato, o Linux tinha TASK_INTERRUPTIBLE muito antes de ser feito (opcionalmente) preemptível).

Preempção não é sono; uma tarefa em execução expulsa da CPU é executável, não está dormindo.

Haverá caos total se uma tarefa puder ser colocada em suspensão se for interrompida enquanto seu estado de suspensão estiver definido como TASK_INTERRUPTIBLE ou outro tipo de suspensão.

Alguém em 2003 suspeitou da mesma coisa que eu acho que você está suspeitando e postou na lista de discussão do LKML:

link

Veja a continuação e discussão restante do desenvolvedor do Kernel, Rob Love.

Uma tarefa TASK_INTERRUPTIBLE deve permanecer na fila de execução sob preempção. Os hacks que fazem isso acontecer, como existiam em 2003, são discutidos no tópico acima.

    
por 25.06.2015 / 04:56