|
Une interruption logicielle (souvent abrégée en SWI, ou parfois appelée appel de superviseur, SVC ou exception) est un mécanisme de l'architecture informatique qui permet à un programme de demander un service spécifique au système d'exploitation ou une fonction privilégiée du noyau. Contrairement aux interruptions matérielles, qui sont déclenchées par des événements externes (comme une pression sur un clavier ou un accès au disque), les interruptions logicielles sont déclenchées explicitement par le programme lui-même à l'aide d'une instruction spéciale.
Voici une ventilation des aspects clés :
* Objectif : Les interruptions logicielles offrent aux programmes utilisateur un moyen contrôlé et structuré d'accéder aux ressources et aux fonctions du système auxquelles ils n'ont pas directement accès. Ces fonctions peuvent inclure :
* Opérations d'E/S : Lire à partir d'un fichier, écrire sur une prise réseau, accéder à une imprimante.
* Gestion de la mémoire : Allocation et désallocation de mémoire, modification des paramètres de protection de la mémoire.
* Contrôle des processus : Créer, terminer ou basculer entre des processus.
* Communication inter-processus : Envoi et réception de messages entre différents processus.
* Appels système : Accéder aux services du système d’exploitation de manière standardisée.
* Mécanisme : Le programme exécute une instruction spéciale (l'instruction spécifique varie selon l'architecture; les exemples courants incluent « INT » dans x86, « SVC » dans ARM) avec un numéro identifiant le service demandé. Cette instruction déclenche une interruption ou une exception, transférant le contrôle au noyau du système d'exploitation.
* Exécution privilégiée : Le noyau fonctionne en mode privilégié, ayant accès au matériel et à la mémoire auxquels les programmes utilisateur ne peuvent accéder directement pour des raisons de sécurité et de stabilité. Les interruptions logicielles offrent un moyen sécurisé et médiatisé d'accéder à ces ressources privilégiées.
* Interface d'appel système : Le système d'exploitation fournit une interface bien définie (souvent appelée interface d'appel système ou API) qui spécifie quels numéros d'interruption logicielle correspondent à quels services et les paramètres requis. Les programmeurs utilisent cette interface pour demander des services sans avoir besoin de connaître les détails de mise en œuvre de bas niveau.
Exemple (conceptuel) :
Imaginez un programme souhaitant écrire des données dans un fichier. Il ne peut pas manipuler directement le matériel du disque. Au lieu de cela, il utilise une interruption logicielle pour demander le service d'écriture de fichiers du système d'exploitation. Le numéro d'interruption peut être, disons, 10. Le programme exécute l'instruction « INT 10 » avec les paramètres spécifiant le nom du fichier et les données à écrire. Le système d'exploitation intercepte cela, vérifie les autorisations du programme, gère les E/S disque de bas niveau et renvoie un résultat (succès ou échec) au programme.
Essentiellement, les interruptions logicielles constituent le principal moyen par lequel les programmes utilisateur interagissent avec le noyau du système d’exploitation, fournissant ainsi un mécanisme sécurisé et efficace pour la gestion des ressources système.
|