| 61 | 1. À quoi servent les interruptions ? |
| 62 | {{{#!protected ------------------------------------------------------------------------------------ |
| 63 | '' |
| 64 | * Les interruptions sont un mécanisme permettant de traiter au plus vite un événement matériel ou une demande d'un autre processeur. |
| 65 | '' |
| 66 | }}} |
| 67 | 1. Une interruption en informatique est à la fois une suspension temporaire d'un programme et un signal électrique. Comment s'appelle le signal d'interruption et comment s'appelle le code permettant de la traiter ? |
| 68 | {{{#!protected ------------------------------------------------------------------------------------ |
| 69 | '' |
| 70 | * Le signal d'interruption se nomme IRQ comme Interrupt ReQuest. |
| 71 | * Le code pour traiter une IRQ est une ISR comme Interrupt Service Routine |
| 72 | '' |
| 73 | }}} |
| 74 | 1. Est-ce que tous les composants génèrent des signaux d'interruption ? Si la réponse est non, donnez un exemple ? |
| 75 | {{{#!protected ------------------------------------------------------------------------------------ |
| 76 | '' |
| 77 | * Non, les mémoire ne produisent pas d'interruption et, ici, le ''frame buffer'' (la mémoire vidéo) non plus. |
| 78 | '' |
| 79 | }}} |
| 80 | 1. Est-ce qu'un composant peut produire plusieurs signaux d'interruption ? |
| 81 | {{{#!protected ------------------------------------------------------------------------------------ |
| 82 | '' |
| 83 | * Oui, le TTY gère plusieurs terminaux, donc plusieurs clavier, et chacun produit une IRQ. |
| 84 | '' |
| 85 | }}} |
| 86 | 1. Est-ce qu'une application utilisateur sait quand elle va être interrompue ? |
| 87 | {{{#!protected ------------------------------------------------------------------------------------ |
| 88 | '' |
| 89 | * Non, elle sera interrompue, mais elle ne peut pas savoir quand. |
| 90 | '' |
| 91 | }}} |
| 92 | 1. Est-ce qu'une application utilisateur sait quand elle a été interrompue ? |
| 93 | {{{#!protected ------------------------------------------------------------------------------------ |
| 94 | '' |
| 95 | * Non plus, le noyau lui a volé du temps d'exécution, mais elle ne sait pas quand... |
| 96 | '' |
| 97 | }}} |
| 98 | 1. Que signifie IPI et à quoi ça sert ? (il n'y a pas de slides dans le cours sur ça...) |
| 99 | {{{#!protected ------------------------------------------------------------------------------------ |
| 100 | '' |
| 101 | * IPI signifie Inter-Processor Interrupt, c'est un mécanisme permettant à un programme d'interrompre un autre programme s'exécutant sur un autre processeur. Il faut un composant matériel spécifique contenant des registres dont l'écriture provoque des IRQ. |
| 102 | '' |
| 103 | }}} |
| 104 | 1. Est-ce qu'un programme utilisateur peut interdire les interruptions en général ? |
| 105 | {{{#!protected ------------------------------------------------------------------------------------ |
| 106 | '' |
| 107 | * Non, il faudrait écrire dans un registre de l'ICU ou dans le registre `c0_sr` qui appartiennent au noyau. |
| 108 | '' |
| 109 | }}} |
| 110 | 1. Est-ce que le noyau du système d'exploitation peut interdire les interruptions en général ? |
| 111 | {{{#!protected ------------------------------------------------------------------------------------ |
| 112 | '' |
| 113 | * Oui, bien sûr, il le fait soit définitivement quand un périphérique n'est pas utilisé, ou temporairement pour les sections critiques. |
| 114 | '' |
| 115 | }}} |
| 116 | 1. Quand un signal d'interruption s'active est ce que le noyau sait toujours quoi faire ? |
| 117 | {{{#!protected ------------------------------------------------------------------------------------ |
| 118 | '' |
| 119 | * Oui, c'est défini par le vecteur d'interruption, à chaque IRQ, il y a une ISR. |
| 120 | '' |
| 121 | }}} |
| 122 | 1. Que signifie l'expression «vol de cycles» ? |
| 123 | {{{#!protected ------------------------------------------------------------------------------------ |
| 124 | '' |
| 125 | * C'est une expression pour dire que l'application en cours a été interrompu le noyau pour exécuter une ISR. |
| 126 | '' |
| 127 | }}} |
| 128 | 1. Est-ce l'application qui a provoqué l'activation d'un signal d'interruption qui est volée ? |
| 129 | {{{#!protected ------------------------------------------------------------------------------------ |
| 130 | '' |
| 131 | * Non, s'il y a plusieurs applications en cours s'exécutant en temps partagé (on le verra au prochain cours), les IRQs |
| 132 | '' |
| 133 | }}} |
| 134 | 1. Pour le composant TTY, à quel moment produit-il un signal d'interruption ? |
| 135 | 1. Pour le composant TTY, comment fait-on pour acquitter une d'interruption ? |
| 136 | 1. Si plusieurs caractères ASCII sont en attente dans d'être lus dans un TTY, quelle conséquence cela a-t-il sur le signal d'interruption ? |
| 137 | 1. À quoi sert le composant `TIMER` ? |
| 138 | 1. Comment fait-on pour le configurer ? |
| 139 | 1. Comment fait-on pour acquitter une interruption pour le composant TIMER ? |
| 140 | 1. Est-ce que le registre `TIMER_VALUE` peut activer (on dit aussi lever) un signal d'interruption ? |
| 141 | 1. À quel moment doit-on initialiser le vecteur d'interruption ? |
| 142 | 1. En quoi consiste la liaison des interruptions (''interrupt binding'' en anglais) ? |
| 143 | 1. Expliquer le rôle des bits `UM`, `EXL` et `IE` du registre `C0_SR`. |
| 144 | 1. Comment le noyau sait-il que la cause de son invocation est une interruption ? |
| 145 | 1. Quelle instruction permet de sortir du noyau pour revenir dans le code interrompu ? et que fait-elle précisément ? |
| 146 | 1. Rappeler la différence entre un registre temporaire et un registre persistant. |
| 147 | 1. Pour qu'une IRQ soit effectivement prise en compte, il faut que le périphérique la lève et qu'elle ne soit pas masquée. Il y a plusieurs endroits où on peut masquer une IRQ, lesquels ? |
332 | | == Questions de cours |
333 | | |
334 | | |
335 | | Les questions de cette partie ont pour objectif de vérifier que vous avez compris le cours. |
336 | | Les réponses sont donc dans les [htdocs:cours/AS6-3.pdf slides du cours sur les interruptions]. |
337 | | L'ordre des questions suit globalement celui des slides du cours. Il y a beaucoup de questions, mais la plupart sont simples, certaines sont plus délicates. Ce n'est pas grave, si vous ne savez pas tout, mais vous devriez être en mesure de répondre à un grand nombre. |
338 | | |
339 | | 1. À quoi servent les interruptions ? |
340 | | {{{#!protected ------------------------------------------------------------------------------------ |
341 | | ''''''''''''''' |
342 | | * Les interruptions sont un mécanisme permettant de traiter au plus vite un événement matériel ou une demande d'un autre processeur. |
343 | | ''''''''''''''' |
344 | | }}} |
345 | | 1. Une interruption en informatique est à la fois une suspension temporaire d'un programme et un signal électrique. Comment s'appelle le signal d'interruption et comment s'appelle le code permettant de la traiter ? |
346 | | 1. Quel état peut prendre un signal d'interruption ? |
347 | | 1. Quel type de composant émet un signal d'interruption ? |
348 | | 1. Est-ce que tous les composants génèrent des signaux d'interruption ? Si la réponse est non, donnez un exemple ? |
349 | | 1. Est-ce qu'un composant peut produire plusieurs signaux d'interruption ? |
350 | | 1. À qui est destiné un signal d'interruption ? |
351 | | 1. Est-ce qu'une application utilisateur sait quand elle va être interrompue ? |
352 | | 1. Est-ce qu'une application utilisateur sait quand elle a été interrompue ? |
353 | | 1. Que signifie IPI et à quoi ça sert ? |
354 | | 1. Est-ce qu'un programme utilisateur peut interdire les interruptions en général ? |
355 | | 1. Est-ce que le noyau du système d'exploitation peut interdire les interruptions en général ? |
356 | | 1. Qui exécute le code de traitement du signal d'interruption ? |
357 | | 1. Quand un signal d'interruption s'active est ce que le noyau sait toujours quoi faire ? |
358 | | 1. Que signifie acquitter un signal d'interruption ? (on dit aussi acquitter une interruption) |
359 | | 1. Comment fait-on pour acquitter une interruption ? |
360 | | 1. Que signifie l'expression «vol de cycles» ? |
361 | | 1. Est-ce l'application qui a provoqué l'activation d'un signal d'interruption qui est volée ? |
362 | | 1. Pour le composant TTY, à quel moment produit-il un signal d'interruption ? |
363 | | 1. Pour le composant TTY, comment fait-on pour acquitter une d'interruption ? |
364 | | 1. Si plusieurs caractères ASCII sont en attente dans d'être lus dans un TTY, quelle conséquence cela a-t-il sur le signal d'interruption ? |
365 | | 1. À quoi sert le composant `TIMER` ? |
366 | | 1. Comment fait-on pour le configurer ? |
367 | | 1. Comment fait-on pour acquitter une interruption pour le composant TIMER ? |
368 | | 1. Est-ce que le registre `TIMER_VALUE` peut activer (on dit aussi lever) un signal d'interruption ? |
369 | | 1. Que signifie ICU et à quoi cela sert-il ? |
370 | | 1. Que signifie masquer une interruption ? |
371 | | 1. Dans l'ICU, que contient le registre `ICU_STATE` ? |
372 | | 1. Dans l'ICU, que contient le registre `ICU_MASK` ? |
373 | | 1. Dans l'ICU, comment fait-on pour modifier la valeur de `ICU_MASK` ? |
374 | | 1. Dans l'ICU, que contient le registre `ICU_HIGHEST` ? |
375 | | 1. Dans l'ICU, il y a autant de jeu de registres que de processeur, pourquoi ? |
376 | | 1. Qu'est-ce que la fonction `kinit()` ? |
377 | | 1. Que contient le vecteur d'interruption ? |
378 | | 1. À quel moment doit-on initialiser le vecteur d'interruption ? |
379 | | 1. En quoi consiste la liaison des interruptions (''interrupt binding'' en anglais) ? |
380 | | 1. À quelle adresse saute-t-on lorsqu'un signal interruption s'active et qui n'est pas masqué ? |
381 | | 1. Expliquer le rôle des bits `UM`, `EXL` et `IE` du registre `C0_SR`. |
382 | | 1. Comment le noyau sait-il que la cause de son invocation est une interruption ? |
383 | | 1. Quel est le rôle du gestionnaire d'interruption ? |
384 | | 1. Quelle instruction permet de sortir du noyau pour revenir dans le code interrompu ? et que fait-elle précisément ? |
385 | | 1. Rappeler la différence entre un registre temporaire et un registre persistant. |
386 | | 1. Dans le gestionnaire d'interruption, on sauve les registres temporaires seulement avant d'appeler la fonction de traitement d'un signal d'interruption ? |
387 | | 1. Pour qu'une IRQ soit effectivement prise en compte, il faut que le périphérique la lève et qu'elle ne soit pas masquée. Il y a plusieurs endroits où on peut masquer une IRQ, lesquels ? |
| 419 | |