Countless computerized activities are driven by timing measurements, often behind the user’s back. For instance, if the screen is automatically switched off after you have stopped using the computer’s console, it is due to a timer that allows the kernel to keep track of how much time has elapsed since you pushed a key or moved the mouse. If you receive a warning from the system asking you to remove a set of unused files, it is the outcome of a program that identifies all user files that have not been accessed for a long time. To do these things, programs must be able to retrieve a timestamp identifying its last access time from each file. Such a timestamp must be automatically written by the kernel. More significantly, timing drives process switches along with even more visible kernel activities like checking for time-outs.
We can distinguish two main kinds of timing measurement that must be performed by the Linux kernel:
Keeping the current time and date so they can be returned to user
programs through the
ftime( ), and
gettimeofday( ) system calls (see
Section 6.7.1 later in
this chapter) and used by the kernel itself as timestamps for files
and network packets
Maintaining timers — mechanisms that are able to notify the kernel (see the later section Section 6.6) or a user program (see the later section Section 6.7.3) that a certain interval of time has elapsed
Timing measurements are performed by several hardware circuits based on fixed-frequency ...