Je suis actuellement en train de suivre un module sur la théorie des systèmes d'exploitation et j'ai quelques concepts que je n'arrive pas à saisir - est-ce que c'est le bon endroit pour poser des questions ?
Ma question principale porte sur les interruptions. Lorsque l'unité centrale détecte qu'il y a eu une interruption, je comprends qu'elle doit trouver l'origine de cette interruption. Ma compréhension est la suivante, quelqu'un pourrait-il me dire si c'est correct, et expliquer quelques lacunes dans mes connaissances ?
Pour que l'unité centrale détecte l'origine de l'interruption, elle pourrait interroger tous les objets pour identifier la source, mais ces questions basées sur les E/S prendraient beaucoup de temps. Au lieu de cela, il utilise le cycle d'interruption et attend un identifiant d'interruption sur le bus de données. S'il s'agit d'un bus de données de 8 bits, il y a 256 niveaux d'interruption (c'est-à-dire 2^8). (Pourquoi cela ?)
Une routine de service d'interruption (ISR) est donc écrite pour chaque niveau d'interruption possible et stockée dans une table à un emplacement fixe (vecteur d'interruption) qui est normalisé par le processeur. Dans mes notes, il est dit "L'emplacement doit être connu avant d'obtenir l'adresse". (Qu'est-ce que cela signifie ?)
L'identificateur de niveau d'interruption reçu dans le cadre du cycle d'interruption est utilisé comme un index dans le vecteur d'interruption. (Quelqu'un pourrait-il nous expliquer un peu plus en détail ?) . D'après ce que j'ai compris, une valeur, l'identifiant du niveau d'interruption, est transmise à l'unité centrale et utilisée pour pointer vers le vecteur d'interruption.
De plus, que signifie le fait de dire qu'une interruption est "servie" ?
Merci beaucoup, et désolé pour les longs paragraphes, je suis juste un peu confus par de nombreux aspects de tout ceci !