Fonctionnement des interruptions - ASM - Programmation
Marsh Posté le 16-04-2006 à 15:10:10
Interruption hard :
C'est beaucoup plus économique en ressources d'être "notifié" que quelque chose a eu lieu (IT quand on bouge la souris) plutot que d'être obligé d'aller scruter en permanence une adresse pour voir si quelque chose s'est passé (Windows n'est pas obligé d'aller demander au système en permanence si la souris a bougé). Tu sais aussi en travaillant sous IT que ton traitement de l'information (évènement sur la souris) sera traité quelque soit le travail qu'effectue l'ordinateur (= même si Word est planté, la souris bouge quand même).
Interruption soft :
En passant par une interruption, on peut changer de niveau de privilège sur le processeur. On se désolidarise aussi de l'emplacement mémoire du code que l'on veut executer (= on ne connait pas l'adresse du code qui va être executé). Et non le code qui appelle une interruption n'a pas forcement le droit d'executer lui même ce que va faire la routine d'IT.
Marsh Posté le 16-04-2006 à 13:32:10
Malgres les années depuis lequel je programme, il y un concept que je n'ait pas encore bien compris : les interruptions.
Je sais quil y a deux types :
Les interuptions materielles : ex je deplace la souris , cela provoque un interruption qui va "obliger" le cpu a arreter ce quil etait entrain de faire et de soccuper de l'evenement en question (en remplacant eip puis en le remplacant comme avant, un call en quelque sorte). Dans ce cas ci, aller recopier les coordonees de la souris vers certain endroit en memoire. J'ai bon ? pourquoi ne pas mapper directement la souris a un certain endroit en memoire (toujours identique) de facon a ce que les coordonnes soit toujours a jour automatiquement et que le cpu n'ai qua aller puiser simplement a cet endroit pour aller chercher la position (un peu comme cela ce fait sur console et sur d'autre architectures.... qd je veux lire si A ou B est enfonce j'ai juste a aller lire un valeur memoire c tout meme chose pour les sorties : il suffit daller ecrire a un endroit precis...)
Interruption logicielle:
declenchees directement depuis le code. va obliger le cpu a executer un certain morceau de code a endroit precis (ou? dans le BIOS?) pour soccuper de levenement. De nouveau pourquoi le code qui genere l'interruption ne pourrait til pas directement ce brancher a cette adresse pour exectuer lui meme le code puis revenir ensuite ? (grace a un call a cette addresse). (surtout que le code qui execute un interruption a certainement les droits de pouvoir le faire peu importe ou le code a executer ca se trouve)
Message édité par red faction le 16-04-2006 à 13:37:23