Функция библиотеки C clock()
должна возвращать количество тактов с момента запуска процесса.
В действительности ядро, вероятно (см. Примечание), имеет переменную "current_ticks_since_boot" и запоминает, когдапроцесс был запущен и делает что-то вроде "current_ticks_since_boot - process->start_time
".Не имеет значения, сколько потоков запущено (на каком количестве процессоров), или если ни один из потоков процесса не запущен (например, все заблокированы, ожидая чего-то).
Примечание: Современные ядра обычно используютПеременные «на процессор» для отслеживания текущих тиков с момента загрузки и для синхронизации переменных для каждого ЦП, и могут (делать) использовать встроенный в ЦП счетчик, который может подвергаться воздействию пространства пользователя, чтобы избежать затратвызова API ядра.