Isso representa o momento em que eu digito entrar em nanossegundos?
Bem, isso não poderia ser. Muitas coisas acontecem entre o seu hit em Enter e o comando de saída:
- Seu shell interpreta o comando e executa
/bin/date
. - O kernel cria um processo, fornece um PID, define seu pai, fornece algum espaço de endereço, registra o processo e assim por diante ...
- O programa
/bin/date
é executado. Provavelmente requer que alguma memória seja alocada. Ele chama várias rotinas de kernel relacionadas ao tempo, o que faz com que o processo alterne várias vezes (como qualquer outro que você dissesse ...) entre o modo de usuário e o modo kernel. - A saída do comando é enviada para a stdout e você pode vê-la no terminal, hora do dia!
Basicamente, você pode colocar desta forma:
- Você pressionou Enter .
- [alguns milissegundos passam, veja acima]
- O programa
date
chama as rotinas mágicas emtime.h
, mudando para o modo kernel para cada uma delas. Aqui, o sistema operacional obtém o horário atual dos relógios de hardware. - [alguns milissegundos passam, veja acima]
- Você obtém a saída.
Aqueles intermediários vezes podem variar de acordo com várias coisas, eles são pouco mensuráveis. Por exemplo, se suas CPUs tiverem muitos processos para manipular, seu processo date
terá que dormir mais entre cada uma das fases de execução.
Pode-se ir ainda mais longe adicionando:
- Você obtém a saída.
- Seus olhos piscam (100-400 milissegundos diz Wikpedia ).
- Você realmente vê a saída.
- Seu cérebro interpreta e entende isso.
Adicionando mais alguns milissegundos à contagem.