Uptime

Bonjour,

Je suis désolé si la réponse à ma question a déjà été posté quelque part mais j’ai eu beau chercher via google je n’ai pas trouvé.

Je ne savais pas non plus où posté vu que c’est pas vraiment un problème que j’ai mais plus une question existentielle qui me tracasse depuis un petit moment

Sans plus de suspens la voici : Comment l’ordinateur fait-il pour savoir depuis combien de temps il est allumé ?

Genre quand on lui demande uptime

root@debian-tt:/home/tt# uptime 19:55:49 up 1:24, 2 users, load average: 0.23, 0.26, 0.15

Il m’indique que mon ordinateur est allumé depuis 1h24 … ma question n’est pas de savoir comment lui demander (sinon j’ai déjà la réponse) mais comment est-ce qu’il le calcule ?

Je pense (mais juste comme ça) que ça doit être un truck du même style que les montres à quartz

Merci d’avance ^^

Salut,

Pour savoir l’age que j’ai je soustrais ma date de naissance de la date du jour :laughing:

sous entendu il regarde a quel heure je l’ai allumé et il calcule ?

dans ce cas : comment sait il à quelle heure je l’ai allumé, combien de temps s’est passé entre le moment où je l’ai allumé et le moment présent ?

fr.wikipedia.org/wiki/Horloge_temps_r%C3%A9el

Peut-être en voyant de se côté là ? [source fiable ?]

Dans ce cas ca serait le même principe que les montres à quartz

Probablement, horloge temps réel de la carte mère, alimentée par la pile lithium quand le pc est eteint surement…

mais quand on retire la pile puce … on ne réinitialise pas l’heure pourtant (enfin il ne me semble pas)

Si, on réinitialise bien l’horloge RTC de la carte mère.

sinon : man rtc

(je ne connaissais pas cette page de man pas avant de chercher à te répondre)

humm, peut être pas sur toutes les Cartes Mères, mais toutes celles ou j’ai du retirer la pile se sont vues revenir à zéro au niveau de l’heure, et au premier janvier 1900 niveau date (ou quelque chose dans le style)

Les fichiers les plus anciens de /proc/, peut-être ? J’en ai deux qui semblent correspondre : mtrr et stat.

Il n’y aurait pas un fichier quelque part qui mémorise les logs de démarrage ?

Il utilise une horloge qu’il incrémente, la meilleure preuve est la suivante:

00:00:01 up 494 days, 12:47, 3 users, load average: 0.99, 0.95, 0.91 00:00:01 up 495 days, 12:47, 3 users, load average: 0.99, 0.97, 0.91 00:00:02 up 496 days, 12:47, 3 users, load average: 1.34, 1.03, 1.23 00:00:01 up 10:19, 3 users, load average: 0.98, 1.16, 1.52 00:00:02 up 1 day, 10:19, 3 users, load average: 2.38, 2.34, 2.27 00:00:01 up 2 days, 10:19, 3 users, load average: 0.97, 0.95, 0.98 00:00:01 up 3 days, 10:19, 3 users, load average: 0.91, 0.92, 0.91 00:00:02 up 4 days, 10:19, 3 users, load average: 4.87, 4.46, 4.38 00:00:01 up 5 days, 10:19, 3 users, load average: 0.95, 0.93, 0.95 00:00:01 up 6 days, 10:19, 3 users, load average: 1.36, 1.19, 1.08 [..] 00:00:01 up 17 days, 10:19, 3 users, load average: 0.00, 0.00, 0.00 00:00:01 up 18 days, 10:19, 3 users, load average: 0.01, 0.02, 0.00 00:00:01 up 19 days, 10:19, 3 users, load average: 0.00, 0.00, 0.00 12:21:28 up 19 days, 22:40, 3 users, load average: 0,02, 0,01, 0,00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT francois tty2 - 26Feb07 15:33 0.11s 0.06s ssh cerbere francois tty3 - 12May07 0.00s 0.79s 0.78s -bash francois pts/0 cerbere.rebelles Tue22 24:45m 0.02s 0.02s -bash dim jui 27 12:21:43 CEST 2008 00:00:02 up 20 days, 10:19, 3 users, load average: 0.00, 0.00, 0.00 00:00:01 up 21 days, 10:19, 3 users, load average: 0.00, 0.00, 0.00 00:00:01 up 22 days, 10:19, 3 users, load average: 0.00, 0.00, 0.00 00:00:01 up 23 days, 10:19, 3 users, load average: 0.00, 0.00, 0.00 où l’on voit qu’au 497 jour, il revient à zéro. On peut noter que j’étais connecté sur la console tty2 depuis le 26 Fevrier 2007 et que cette commande avait été faite le 27 Juillet 2008 soit largement plus que 19 jours. C’est donc un compteur qu’il incremente. Si on regarde il y a 2^32 centièmes de secondes dans 497,10 jours. C’est donc un compteur incrémenté tous les centièmes de secondes (en utilisant l’horloge interne)

Ok, donc en fait je pense que ma question concernait plus le fonctionnement de l’horloge interne (oui, maintenant j’en suis a me demander qu’elle etait ma question)

J’ai vu sur wikipedia que c’etait le même principe que les montres quartz, est ce que c’est vraiment ca ? Du moins ça ma l’air credible. En fait c’est tout bête, ya juste une montre a l’interieur de l’ordi

Après le fonctionnement en lui même de la fonction uptime … c’etait pas la question à l’origine mais c’est vrai que ca peut être interressant de savoir comment ca marche, je suppose qu’il utilise le même principe que lorsqu’en C, ou en Caml on utilise des fonctions servant a calculer le temps (genre en se basant sur la “montre” de l’ordinateur)

en tout cas merci pour vos eclaircissements :023

Ben oui.
Tu as l’heure dans le bios, donc l’horloge est bien dans la carte mère… Y’a rien de magique! :wink:

Certes l’horloge dite “temps réel” de la carte mère est l’équivalent d’une montre à quartz, mais ce n’est pas elle que le noyau utilise pour compter le temps car elle n’est pas assez “fine” : sa granularité est d’une seconde, ce qui est insuffisant pour le fonctionnement du système. Le noyau gère une horloge système basée sur un temporisateur programmé traditionnellement à une fréquence de 100 Hz sur architecture x86, soit une période de 10 ms. Mais on peut compiler le noyau avec une fréquence plus élevée (250, 300, 1000 Hz) pour une meilleure réactivité. Les seuls moments où l’horloge temps réel est utilisées sont le démarrage pour récupérer l’heure courante et l’arrêt pour la sauvegarder.