Qu'entend-on par interruptions dans le contexte des systèmes d'exploitation?

9

J'ai décidé de lire les concepts de systèmes d'exploitation de Silberschatz, Galvin Gagne (8e édition) au cours de l'été. Je suis arrivé à un sujet qui me déroute - les interruptions et leur rôle en ce qui concerne les systèmes d'exploitation.

Le texte dit qu'un système d'exploitation commencera un premier processus tel que "init" et attendra ensuite qu'un "événement" se produise et cet événement est généralement signalé par une interruption. Le texte indique également que l'interruption peut provenir du matériel ou du logiciel. Comment ça marche, un peu plus en détail? Le système d'exploitation est-il entraîné par des interruptions?

Je suis juste à la recherche d'une compréhension globale.

Ockham
la source

Réponses:

8

Lorsque le système d'exploitation exécute un processus tel que "init", il aurait envoyé des signaux à d'autres sous-systèmes / gestionnaires de périphériques, etc., comme la mémoire, les périphériques d'E / S, etc. L'interruption n'est qu'un moyen de dire au processeur ou au OS qu'il est prêt, ou qu'il a une nouvelle entrée, etc. Donc, au cours de l'initialisation, l'OS attend que les sous-systèmes soient prêts, et une interruption de ces sous-systèmes indiquerait exactement cela. C'est donc à cela que se rapporte «l'événement».

En ce qui concerne les interruptions matérielles ou logicielles, les interruptions matérielles sont celles qui proviennent du matériel. Par exemple. Périphériques d'E / S comme le clavier, etc. Une interruption matérielle fait que le processeur enregistre son état et commence l'exécution du gestionnaire d'interruption. D'un autre côté, les interruptions logicielles sont des instructions dans le jeu d'instructions, ce qui oblige le processeur à changer son niveau de privilège de superviseur utilisateur, également appelé changement de contexte. Ces détails seront traités plus loin dans le manuel.

le chaos
la source
4

Les interruptions permettent au système d'exploitation de prendre connaissance d'un événement externe, tel qu'un clic de souris. Les interruptions logicielles, mieux connues sous le nom d'exceptions, permettent au système d'exploitation de gérer des événements inhabituels tels que des erreurs de division par zéro provenant de l'exécution de code.

La séquence des événements est généralement la suivante:

  1. Le matériel signale une interruption au processeur
  2. Le processeur remarque l'interruption et suspend le logiciel en cours d'exécution
  3. Le processeur passe à la fonction de gestionnaire d'interruption correspondante dans le système d'exploitation
  4. Le gestionnaire d'interruption suit son cours et revient de l'interruption
  5. Le processeur reprend là où il s'était arrêté dans le logiciel précédemment exécuté

L'interruption la plus importante pour le système d'exploitation est l'interruption du minuteur. L'interruption temporisée du tic permet au système d'exploitation de reprendre périodiquement le contrôle du processus utilisateur en cours d'exécution. L'OS peut alors décider de planifier un autre processus, revenir au même processus, faire le ménage, etc. L'interruption de la minuterie fournit la base du concept de multitâche préemptif.


la source
4

Une interruption est un événement "inhabituel" qui doit être traité immédiatement , indépendamment de tout ce qui se passe. Je dis «inhabituel» entre guillemets, car ils ne sont pas nécessairement inattendus ou mauvais, mais «inhabituels» du point de vue du CPU car ils «se produisent tout simplement» alors qu'il est occupé à exécuter du code qui peut ne pas être lié.

Le CPU dispose d'un mécanisme pour écouter les interruptions et d'une manière de configurer "ce qu'il faut faire" lorsque des interruptions de toutes sortes se produisent. Cela permet au système d'exploitation de faire en sorte qu'il soit averti lorsque les périphériques matériels font des choses (y compris l'horloge matérielle très importante, qui génère simplement des interruptions à intervalles réguliers). Grâce à la configuration de gestion des interruptions du CPU, le code désigné dans le système d'exploitation prendra le contrôle chaque fois que des interruptions se produisent.

L'ordinateur est dans un état très désagréable (pour un programmeur d'application) lorsqu'un gestionnaire d'interruption commence à s'exécuter; la machine était occupée à faire autre chose (qui pourrait être n'importe quoi ) et maintenant le système d'exploitation a été informé que "quelque chose s'est passé". Il doit rassembler toutes les autres informations nécessaires pour gérer réellement l'interruption de n'importe où dans la machine où il devrait se trouver et faire tout le traitement requis sans déranger que "pourrait être n'importe quoi" qui s'exécutait sur le CPU. Si le système d'exploitation souhaite changer le processus d'application en cours d'exécution, il devra enregistrer suffisamment de contexte pour pouvoir le restaurer plus tard (encore une fois, sans perturber ce contexte), puis charger un autre contexte, puis laisser le CPU reprendre son fonctionnement normal. exécution dans ce contexte.

Comme mentionné, les interruptions sont utilisées pour obtenir des notifications des périphériques matériels (la seule alternative serait de les vérifier périodiquement), de garder une trace du temps et d'obtenir l'opportunité garantie de reprendre le contrôle d'un processus d'application (afin de changer quelle application est en cours d'exécution) , récupération à partir de processus d'application exécutant des instructions non valides, et également pour permettre aux applications de faire des demandes au système d'exploitation. Ces derniers sont appelés appels système. Pour empêcher les applications de gâcher la machine et entre elles, elles s'exécutent normalement avec la machine en "mode utilisateur", ce qui empêche l'application de faire essentiellement autre chose que lire et écrire de la mémoire (virtuelle) qui lui est déjà allouée. Cela signifie que pour faire quoi que ce soitsinon (lecture / écriture de fichiers, demande de mémoire supplémentaire, accès aux appareils, etc.), l'application doit effectuer un appel système; il le fait essentiellement en laissant des informations sur ce qu'il veut faire quelque part, il sait que le système d'exploitation le recherchera, puis en exécutant une instruction CPU qui provoque une interruption du bon type. Le système d'exploitation peut alors voir ce que l'application essayait de faire et déterminer s'il doit exécuter cette demande. Cette garantie que le système d'exploitation sera impliqué dans toute tentative de processus de faire quoi que ce soit qui affecte quoi que ce soit en dehors du processus est la seule façon dont les politiques d'accès peuvent être appliquées.

Donc, essentiellement, oui, le système d'exploitation est entraîné par des interruptions. Un système d'exploitation «abstrait» amène la machine dans un état de «fonctionnement normal» et à un moment donné passe le contrôle à un processus «normal». Dans des circonstances normales, le système d'exploitation ne reprendra alors le contrôle qu'en gérant les interruptions; mais comme à peu près rien d'intéressant ne se produit sans interruption, le système d'exploitation a essentiellement le contrôle de tout tout le temps.

Ben
la source
3

Le système d'exploitation est piloté par des interruptions. Cela signifie que:

S'il n'y a aucun processus à exécuter, aucun périphérique d'E / S à entretenir et aucun utilisateur auquel répondre, un système d'exploitation restera silencieux, attendant que quelque chose se produise. Les événements sont presque toujours signalés par l'occurrence d'une interruption ou d'une interruption, une interruption est une interruption matérielle générée lorsqu'une instruction non valide est donnée, puis elle renvoie le contrôle au système d'exploitation.

Un exemple d'une instruction non valide est lorsqu'un programme essaie d'accéder à l'espace mémoire d'un autre programme sans autorisation.

Peter Mortensen
la source
les interruptions ne doivent pas toujours être quelque chose de mauvais ou invalide comme vous l'avez décrit
je décrivais l'interruption de piège, pour autant que je sache qu'elle est générée en raison d'une erreur ou d'instructions invalides. merci pour la notification