Isso é feito pelo agendador do kernel, quando um processo é agendado para ser executado, o tempo em que ele está sendo executado é adicionado ao total desse processo. O planejador escolhe um processo para executar de 100 a 1000 vezes por segundo, dependendo do SO e da configuração. (Esse período de tempo é o intervalo de tempo.)
Um sleep(10)
usará menos que um microssegundo de tempo de CPU porque faz com que o processo pare de ser executado. O agendador então escolherá outro processo para começar a executar (ou se não houver nenhum que esteja pronto para rodar, a CPU pode ficar inativa). Um cronômetro será criado para o processo que expira em 10
segundos. Nesse momento, o agendador escolherá o processo a ser executado na CPU no próximo intervalo de tempo disponível.
As operações que envolvem E / S de arquivo também farão com que o processo pare de ser executado enquanto a CPU aguarda que o disco ou a rede esteja pronta, assim eles não usarão muito tempo de CPU.
Operações que levam tempo de CPU seriam aquelas que lêem / escrevem variáveis, fazem operações matemáticas numéricas, constroem e varrem variáveis de string, loops e instruções if.
Não existe uma fórmula simples para informar quanto tempo de CPU será usado por um determinado programa. Depende do que exatamente o programa faz. A típica página da Web que está apenas lendo / escrevendo um banco de dados não usará muito tempo de CPU.