Skip to content

MOOC NSI - fondamentaux.

Transcription de la vidéo

4.2.1.9 : Représentation binaire de l'information

[00:00:01] Maintenant que nous avons parlé d'interface système, nous allons voir ce que sont les appels système. En effet, les appels système sont tout simplement des appels de fonction qui font partie de l'interface système. Pour comprendre ce qui se passe quand on fait appel au système d'exploitation, il nous faut introduire la notion d'interruption. Une interruption est un événement asynchrone qui est destiné aux processeurs. Asynchrone veut tout simplement dire que nous ne pouvons pas prévoir à quel moment exactement cet événement va se produire. Destiné au processeur veut dire que c'est le processeur qui devrait réagir à cet événement qui s'est produit. Donc une interruption se passe et est traitée au niveau matériel. Par contre, les causes d'une interruption peuvent elles être aussi bien matérielles que logicielles. Au niveau matériel, effectivement, il y a plein de choses qui peuvent se passer. Typiquement, nous avons l'horloge qui fait avancer le temps dans notre machine et cette horloge peut être utilisée pour envoyer des alarmes. Donc, nous avons des interruptions horloge. Après, aussi quelque chose qui se passe de manière classique, c'est que nous interagissons avec notre machine en tapant sur le clavier et nous voyons ce qui est affiché sur l'écran. Donc, chaque opération d'écriture sur le clavier ou chaque affichage sur l'écran est en fait accompagnée par des interruptions. De côté logiciel, nous avons typiquement les appels système qui déclenchent des interruptions. Donc, quand on demande quelque chose au système, quand on appelle une fonction qui est fournie par le système d'exploitation, il y a un changement qui se passe au niveau matériel et nous avons des traitements qui se passent au niveau du processeur.

[00:02:01] Il y a d'autres (aussi) interruptions qui peuvent être déclenchées par le logiciel. C'est typiquement quand nous avons des exceptions, donc des erreurs d'exécution.

Comment ça se passe quand nous avons des interruptions qui sont déclenchées au niveau matériel? Ici vous voyez le schéma général de traitement d'une interruption. Alors le premier bloc nous montre le processeur qui exécute une instruction. Après chaque instruction, le processeur va vérifier s'il y a des interruptions qui ont été déclenchées et qui doivent être traitées ou non. Alors, s'il n'y a pas d'interruption, le processeur va continuer avec ce qu'il est en train d'exécuter avant, et sinon il va identifier l'interruption et décider s'il faut la traiter ou pas. Effectivement, il y a des interruptions qui n'arrivent pas tout de suite au processeur puisqu'elles peuvent être masquées, c'est-à-dire que le processeur ne va pas les prendre en compte. Quand il y a des interruptions qui arrivent au processeur, il peut y en avoir différentes et de différents types, et dans ce cas là, peut être qu'il y aura des priorités entre les interruptions et le processeur devra traiter les plus importantes, donc les plus prioritaires. Pour traiter une interruption, le processeur va exécuter un traitement spécifique en réaction à une telle ou telle interruption. Donc, il va exécuter ce qui s'appelle un traitant d'interruption. Une fois qu'il aura fini avec le traitant d'interruption, il va revenir vers une exécution normale et va reprendre le cycle où il commencera à exécuter les instructions et donc, après chaque instruction, vérifier s'il y a des interruptions ou non. Alors. Il y a quelque chose d'important à comprendre quand on fait ce type de traitement au niveau des interruptions, c'est que nous sommes au coeur du système d'exploitation et donc nous manipulons le matériel, c'est à dire que nous avons tous les droits et effectuons des opérations qui sont critiques.

[00:04:10] Critiques veut dire que ce sont des opérations qui peuvent corrompre le fonctionnement de notre système. C'est pour cela que quand on effectue donc le traitement d'un appel système, nous sommes dans un mode spécifique qui nous permet de nous protéger. Donc, un appel système est une opération privilégiée et il faut exécuter cette opération privilégiée avec les droits correspondants dans un mode correspondant qu'on appelle le mode privilégié. Alors, le mode privilégié, c'est le mode où nous avons tous les droits et donc, quand on a tous les droits, nous avons aussi des grosses responsabilités pour maintenir la correction d'exécution de notre système. C'est aussi un mode qui est appelé le mode root, le mode administrateur ou le mode super utilisateur. Par contraste, nous avons le mode normal, ou le mode utilisateur, qui est le mode ou un usager classique va exécuter ses applications. Donc, vu que le système d'exploitation gère le fonctionnement du système global et qu'il manipule des ressources critiques, les appels système s'exécutent en mode privilégié alors que les autres opérations, les opérations normales, quand nous travaillons sur une machine, s'exécutent en mode normal. Voyons ici plus en détail, c'est le même schéma, mais qui a été instancié pour le traitement d'un appel système. Donc, nous avons le processeur qui exécute une instruction. S'il y a un appel système qui est effectué, il va y avoir donc déclenchement d'interruption,

[00:05:59] Cela va arriver au niveau du processeur qui va détecter donc il y a une interruption qui doit être gérée. Il va reconnaître que c'est un appel système. Il va voir quel appel système a été demandé et il va exécuter le traitant pour cet appel système, donc il va exécuter le traitement qui correspond à notre fonction du système. Une fois qu'il a fini, il va retourner vers un mode de fonctionnement et exécutera les instructions de ce qu'il exécutait avant. Voici un exemple où nous avons donc une application qui s'exécute en mode utilisateur, en mode normal, et imaginons que cette application veut travailler avec un fichier. Donc, pour travailler avec les fichiers, vous savez bien qu'il faut d'abord ouvrir un fichier et ici, en Python, cela va se traduire avec l'appel à la fonction os.open. C'est un appel système, donc il va y avoir une interruption qui va être déclenchée. Cette interruption, à un moment donné, va être traitée par le processeur et donc là nous sommes au niveau de la couche matérielle et donc le processeur va traiter le fait qu'il s'agit d'une interruption qui correspond à un appel système, va chercher le traitant d'interruption qui correspond à l'appel système et ensuite va exécuter ce fonctionnement qui correspond. Et là, nous serons en mode privilégié. Une fois que le système d'exploitation aura fini avec l'exécution de la fonctionnalité open au niveau du système d'exploitation ou encore on dit au niveau du noyau, nous allons retourner en mode normal et nous allons continuer avec l'exécution de l'application.