Changes between Version 78 and Version 79 of AS6-TME-B5


Ignore:
Timestamp:
Mar 17, 2024, 7:18:25 PM (3 months ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B5

    v78 v79  
    415415   2. Soit le thread A, voyant que la ressource n'est pas disponible, demande un changement de thread avec `thread_yield()`. Ainsi, le noyau peux élire un autre thread et faire quelque chose d'utile. Le thread A reste `READY` et il reprend périodiquement le processeur pour retenter sa chance. C'est aussi une attente active, mais meilleure parce que les autres threads sont moins pénalisés. En effet, il n'y a pas la perte de quantum de temps par le thread A.
    416416 * Dans les deux cas, c'est bien une attente active puisque le thread A teste lui-même si la ressource est disponible jusqu'à réussir.
    417  * Ce comportement sera modifié en introduisant un état `WAIT` pour que les threads en attente ne soient plus éligibles. C'est la libération de la la ressource qui remettra le thread en attente dans l'état `READY.
     417 * Ce comportement sera modifié en introduisant un état `WAIT` pour que les threads en attente ne soient plus éligibles. C'est la libération de la ressource qui remettra le thread en attente dans l'état `READY.
    418418'''
    419419}}}
     
    602602  * Le thread tente de lire le clavier en lisant `status`, en cas d'échec il cède le processeur avec `thread_yield()`, en sachant qu'on lui rendra plus tard.
    603603  * En cas de succès, il enregistre le caractère lu dans le buffer et décrémente le nombre de caractères attendus, si c'est le dernier, il sort.
    604   * Notez qu'il n'y a pas de loopback (c'est-à-dire de renvoi du caractère vers l'écran. C'est une opération complexe, on ne peut pas tout renvoyer (par exemple les flèches), c'est à la fonction système de faire ce travail.
    605 
     604  * Notez qu'il n'y a pas de loopback, c'est-à-dire de renvoi du caractère vers l'écran. C'est une opération complexe, on ne peut pas tout renvoyer (par exemple les caractères flèches), c'est à la fonction `fgets()` de la **libc** de faire ce travail, donc au niveau utilisateur.
    606605{{{#!c
    607606int tty_read (int tty, char *buf, unsigned count)