44 votes

Qu'est-ce qu'une tick d'UC ?

Question :

  • Comment est calculé un tick de CPU et que représente-t-il ?
  • Est-ce qu'un seul tick équivaut à 10 millisecondes donc si un thread n'était pas appelé pendant (5 * 10 ticks = 500 ticks) est-ce que cela signifie que le CPU était peut-être trop occupé pour planifier ledit thread au travail ?

38voto

sherbang Points 2675

Un tick est une unité arbitraire pour mesurer le temps interne du système. Il y a généralement un compteur interne OS pour les ticks; l'heure et la date actuelles utilisées par diverses fonctions de l'OS sont dérivées de ce compteur.

Le nombre de millisecondes qu'un tick représente dépend de l'OS, et peut même varier entre les installations. Utilisez les mécanismes de l'OS pour convertir les ticks en secondes.

Quant à savoir pourquoi un thread signale qu'il n'est pas appelé : cela dépendra du fait que le thread est bloqué quelque part (en attente, E/S etc.). S'il n'est pas bloqué, alors oui, l'ordonnanceur de l'OS décidera quand il pourra s'exécuter, ce qui peut prendre du temps si le système est occupé.

Édit :

Notez que, peut-être malheureusement, certains auteurs utilisent également tick comme synonyme de cycle d'horloge du processeur (par exemple dans ce texte). Je crois que cette utilisation est moins répandue, mais il est quand même préférable de d'abord savoir de quoi parlent les gens.

3voto

Stefan Schweizer Points 151

Éditer : Tiré de PC Hardware in a Nutshell:

"L'horloge du processeur coordonne toutes les opérations du CPU et de la mémoire en générant périodiquement un signal de référence temporelle appelé cycle d'horloge ou tic. La fréquence de l'horloge est spécifiée en gigahertz (GHz), ce qui spécifie des milliards de tics par seconde. La vitesse de l'horloge détermine la rapidité d'exécution des instructions. Certaines instructions nécessitent un tic, d'autres plusieurs tics, et certains processeurs exécutent plusieurs instructions pendant un tic."


Le temps entre les tics est déterminé par votre vitesse d'horloge, et il faut un à plusieurs tics selon l'opération effectuée. Par exemple, un CPU de classe 286 a besoin de 20 tics pour multiplier deux nombres.

Si vous avez besoin de minuteurs à haute performance, alors je ne pense pas que vous puissiez compter sur des tics constants sur tous les systèmes.

Le planificateur de CPU pourrait avoir retardé le thread, surtout s'il y avait un autre thread avec une priorité plus élevée. Donc oui, le CPU aurait pu être trop occupé.

-1voto

Russell Fulton Points 163

En plus de la réponse de sleske, j'ai écrit un programme C qui affichera les "tics par seconde du système d'exploitation" ft:

// En-têtes C
#include 

// En-têtes Posix
#include 

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

    long ft; // Tics par seconde du système d'exploitation

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

    return 0;
}

Dans mon cas, je suis sur un système d'exploitation Linux Debian et lorsque je compile ce programme C et que je le lance, il affichera toujours ft = 100. Notez que l'unité n'est pas écrite ici mais c'est "tics par seconde". Par conséquent, il s'agit d'une fréquence! Nous pouvons l'écrire avec une unité:

ft = 100 1/s

Si nous voulons obtenir une période t à partir de la fréquence ft, cette équation est le lien manquant.

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

Convertissons cela en ms:

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

Un tic se produit toutes les 10 ms sur OS Linux Debian.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X