2016-12-12 5 views

Répondre

0

La planification se produit sur les interruptions de minuterie. La règle de base est qu'une seule interruption peut être ouverte à la fois, donc si vous allez dormir dans l'interruption "Obtenir des données de l'appareil X", l'interruption de la minuterie ne peut pas fonctionner pour la programmer.

Les interruptions se produisent également plusieurs fois et se chevauchent. Si vous mettez l'interruption "got data" en veille, et que vous obtenez plus de données, que se passe-t-il? Il est assez déroutant (et fragile) que la règle fourre-tout est: ne pas dormir dans les interruptions. Vous allez le faire mal.

0

Considérons un processeur avec un blocage d'essorage qui sert maintenant une interruption. Si vous programmez(), vous violez l'invariant des propriétaires de serrures de spin ne pas sortir du CPU. Notez que, pour la plupart, les verrous de rotation NE désactivent PAS les interruptions. Parfois, il y a des verrous pertinents pour les gestionnaires d'interruption et dans les cas où spin_lock_irq et/ou spin_lock_irqsave sont utilisés.