207 | | 1. Pour quelle raison, ne sauver que les registres persistants dans le contexte des threads ? |
208 | | {{{#!protected ------------------------------------------------------------------ |
209 | | ''' |
210 | | * |
211 | | ''' |
212 | | }}} |
213 | | 1. Quand un thread est élu pour la prem |
214 | | {{{#!protected ------------------------------------------------------------------ |
215 | | ''' |
216 | | * |
217 | | ''' |
218 | | }}} |
219 | | 1. |
220 | | {{{#!protected ------------------------------------------------------------------ |
221 | | ''' |
222 | | * |
223 | | ''' |
224 | | }}} |
225 | | 1. |
| 207 | 1. Quand un thread est élu pour la première fois, à la sortie de `thread_load()`, on appelle la fonction `thread_bootstrat()`. Retrouver dans les transparents du cours les étapes qui vont mener à l'exécution de la fonction principale du thread élu, et expliquez-les. |
| 208 | {{{#!protected ------------------------------------------------------------------ |
| 209 | ''' |
| 210 | * |
| 211 | ''' |
| 212 | }}} |
| 213 | 1. Un thread peut perdre le processeur pour 3 raisons (dans la version actuelle du code), quelles sont ces raisons ? |
| 214 | {{{#!protected ------------------------------------------------------------------ |
| 215 | ''' |
| 216 | * |
| 217 | ''' |
| 218 | }}} |
| 219 | 1. Quand un thread **TS** perd le processeur pour une raison X à la date `T`, il entre dans le noyau par kentry, puis il y a une séquence d'appel de fonction jusqu'au `thread_load()` du thread **TE** entrant. Lorsqu'on sort de `thread_load()`, on est dans le nouveau thread **TE**. Plus tard, le thread **TS** sera élu et regagnera le processeur en sortant d'un `thread_load()`, puis on sortira de la séquence des appels qu'il y avait eu à la date `T`. Expliquez, grace à la description de ce comportement, pourquoi on ne sauve pas les registres temporaires dans le contexte des threads. |