• The now pointer is incremented by hardclock() at every tick. If the list pointed to by now is nonempty, the softclock() process is scheduled to run.
• Softclock() compares the point of time stored in the callout struct with current time. If these points of time matches the subroutine stored in the callout struct is called.
• When an event n ticks in the future is inserted, it is placed in the list with index (now+n) mod 200.