Don when you're talking about modern computers there are actually two clocks involved.
There is the hardware clock the "RTC" Real Time Clock and the system clock.
When the computer isn't running the hardware clock keeps time for the computer running off the battery installed on the mother-board.
When the system is booted the RTC is basically ignored and is used to throw interrupts to the operating system to perform involuntary context switches for processes back to the operating system's task scheduler, among other things too.
So usually when a system is booted the system clock of the operating system is synched with the hardware RTC and when the system is shutdown the RTC is synched back with the system clock.
ie:
On boot
RTC -> system clock
on shutdown
system clock -> RTC
Inevitably the arrival of this interrupt (IRQ) which returns control from processes back to the operating system and also updates the "system clock" from the hardware RTC is not perfect. The system clock either may race or lag behind what the actual "real time" is. There is a ton of reasons including but not limited to CPU stalls, integer errors in calculating the MIPS of the CPU (under Linux this is called bogoMIPS) or other amounts of time where the CPU is losing control of the system like DMA from hardware etc etc etc....
To drift from the main subject for a second, IRQ arrivals to the CPU are the basis for the entropy in a modern systems pseudo random number generator, ie Keyboard, Mouse, Harddisks, Network Interface etc. If this gives you any insight. Just like the "RTC"/"System Clock" The seed from the pseudo random number generator (enumerator) is loaded/stored on boot/shutdown. IRQ's from these devices cause context switches too... It's a complex machine running under the hood of your box.
The answer to solve this problem is to use a program that implements a version of the christian algorithim and use your internet connection to keep your machine synched to an atomic clock. The "NIST" National Institute of Standards and Technology
http://www.nist.gov/ provides a time server on the internet and programs to keep your system in check.
http://tf.nist.gov/service/its.htmChristian's algorithim does a very good job keeping your computer's "System clock" accurate in which the explanation of how it does this is beyond the scope of this discussion.
Time drift is a real world problem for all of us in the computer industry, thus we run programs that keep all of our computers synched to a time server so that they're all running accurate time. This is a key necessity
to team software development when using concurrent repositories for versions source code. And the list goes on.
I hope this is sufficient explanation of why your computer clock is lousy and what to do about it.
I remember this question was very similar to an essay question that I had to answer for my distriubuted systems course, but I had to explain how Christian's algorithm actually worked.