Quelle est la différence entre les interruptions matérielles et logicielles ?


La seule différence est la manière dont elles sont déclenchées. Une interruption matérielle est déclenchée par le matériel (généralement un périphérique externe à l'unité centrale, comme une carte réseau, une puce son, etc.) alors qu'une interruption logicielle est provoquée par le logiciel lui-même, un peu comme un appel de fonction.

Dans les deux cas d'interruptions HW et SW, le contrôle est redirigé vers une routine de service d'interruption dont le travail consiste à prendre toute action nécessaire, puis à renvoyer le contrôle au point où l'interruption a eu lieu. Souvent, l'objectif de la routine d'interruption est d'effectuer le travail minimum nécessaire pour renvoyer le contrôle au programme précédent, en reportant les actions plus complexes pour qu'elles soient traitées plus tard pendant les temps morts du CPU. C'est ce qu'on appelle un "appel de procédure différé", ou DPC, et cela évite que les interruptions matérielles ne dégradent les performances globales du système de manière imprévisible en donnant toujours la priorité à ces interruptions par rapport à d'autres travaux.


Au début du PC, une variété de contrôles système de bas niveau étaient fournis par le BIOS par le biais d'interruptions logicielles. Par exemple, une sortie vidéo simple était fournie par une série de fonctions sur int 10h, et les disques pouvaient être lus, écrits ou formatés au niveau du secteur en utilisant int 13h. De même, MS-DOS fournissait des services de système d'exploitation de niveau supérieur tels que l'ouverture, la création, la lecture et l'écriture de fichiers sur int 21H. D'une certaine manière, il s'agissait des premières API résidant en mémoire, avant l'avènement d'API de système d'exploitation plus complexes utilisant des DLL dans Windows ou des bibliothèques dynamiques dans Linux.


Il existe également une classe d'interruptions logicielles ("exceptions") qui sont sous le contrôle du CPU mais qui ne sont't explicitement appelées par le programme en cours d'exécution. Il peut s'agir, par exemple, de défauts de page causés par l'accès à une mémoire qui a été transférée vers une mémoire externe, ou de violations d'accès causées par l'accès à une mémoire à laquelle le programme n'est pas autorisé. Dans de tels cas, le contrôle est redirigé vers une routine du système d'exploitation qui gère la situation, comme le plantage du programme de manière gracieuse dans le cas d'une violation d'accès, ou le chargement d'une page nécessaire à partir du stockage externe et le retour au point d'un défaut de page comme si rien ne s'était produit.