Desempenho da CPU no comando sleep

0

Esta é uma questão inicial. Eu me pergunto o que acontece quando o comando sleep é acionado a partir de um script bash, por exemplo. Esse trabalho ainda seria executado, com menos prioridade?

    
por whitenoisedb 17.09.2014 / 00:21

1 resposta

2

Normalmente, sleep é o programa GNU sleep . Este programa chama a função GNU xnanosleep , que por sua vez chama a nanosleep chamada de sistema do Linux. E:

nanosleep()  suspends  the execution of the calling thread until either
at least the time specified in *req has elapsed, or the delivery  of  a
signal  that triggers the invocation of a handler in the calling thread
or that terminates the process.

Portanto, o processo, por definição, não está em execução (seja qual for a prioridade), mas está suspenso.

Testando isso:

sleep 10 & ps aux | grep $!
[1] 25682
muru  25682  0.0  0.0   7196   620 pts/13   SN   04:10   0:00 sleep 10

O estado do processo é SN :

   S    interruptible sleep (waiting for an event to complete)
   N    low-priority (nice to other users)

Ignore o N , acho que foi assim que começou. Então, o estado efetivo de sleep é interruptible sleep .

    
por muru 17.09.2014 / 00:34