Sunteți pe pagina 1din 3

Interruption (informatique)

Un article de Wikipdia, l'encyclopdie libre.


En informatique, une interruption est un arrt temporaire de l'excution normale d'un programme informatique par le microprocesseur afin d'excuter un autre programme (appel routine d'interruption). Dans son acception la plus stricte, le terme ne dsigne que des interruptions dont l'excution est provoque par des causes externes au programme: avancement d'une horloge, signalisation de la compltion d'un transfert de donnes, etc. Cependant, on l'utilise aussi pour dsigner des exceptions, c'est--dire des arrts provoqus par une condition exceptionnelle dans le programme (instruction errone, accs une zone mmoire inexistante, calcul arithmtique incorrect, appel volontaire au systme d'exploitation...). On parle alors parfois d'interruptions asynchrones pour dsigner celles provoques par un vnement externe, et d'interruptions synchrones pour dsigner les exceptions. Ces dernires taient nommes droutements en terminologie CII-Honeywell-Bull.

//<![CDATA[ if (window.showTocToggle) { var tocShowText = "afficher"; var tocHideText = "masquer"; showTocToggle(); } //]]>Fonctionnement
Lors d'une interruption, le microprocesseur sauve tout ou une grande partie de son tat interne, gnralement dans la pile systme, et saute ensuite la routine d'interruption, gnralement en suivant une table qui donne pour chaque type d'interruption la routine excuter. Une fois le traitement de l'interruption termin, la routine se finit gnralement par une (ou plusieurs) instruction de retour d'interruption, qui restaure l'tat sauv et fait repartir le processeur de l'endroit o il avait t interrompu. Dans certains cas, la routine d'interruption modifie les adresses de retour, notamment pour effectuer des commutations de tches. Lors du fonctionnement de certaines parties du systme d'exploitation, il peut tre ncessaire de ne pas permettre les interruptions, soit parce que celles-ci perturberaient un compte serr du temps, soit parce que des structures de donnes sont en cours de modification (on ralise ainsi une sorte de verrou d'exclusion mutuelle dans un systme mono-processeur). Aussi, on peut gnralement bloquer (on dit souvent masquer) les interruptions. Dans la plupart des systmes, les interruptions bloques sont accumules, c'est--dire qu'elles sont excutes ds qu'elles sont dmasques. Cependant, pour chaque type d'interruption, le compteur d'interruptions en attente se rduit souvent un simple drapeau; si cela peut ne pas tre gnant si l'interruption signale des donnes en attente sur un priphrique, cela peut cependant occasionner des mauvais comptes si l'interruption dclenche l'incrmentation d'une horloge, si les interruptions sont bloques pour une dure suprieure la priode de l'horloge. Sur certains systmes, il existe une interruption non masquable, gnralement ddie au signalement d'une erreur catastrophique pour le systme (par exemple, dtection d'une erreur mmoire par code correcteur d'erreurs). Les interruptions peuvent par ailleurs tre hirarchises suivant des priorits. Une interruption de priorit suprieure est prise en compte lors du traitement d'une autre interruption, mais une interruption de priorit infrieure est mise en attente.

Usages
On utilise les interruptions principalement dans deux buts:

afin de permettre des communications non bloquantes avec des priphriques externes; afin de commuter entre les tches dans un ordonnanceur.

Un autre usage, celui-l non prvu initialement, est l'introduction de malversations : lors de la restauration du contexte, si le contenu de la zone de sauvegarde a t altr depuis l'appel (c'est le cas si l'interruption ou le droutement provoque en mode matre une altration du contenu de la zone de sauvegarde ou de la pile), le contexte restaur sera totalement diffrent du contexte d'appel, et pourra passer la main des suites d'instructions hostiles. Les systmes comme le matriel des microprocesseurs s'efforcent de plus en plus de rendre ces tches difficiles pour les pirates, mais la faille - bien que fortement rduite aujourd'hui - continue dans une certaine mesure exister.

Entres-sorties
Lorsque le microprocesseur interroge un priphrique (disque dur, port de communication...), il y a en gnral des dlais avant que les donnes ne puissent tre obtenues ou transmises. La solution la plus simple est simplement d'attendre les donnes ou la fin de la transmission en bouclant rptitivement sur un test (attente active, ou polling). Malheureusement, cela bloque tout programme en cours, ce qui est gnant sur un systme multi-tche. Sur les systmes modernes, on prfre donc gnralement un fonctionnement par interruption: le priphrique signale par une interruption qu'il est prt mettre, ou que les donnes ont t transmises ou reues, et une routine fait le traitement ncessaire. Pour les priphriques rapides (disque dur, USB...), on combine gnralement ce procd avec l'accs direct en mmoire (DMA) : des blocs de donnes sont lus ou crits en mmoire par le contrleur sans intervention du processeur, qui n'intervient qu'en dbut et en fin de transfert. L'usage d'interruptions par rapport au polling permet aussi des conomies d'nergie et un moindre chauffement : les microprocesseurs actuels possdent gnralement une instruction arrtant le microprocesseur en attente d'une interruption.

Multi-tche
On utilise galement les interruptions pour commuter les tches dans les systmes multi-tches. Gnralement, une interruption priodique est dclenche par une horloge (souvent 100 ou 1 000 Hz), et l'ordonnanceur est alors mis en action. Il peut commuter les tches en modifiant la tche de retour de l'interruption.

Remarque
De faon tout fait contre-intuitive, c'taient dans les premiers systmes les priphriques les plus lents qui taient affects des priorits d'interruption les plus hautes. En effet :

Ces interruptions tant peu nombreuses cause de cette lenteur, leur haute priorit n'avait que peu d'impact sur la charge Ces priphriques pouvaient tre synchrones (interruption lie une colonne de carte perfore sous le lecteur, par exemple) et exiger un traitement aussi immdiat que possible.

Les priorits taient attribues en ordre dcroissant ainsi : pupitre de commande, lecteur de cartes, imprimante, disque. Les interfaces graphiques n'ont plus permis que le traitement de l'cho d'un caractre soit trait par une routine de haute priorit (le positionnement de cet cho, en multifentrage et avec des polices de taille variable, ncessite en effet plusieurs dizaines de milliers d'oprations), et rendent

paradoxalement ces interfaces bien moins ractives dans les situations de fortes charges machine, en dpit de l'usage de processeurs considrablement plus puissants.

S-ar putea să vă placă și