Qu'est-ce que Scrutation (polling) ?
Méthode où le CPU interroge de façon répétée l'état d'un périphérique pour en détecter les changements. Simple, mais elle consomme du temps et de l'énergie même lorsque rien ne se passe.
Nom japonais: ポーリング
« Scrutation (polling) » apparaît dans 3 questions d'entraînement réparties sur 3 thèmes, dont Système d'exploitation et matériel, Systèmes embarqués et firmware, CPU et architecture.
Domaine: Systèmes embarqués et firmware
Comment fonctionne la scrutation
Avec la scrutation (polling), le CPU s'informe de l'état d'un périphérique en lisant son registre d'état en boucle, par exemple en testant l'indicateur « données reçues prêtes » d'un UART jusqu'à ce qu'il soit positionné, puis en lisant l'octet. Le test peut être une attente active serrée ou une vérification périodique dans la boucle principale ou dans une routine de timer. La scrutation est simple à écrire et à déboguer, et son timing est prévisible, car les tests ont lieu exactement là où le programme les place. En C, le pointeur vers le registre doit être déclaré volatile pour que le compilateur relise réellement le matériel à chaque passage au lieu de réutiliser une valeur mise en cache.
Scrutation ou interruptions
Avec les interruptions, le périphérique signale au CPU qu'un événement s'est produit ; le CPU suspend son travail en cours, sauvegarde son état, exécute un gestionnaire puis reprend. Le CPU reste ainsi libre d'effectuer d'autres tâches ou de dormir pendant l'attente, ce qui compte pour les appareils sur batterie. La scrutation consomme du temps CPU et de l'énergie même lorsque rien n'a changé, et son temps de réaction dans le pire cas est fixé par l'intervalle de scrutation. Chaque interruption, en revanche, entraîne un surcoût fixe pour entrer dans le gestionnaire et en sortir, que la scrutation évite.
Questions fréquentes
Quelle est la différence entre scrutation et interruptions ?
Avec la scrutation, le CPU vérifie de façon répétée l'état d'un périphérique ; avec les interruptions, le périphérique prévient le CPU lorsque son état change. La scrutation est plus simple et prévisible, tandis que les interruptions permettent au CPU d'effectuer d'autres tâches ou de dormir entre-temps.
Pourquoi un registre scruté doit-il être déclaré volatile en C ?
Sans volatile, le compilateur peut supposer que la valeur ne change pas et ne la lire qu'une fois, transformant la boucle de scrutation en boucle infinie. volatile impose une nouvelle lecture du registre matériel à chaque itération.
La scrutation est-elle toujours inefficace ?
Non. Lorsque les événements arrivent à un rythme très élevé, la scrutation évite le surcoût de sauvegarde et de restauration de chaque interruption et peut traiter les événements par lots, ce qui la rend plus efficace que les interruptions.