Maison Tutoriel système Linux Un examen plus approfondi des minuteurs du noyau Linux : mécanismes asynchrones basés sur les interruptions et principes de contexte hors processus

Un examen plus approfondi des minuteurs du noyau Linux : mécanismes asynchrones basés sur les interruptions et principes de contexte hors processus

Jul 18, 2024 am 11:13 AM

深入了解 Linux 内核定时器:基于中断的异步机制与非进程上下文原则

1. Minuterie du noyau 1. Concepts de base

Dans certains scénarios, nous devons effectuer certaines actions après une heure précise, et nous ne voulons pas gaspiller de CPU en attendant. À ce moment-là, la minuterie est un mécanisme très approprié. Une minuterie est utilisée pour exécuter une fonction à un certain moment dans le futur afin d'accomplir une tâche spécifique.

Les minuteurs du noyau indiquent au noyau d'appeler une fonction spécifique avec des paramètres spécifiques à un moment donné. Le minuteur s'exécute de manière asynchrone sur son inscrit. Lorsque le minuteur est en cours d'exécution, la tâche qui a enregistré le minuteur peut être en veille ou en cours d'exécution sur d'autres processeurs, ou peut même s'être terminée depuis longtemps.

Le minuteur du noyau sous Linux est implémenté sur la base d'interruptions (douces) Minuterie d'application Linux, c'est-à-dire qu'il se trouve dans le contexte d'interruption plutôt que dans le contexte de processus. Il y a quelques principes à suivre dans un contexte non-processus :

L'accès à l'espace utilisateur n'est pas autorisé

actuel n'a aucun sens et donc indisponible

Impossible de dormir ou de planifier. Un planning ou une sorte de wait_event ne peut pas être appelé, et aucune fonction susceptible de provoquer une mise en veille ne peut être appelée. Les sémaphores ne sont pas non plus disponibles car ils peuvent provoquer une hibernation.

应用定时器2_linux 应用定时器_应用定时器2安卓版下载

Le code du noyau peut déterminer s'il est actuellement dans le contexte d'interruption en appelant la fonction in_interrupt(). Tant qu'il renvoie non 0, cela signifie qu'il est dans le contexte d'interruption. Le noyau peut déterminer si la planification est actuellement autorisée en appelant in_atomic(). Les situations dans lesquelles la planification n'est pas autorisée incluent : le fait d'être dans un contexte d'interruption et un contexte doté d'un verrou de transporteur.

Étant donné que la minuterie est exécutée de manière asynchrone, la fonction de traitement de la minuterie doit prêter attention à la protection d'exclusion mutuelle.

2.Timers pris en charge par le noyau Linux

Le noyau Linux prend en charge deux types de timers :

Timer classique : un timer dont la précision dépend de la fréquence des interruptions de l'horloge de l'ordinateur. La précision de la minuterie est généralement relativement faible, avec une précision de 1 000/HZms. Cette minuterie est générée à une fréquence fixe, c'est-à-dire toutes les 1000/HZms. Si la fonction d'horloge dynamique n'est pas activée, aucune perturbation de synchronisation réelle ne peut se produire lorsque la minuterie expire. Par exemple, seules les minuteries suivantes sont ajoutées au système : minuteries d'expiration de 11 ms, 52 ms et 78 ms, et les minuteries expirent avec précision. le temporisateur expirera tous les multiples de 4 ms (4, 8, 12...), il n'y aura donc pas nécessairement de perturbation de synchronisation au moment où le temporisateur expirera.

Minuterie à fréquence d'images élevée : la précision de la minuterie classique est relativement faible. Dans certaines situations, une minuterie de plus grande précision est requise, comme dans les applications multimédias du système d'exploitation Linux chinois, c'est pourquoi ce type de minuterie est introduit dans le système. Cette minuterie peut essentiellement se produire à tout moment.

应用定时器2_linux 应用定时器_应用定时器2安卓版下载

Deux notions d'exception s'imposent également ici :

Horloge dynamique : L'horloge périodique minuterie d'application Linux n'est activée que lorsqu'une tâche doit être réellement exécutée, sinon la technologie de l'horloge périodique est désactivée. L'approche consiste à désactiver l'horloge périodique si vous devez planifier l'exécution d'une inactivité ; puis à activer l'horloge périodique jusqu'à l'expiration de la minuterie suivante ou jusqu'à ce qu'une interruption se produise. L'horloge ponctuelle est une condition préalable à la réalisation d'une horloge dynamique, car la caractéristique clé de l'horloge dynamique est qu'elle peut être arrêtée ou redémarrée selon les besoins, et une horloge périodique pure ne convient pas à ces scénarios.

Horloge périodique : une horloge qui forme périodiquement l'heure.

En termes d'application, les minuteries ont deux utilisations principales :

Timeout : indique une perturbation qui se produira après une certaine période de temps. En fait, lors de l'utilisation du timeout, dans la plupart des cas, le timeout ne devrait pas se produire et la minuterie est souvent annulée avant l'expiration du délai. De plus, même s'il n'est pas annulé, l'incident de délai d'attente n'est souvent pas un incident précis. Par exemple, les différents temporisateurs utilisés dans le réseau expriment souvent le sens que s'il n'y a pas... avant ce moment, cela peut. être considéré..., la valeur de ce temps est souvent une valeur empirique ou une valeur calculée, et n'est pas une exigence temporelle précise. Dans ces situations, la minuterie classique est suffisante.

Timer : utilisé pour implémenter le timing. Par exemple, lors de la lecture du son, les données doivent être envoyées régulièrement à la carte son. Dans ces situations, il existe des exigences strictes en matière de temps si les données ne sont pas envoyées à la carte son à un moment donné. avec le temps, une distorsion sonore se produira. À ce stade, une minuterie de haute précision doit être utilisée.

应用定时器2安卓版下载_linux 应用定时器_应用定时器2

Linux peut être invité à fonctionner dans le mode suivant via la configuration :

Horloge dynamique à fréquence d'images élevée

Horloge de période de fréquence d'images élevée

Horloge dynamique à faible débit

Horloge de période à faible taux de code

3. Minuteur de noyau à faible débit

linux 应用定时器_应用定时器2安卓版下载_应用定时器2

Le temporisateur à faible débit est le temporisateur du noyau le plus courant. Le noyau utilisera l'interruption d'horloge du processeur ou toute autre source d'horloge périodique appropriée comme référence temporelle du temporisateur. Les interruptions d'horloge se produisent périodiquement, HZ fois par seconde. La fonction de traitement du timer correspondant à cette interruption est généralement timer_interrupt. Dans le traitement de cette fonction, elle sera éventuellement ajustée en do_timer et update_process_timers. Parmi eux, do_timer sera responsable des tâches à l'échelle du système et globales : mise à jour des jiffies et traitement des statistiques de processus ; et cette dernière fonction effectuera des statistiques de processus pour former TIMER_SOFTIRQ pour fournir une connaissance du temps au planificateur.

Lorsque la minuterie expire, la minuterie sera supprimée du tableau d'activation avant que la fonction de traitement de la minuterie ne soit appelée. Par conséquent, si vous souhaitez réexécuter après un certain temps après cette exécution, vous devez à nouveau ajouter le périphérique de minuterie. . Dans le système SMP, la fonction de minuterie sera exécutée par la CPU qui l'a enregistrée.

L'implémentation du timer du noyau doit répondre aux exigences et hypothèses suivantes :

La gestion du timer doit être la plus simple possible.

La conception doit avoir une bonne évolutivité lorsque le minuteur d'activité est considérablement réduit

La plupart des minuteries expirent en quelques secondes ou au plus quelques minutes, et les minuteries avec de longs délais sont assez rares.

Une minuterie doit fonctionner sur le même processeur que celui où elle a été enregistrée.

L'implémentation du timer du noyau à faible débit est très intelligente. Il est basé sur une structure de données par CPU. Le tableau de base de timer_list contient des pointeurs pointant vers cette structure. Si base est NULL, ce timer n'a pas été appelé pour s'exécuter ; sinon, ce pointeur indique quelle structure de données (c'est-à-dire quel processeur) l'exécute.

Chaque fois que le code du noyau enregistre un timer (via add_timer ou mod_timer), l'opération est finalement effectuée par internal_add_timer (dans kernel/timer.c), qui ajoute le nouveau timer à la "table en cascade" associée au CPU actuel "dans le timer. tableau unidirectionnel.

Comment fonctionnent les tables en cascade :

Si la minuterie expire dans les 0 à 255 jiffies suivantes, elle est ajoutée à l'un des 256 tableaux spécialement prévus pour les minuteries à court terme, en utilisant expires (c'est-à-dire que le tableau auquel il est ajouté est déterminé par les bits du délai d'expiration). 8 bits inférieurs du déterminé) déterminez à quel tableau ajouter

S'il expire plus tard (mais avant 16384 jiffies), il est ajouté à l'un des 64 tableaux. Ces 64 tableaux sont liés aux 8-13 bits d'expiration. Les bits déterminent quel tableau est utilisé. .

Des techniques similaires sont appliquées aux bits expirés 14-19, 20-25 et 26-31.

Si le minuteur expire à une date ultérieure

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1670
14
Tutoriel PHP
1276
29
Tutoriel C#
1256
24
Internet fonctionne-t-il sur Linux? Internet fonctionne-t-il sur Linux? Apr 14, 2025 am 12:03 AM

Internet ne s'appuie pas sur un seul système d'exploitation, mais Linux joue un rôle important. Linux est largement utilisé dans les serveurs et les appareils réseau et est populaire pour sa stabilité, sa sécurité et son évolutivité.

Quel est le salaire de l'administrateur Linux? Quel est le salaire de l'administrateur Linux? Apr 17, 2025 am 12:24 AM

Le salaire annuel moyen des administrateurs Linux est de 75 000 $ à 95 000 $ aux États-Unis et de 40 000 € à 60 000 € en Europe. Pour augmenter le salaire, vous pouvez: 1. Apprendre en permanence de nouvelles technologies, telles que le cloud computing et la technologie des conteneurs; 2. Accumuler l'expérience du projet et établir un portefeuille; 3. Établissez un réseau professionnel et développez votre réseau.

Quelles sont les principales tâches d'un administrateur du système Linux? Quelles sont les principales tâches d'un administrateur du système Linux? Apr 19, 2025 am 12:23 AM

Les principales tâches des administrateurs système Linux incluent la surveillance du système et le réglage des performances, la gestion des utilisateurs, la gestion des packages de logiciels, la gestion de la sécurité et la sauvegarde, le dépannage et la résolution, l'optimisation des performances et les meilleures pratiques. 1. Utilisez le haut, le HTOP et d'autres outils pour surveiller les performances du système et régler. 2. Gérez les comptes d'utilisateurs et les autorisations via des commandes UserAdd et d'autres commandes. 3. Utilisez APT et YUM pour gérer les packages logiciels pour assurer les mises à jour du système et la sécurité. 4. Configurez un pare-feu, surveillez les journaux et effectuez une sauvegarde de données pour assurer la sécurité du système. 5. Dépannage et résoudre par l'analyse des journaux et l'utilisation des outils. 6. Optimiser les paramètres du noyau et la configuration des applications et suivre les meilleures pratiques pour améliorer les performances et la stabilité du système.

Quelles sont les différences de prise en charge de la virtualisation entre Linux et Windows? Quelles sont les différences de prise en charge de la virtualisation entre Linux et Windows? Apr 22, 2025 pm 06:09 PM

Les principales différences entre Linux et Windows dans le support de virtualisation sont: 1) Linux fournit KVM et Xen, avec des performances et une flexibilité exceptionnelles, adaptées aux environnements de personnalisation élevés; 2) Windows prend en charge la virtualisation via Hyper-V, avec une interface amicale, et est étroitement intégré à l'écosystème Microsoft, adapté aux entreprises qui reposent sur le logiciel Microsoft.

Quel est le but principal de Linux? Quel est le but principal de Linux? Apr 16, 2025 am 12:19 AM

Les principales utilisations de Linux comprennent: 1. Système d'exploitation du serveur, 2. Système intégré, 3. Système d'exploitation de bureau, 4. Environnement de développement et de test. Linux excelle dans ces domaines, offrant des outils de stabilité, de sécurité et de développement efficaces.

Est-il difficile d'apprendre Linux? Est-il difficile d'apprendre Linux? Apr 18, 2025 am 12:23 AM

Apprendre Linux n'est pas difficile. 1.Linux est un système d'exploitation open source basé sur UNIX et est largement utilisé dans les serveurs, les systèmes intégrés et les ordinateurs personnels. 2. Comprendre le système de fichiers et la gestion de l'autorisation est la clé. Le système de fichiers est hiérarchique et les autorisations incluent la lecture, l'écriture et l'exécution. 3. Les systèmes de gestion des packages tels que APT et DNF rendent la gestion des logiciels pratique. 4. La gestion des processus est implémentée via PS et les commandes supérieures. 5. Commencez à apprendre à partir de commandes de base telles que MKDIR, CD, Touch et Nano, puis essayez une utilisation avancée telle que les scripts shell et le traitement de texte. 6. Les erreurs courantes telles que les problèmes d'autorisation peuvent être résolues via Sudo et CHMOD. 7. Les suggestions d'optimisation des performances incluent l'utilisation de HTOP pour surveiller les ressources, le nettoyage des fichiers inutiles et l'utilisation de SY

L'avenir du logiciel Linux: FlatPak et Snap remplaceront-ils les applications de bureau natives? L'avenir du logiciel Linux: FlatPak et Snap remplaceront-ils les applications de bureau natives? Apr 25, 2025 am 09:10 AM

Pendant des années, la distribution des logiciels Linux reposait sur des formats natifs comme Deb et RPM, profondément ancrés dans l'écosystème de chaque distribution. Cependant, Flatpak et Snap ont émergé, promettant une approche universelle de l'emballage des applications. Cet article examine

Top 7 outils pour comparer les fichiers dans Linux (avec des exemples) Top 7 outils pour comparer les fichiers dans Linux (avec des exemples) Apr 28, 2025 am 09:21 AM

Ce guide explore diverses méthodes pour comparer les fichiers texte dans Linux, une tâche cruciale pour les administrateurs système et les développeurs. Nous couvrirons les outils de ligne de commande et les outils Visual Diff, mettant en évidence leurs forces et leurs cas d'utilisation appropriés. Assumons

See all articles