I've heard the term "Tickless OS" thrown around.
- What does it mean?
- Which OSes are tickless?
- How does it differ from a non-tickless (tickful?) OS?
I've heard the term "Tickless OS" thrown around.
A 'tick' in OS terms is an interval after which the OS will wake up to process any pending events.
So, if you have a 100Hz tick, then 100 times a second, the OS will wake up, check to see whether any timers have expired, execute their actions if there are, then go to sleep again. On a tick-less system, rather than waking up 100 times a second to see if anything is ready to process, the OS will look at when the next timer is due to expire and then sleep until that time.
Note that when the CPU is active, it's obviously not going to go into any kind of sleep mode, and the kernel will set up an interrupt for scheduling purposes. It's only tickless (as the comment points out) when there's nothing running on the CPU or (in very modern Linux kernels) when only one process is running.
Linux can run with or without ticks, with a compile-time switch. I don't know about any other systems.
This link provides some insights: Avoiding Processor Wake-Ups Saves Power
A fragment from the above link,
In order to take best advantage of the low power states offered by the latest processors, the operating system has to allow the processor to stay in those states as much as possible. A long-standing feature of the Linux* operating system has been a timer tick that supports services like helping the operating system keep internal time and monitor CPU usage by various applications and processes.
While that timer tick is useful, it also has the unfortunate side effect of waking the processor when it is in a low power state as many as 1,000 times per second. In fact, under some circumstances, the tick can prevent the processor from entering the deep power-saving states at all. Clearly, this effect can have a dramatic negative impact on power usage by the system.
RIOT (based on Microkernel Architecture) have tickless scheduler in it. for more information please find below link: https://riot-os.org/api/group__core__sched.html
"Tickless" or "tick-based" ("heart-beat") design of time control system not only affects power consumption and task scheduling but also affects resolution of any timers, delays, waits and etc.
If "tickless" the resolution is down to the resolution of the the hardware timer which is used to measure a "delay", plus some scheduler latency. Even in 8086 era the hardware resolution was down to few microseconds. In this design the hardware timer is set to measure a delay to nearest time controlled event, interrupts the CPU and scheduler awakes pending task.
In "heart-beat" solution the resolution is not better than +0...+1 "tick" which is currently in 1ms...15ms range.
Notice, it has no much to do with "stop interrupts when processor is asleep" or "dynamically adjust timer frequency". The "tickles" timing system in OS is very different design, while manipulating interrupts frequency is still a good old "heart-beat" with all negatives and positives.