Home » Questions » Computers [ Ask a new question ]

What is a CPU tick?

What is a CPU tick?

Asked by: Guest | Views: 225
Total answers/comments: 2
Guest [Entry]

"A tick is an arbitrary unit for measuring internal system time. There is usually an OS-internal counter for ticks; the current time and date used by various functions of the OS are derived from that counter.

How many milliseconds a tick represents depends on the OS, and may even vary between installations. Use the OS's mechanisms to convert ticks into seconds.

On MS Windows, there are 10,000 ticks in a millisecond (see http://msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx ).
On Linux, the number of clock ticks per second can be obtained using sysconf(_SC_CLK_TCK);. See e.g. http://linux.die.net/man/2/times

As to why a thread reports it's not being called: That will depend on whether the thread is blocking somewhere (waiting, I/O etc.). If it is not blocking, then yes, the OS's scheduler will decide when it gets to run, which may be a long time if the system is busy.

Edit:

Note that, perhaps unfortunately, some authors also use tick as a synonym for processor clock cycle (e.g. this text). I believe this usage is less widespread, but still, best to find out first what people are talking about."
Guest [Entry]

"In addition to sleske's answer I wrote a C program that will print the ""OS ticks per second"" ft:

// C headers
#include <stdio.h>

// Posix headers
#include <unistd.h>

int main(int argc, char * argv[]){

long ft; // OS ticks per second

t = sysconf(_SC_CLK_TCK);
printf(""ft = %ld\n\n"", ft);

return 0;
}

In my case I am on OS Linux Debian system and when I compile this C program and run it, it will always print ft = 100. Note that here unit is not written but it is ""ticks per second"". Therefore this is a frequency! We can write it with a unit:

ft = 100 1/s

If we want to get a period t out of frequency ft this equation is the missing link.

t = 1/ft ⟹ t = 1/(100 1/s) ⟹ t = 1/100 s

Let's convert this in ˙ms˙:

t = 1/100 s = (1 * 10^(-3)) s / (100 * 10^(-3)) = 1 * m s / (100 * 10^(-3)) = 1 * m s * 10^3 * 10^(-2) = 10^4 ms = 10 ms.

So tick happens every 10 ms on OS Linux Debian."