It seems like some hardware timer would be necessary?
Sim, o kernel depende do hardware para gerar uma interrupção em intervalos regulares. Nos PCs, esse era, historicamente, o temporizador de intervalo programável 8253/8254 , ou uma emulação dele, então o local APIC local e, em seguida, o HPET .
Os kernels Linux atuais podem ser construídos para rodar “sem marcas” quando possível: o kernel programará temporizadores para serem acionados somente quando necessário, e se uma determinada CPU estiver executando um único processo, isso pode ser “nunca”. Na maioria dos casos, ticks dinâmicos são usados, então o kernel configura temporizadores para disparar em intervalos variados, dependendo de seus requisitos - menos interrupções significam menos wake-ups, o que significa que CPUs inativas podem ser mantidas em modos de baixa energia por períodos mais longos, o que economiza energia.