Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Timer, Quelle est la technologie ?

17 réponses
Avatar
LE TROLL
Bonjour,

Question TIMER

Pour que le Timer par exp s'active à une tâche (peu importe), toute les
minutes, comment sait-il qu'il y a une minute de passée (ah... il n'a pas de
cerveau avec un pile et d'horloge sur dos) ?
J'en déduis que le timer doit aller lire l'heure à chaque milliseconde, ce
qui en pratique est plus long car il y a des priorités dans les tâches plus
le délai de réponse... En plus, doit-il pour interroger l'horloge, passer
par le processeur, je crois que oui ?

Bref, si quelqu'un a une doc là dessus, sur le mécanisme logiciel du
Timer, j'aurais besoin d'infos, merci.

Cordialement ;o)

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.

7 réponses

1 2
Avatar
Jean-marc
LE TROLL wrote:
Bonjour,

Question TIMER

Pour que le Timer par exp s'active à une tâche (peu importe), toute
les minutes, comment sait-il qu'il y a une minute de passée (ah... il
n'a pas de cerveau avec un pile et d'horloge sur dos) ?
J'en déduis que le timer doit aller lire l'heure à chaque
milliseconde, ce qui en pratique est plus long car il y a des
priorités dans les tâches plus le délai de réponse... En plus,
doit-il pour interroger l'horloge, passer par le processeur, je crois
que oui ?
Bref, si quelqu'un a une doc là dessus, sur le mécanisme logiciel
du Timer, j'aurais besoin d'infos, merci.



Hello,

En interne, le controle Timer utilise l'API Windows GetTickCount().
Cette API utilise elle même le timer system standard, invoqué via
NtQuerySystemTime.
Elle même utilise une fonction bas niveau du C (Time). Cette fonction elle
même demande
au hardware de lui retourner l'heure. Au niveau le plus bas, c'est le BIOS
qui maintient tout ça gràce à une des horloges internes du PC.

Pour en revenir au controle Timer, pour savoir qu'un temps X est écoulé, il
regarde à intervalle régulier la différence entre le temps courant et le
temps lors du dernier déclenchement ou lors de l'init. Si ce delta(Temps)
est supérieur ou égal à Interval, la procédure affecté à ton contrôle Timer
est appellée.
Le temps du dernier déclenchement ou temps de l'init est stocké statiquement
en interne.

Il est évident qu'il passe par le processeur pour faire tout ça :-) Et oui,
les controles timer peuvent être un peu gourmands en ressource, mais en
pratique pas tant que ça, du moins tant qu'on les utilise à bon escient,
c'est à dire typiquement avec 2 conditions:
- Interval nettement supérieur à 100 ms (en pratique: 200 ou 300 ms minimum)
- Temps d'exec de la fonction appellée lors du déclenchement nettement
inférieur à 10ms, en pratique pas plus de 5 ms.

En dehors de ces conditions, il existe des tas d'alternatives plus
appropriées. On en parle un peu dans la FAQ:
http://faq.vb.free.fr/index.php?question6
http://faq.vb.free.fr/index.php?question8


--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
LE TROLL
Bonjour,

Oui, mais là tu parles d'un composant Timer électronique à part, qui est
armée, et ensuite compte tout seul, en revoie l'info en fin de cycle, mais
je suis loin d'être certain qu'il y ait ça sur un PC, en plus il faut
rajouter les procédure de veille, genre mouse ou click.

Jacques plus haut a sorti un plan électronique, estimant qu'un Timer
(une sorte de multi-minuterie en somme), Timer électronique était intégré au
PC désormais, je dois dire que je n'en sais rien, là est ma question ?

Merci, cordialement ;o)

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Jacques93" a écrit dans le message de
news:%
LE TROLL a écrit :
Bonjour Jaques,

Intéresant ce que tu me dis et montre, ce serait la bonne solution,
toutefois je n'ai pas l'impresion qu'elle est sur nos PC, car il suffit
d'y mettre 10 timer qui tournent en permanence, et on sent nettement le
ralentissement... Même un MouseMove fait pareil...




C'était juste pour en signaler l'existence, je ne sais pas comment est
implémenté le contrôle Timer sous VB, mais les Timers "matériel" sont
utilisés de manière intensive par tous les OS actuels.

En soit les Timers peuvent tourner en permanence, comme ton réveil, c'est
quand il interrompe le processeur (via un autre composant) pour des tâches
lourdes que cela peut poser problème, un peu comme si ton réveil sonne, en
même temps ton tel fixe, ton portable, et on sonne à la porte ...


--

Cordialement,

Jacques.


Avatar
LE TROLL
Heu, précision, je ne sais pas avec quoi le timer se cadence, mais je ne
confonds pas avec l'horloge de cadencement, qui est un quartz électrifié qui
vibre, puis on divise sa fréquence pour le cadencer à un certain nombre de
Hertz, mais ça c'est de l'électronique...

--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Jacquouille14" a écrit dans le message de
news:4abf17fc$0$307$
Jacques93 a écrit :
LE TROLL a écrit :
Bonjour Jaques,

Intéresant ce que tu me dis et montre, ce serait la bonne solution,
toutefois je n'ai pas l'impresion qu'elle est sur nos PC, car il suffit
d'y mettre 10 timer qui tournent en permanence, et on sent nettement le
ralentissement... Même un MouseMove fait pareil...




C'était juste pour en signaler l'existence, je ne sais pas comment est
implémenté le contrôle Timer sous VB, mais les Timers "matériel" sont
utilisés de manière intensive par tous les OS actuels.

En soit les Timers peuvent tourner en permanence, comme ton réveil, c'est
quand il interrompe le processeur (via un autre composant) pour des
tâches lourdes que cela peut poser problème, un peu comme si ton réveil
sonne, en même temps ton tel fixe, ton portable, et on sonne à la porte
...




Bonjour,
Tous les ordis ont des horloges. C'est ce qui permet de cadencer
(la fréquence) les différents éléments et les échanges de bits.
Ne pas confondre horloges et irq (interrup request). Les irq
ne stoppent pas le processeur mais lui demandent des cycles
d'horloge pour effectuer une tâche. Le processeur donne du temps
en fonction de "l'urgence" de la demande de temps.
Je ne sais ou se trouve la base de temps des timers. Je dirais qu'il
y a 3 solutions: un quartz, la fréquence du courant 230v, ou une
fréquence autre prise sur la carte mère.
Noter que des expériences sont menées pour faire fonctionner des ordis
sans horloge.

--
Jacques dit Jacquouille


Avatar
LE TROLL
Bonjour Jean-Marc,

Oui mais à te lire, si la fonction va lire le timer, il faut qu'elle le
fasse en boucle, ou alors elle a une horloge dans la tête et peut compter le
temps avant d'y aller (cas d'un timer électronique intégré sur un PC ???) ?
Faut rajouter tous les fonction d'appels permanent (Mouse, Click)...
Pour Jacques, voir plus haut, y a un timer électronique sur les PC, pour les
autres dont moi = non !
Il faudrait un électronicien spécialisé en informatique PC ...

Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Jean-marc" a écrit dans le message de
news:4abf55b5$0$2855$
LE TROLL wrote:
Bonjour,

Question TIMER

Pour que le Timer par exp s'active à une tâche (peu importe), toute
les minutes, comment sait-il qu'il y a une minute de passée (ah... il
n'a pas de cerveau avec un pile et d'horloge sur dos) ?
J'en déduis que le timer doit aller lire l'heure à chaque
milliseconde, ce qui en pratique est plus long car il y a des
priorités dans les tâches plus le délai de réponse... En plus,
doit-il pour interroger l'horloge, passer par le processeur, je crois
que oui ?
Bref, si quelqu'un a une doc là dessus, sur le mécanisme logiciel
du Timer, j'aurais besoin d'infos, merci.



Hello,

En interne, le controle Timer utilise l'API Windows GetTickCount().
Cette API utilise elle même le timer system standard, invoqué via
NtQuerySystemTime.
Elle même utilise une fonction bas niveau du C (Time). Cette fonction elle
même demande
au hardware de lui retourner l'heure. Au niveau le plus bas, c'est le BIOS
qui maintient tout ça gràce à une des horloges internes du PC.

Pour en revenir au controle Timer, pour savoir qu'un temps X est écoulé,
il regarde à intervalle régulier la différence entre le temps courant et
le temps lors du dernier déclenchement ou lors de l'init. Si ce
delta(Temps) est supérieur ou égal à Interval, la procédure affecté à ton
contrôle Timer est appellée.
Le temps du dernier déclenchement ou temps de l'init est stocké
statiquement en interne.

Il est évident qu'il passe par le processeur pour faire tout ça :-) Et
oui, les controles timer peuvent être un peu gourmands en ressource, mais
en pratique pas tant que ça, du moins tant qu'on les utilise à bon
escient, c'est à dire typiquement avec 2 conditions:
- Interval nettement supérieur à 100 ms (en pratique: 200 ou 300 ms
minimum)
- Temps d'exec de la fonction appellée lors du déclenchement nettement
inférieur à 10ms, en pratique pas plus de 5 ms.

En dehors de ces conditions, il existe des tas d'alternatives plus
appropriées. On en parle un peu dans la FAQ:
http://faq.vb.free.fr/index.php?question6
http://faq.vb.free.fr/index.php?question8


--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;







Avatar
Jean-Marc
On 27 sep, 21:27, "LE TROLL" <le wrote:
        Bonjour Jean-Marc,

    Oui mais à te lire, si la fonction va lire le timer, il faut qu 'elle le
fasse en boucle,



Non.

ou alors elle a une horloge dans la tête et peut compter le
temps avant d'y aller (cas d'un timer électronique intégré sur un P C ???) ?



Oui et non.


Faut rajouter tous les fonction d'appels permanent (Mouse, Click)...
Pour Jacques, voir plus haut, y a un timer électronique sur les PC, pou r les
autres dont moi = non !



Il y a sur un PC plusieurs horloges (au sens électronique), pilotées
par un quartz et de l'électronique pour implémenter des diviseurs. Une
des plus connues est disponible via l'interruption 0x8h: c'est la
fameuse horloge à 18,6 tick/s. Il y a aussi une "vraie" horloge
maintenant l'heure système, évidemment.

Il y a aussi un mécanisme de timers internes Windows (utilisant cette
électronique, les mécanismes d'interruptions, etc.), bien sur. Ca
s'utilise via les fonctions de gestion de timers système, par exemple
SetTimer. Voir à ce sujet (en anglais...)
http://msdn.microsoft.com/en-us/library/ms644906(VS.85).aspx. Ces
fonctions émettent des messages et savent appeler des procédures
callback.

Il faut bien comprendre que le modèle est en couches: La couche VB (le
composant Timer) qui utilise la couche Windows API (getTickCount() et
autres) qui utilise Time() de la librairie C qui utilise le Bios qui
utilise les interruptions; la, on est rendu tout en bas: derrière,
c'est de l'électronique, un quartz, des diviseurs, etc.).

Si tu es vraiment intéressé par le sujet, il existe des bouquins (en
anglais pour la plupart) qui décrivent tout ça de manière très
précise. Pour l'architecture x86, un bouquin en français décrivait
tout ça; j'en ai un exemplaire à la maison, et on le trouve encore sur
Amazon : http://www.amazon.fr/bible-PC-Micha%C3%ABl-Tischer/dp/2742904441


--
Jean-marc Noury (jean_marc_n2)
Avatar
Alexis
LE TROLL wrote:
Bonjour,

Question TIMER

Pour que le Timer par exp s'active à une tâche (peu importe), toute les
minutes, comment sait-il qu'il y a une minute de passée (ah... il n'a
pas de cerveau avec un pile et d'horloge sur dos) ?
J'en déduis que le timer doit aller lire l'heure à chaque milliseconde,
ce qui en pratique est plus long car il y a des priorités dans les
tâches plus le délai de réponse... En plus, doit-il pour interroger
l'horloge, passer par le processeur, je crois que oui ?

Bref, si quelqu'un a une doc là dessus, sur le mécanisme logiciel du
Timer, j'aurais besoin d'infos, merci.



Tout est expliqué en long et en large dans MSDN, comme toujours...
Avatar
LE TROLL
En chinois ou en français ?

--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Alexis" a écrit dans le message de
news:
LE TROLL wrote:
Bonjour,

Question TIMER

Pour que le Timer par exp s'active à une tâche (peu importe), toute les
minutes, comment sait-il qu'il y a une minute de passée (ah... il n'a pas
de cerveau avec un pile et d'horloge sur dos) ?
J'en déduis que le timer doit aller lire l'heure à chaque milliseconde,
ce qui en pratique est plus long car il y a des priorités dans les tâches
plus le délai de réponse... En plus, doit-il pour interroger l'horloge,
passer par le processeur, je crois que oui ?

Bref, si quelqu'un a une doc là dessus, sur le mécanisme logiciel du
Timer, j'aurais besoin d'infos, merci.



Tout est expliqué en long et en large dans MSDN, comme toujours...


1 2