Como os sinais são implementados no Linux?

5

Quando um processo envia um sinal para outro processo, o processo de recebimento espera até que seja reprogramado para ser executado? Então, se a cada 1 ms escolhemos um processo para executar, isso significa que a latência de gerar o sinal para a entrega do sinal é de cerca de 0,5 ms? (Suponha que só tenhamos dois processos).
E, mais geralmente, como os sinais são implementados no Linux?

    
por WiSaGaN 30.07.2012 / 09:30

2 respostas

6

Isso é (um pouco) indefinido.

Se o processo de recebimento estiver configurado para agir após o recebimento do sinal (ou seja, o sinal não é ignorado ou bloqueado, o processo torna-se executável. Se tiver prioridade suficiente, ele também é programado imediatamente, mas isso não é garantido.

    
por 30.07.2012 / 11:13
1

Não adivinhe o valor.

Enviar um sinal para um processo é como um evento (não confiável) na fila para esse processo. Quando o processo foi reprogramado para execução, o planejador verifica a fila do processo e organiza a ação a ser executada. O problema é que você nunca sabe quando o agendador está de olho nesse processo.

Assim, os programadores que usam sinais devem perceber que haveria uma latência imprevisível e inevitável entre a chegada do sinal e a ação a ser tomada. Então, não tente adivinhar seu valor.

Mesmo o sinal em tempo real não ajuda nessa latência. Aumentar a prioridade do cronograma do processo é muito mais eficaz. Mas o seu código nunca deve depender do recurso de qualquer agendador para ser executado corretamente.

Veja o Capítulo 10 da APUE.

    
por 27.08.2013 / 11:10

Tags