Changes between Version 68 and Version 69 of AS6-TME-B5
- Timestamp:
- Feb 4, 2023, 12:29:11 PM (2 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
AS6-TME-B5
v68 v69 90 90 {{{#!protected ------------------------------------------------------------------ 91 91 ''' 92 * Non, en principe non, puisque les piles sont créées à la volée à chaque création des threads. Mais, dans la version actuelle du système, qui n'a pas encore de service de mémoire dynamique, les piles des threads sont dans des variables globales de type `struct thread_s`, alors on peut se demander si elles sont dans le fichier. La réponse est non, parce que les variables globales thread de type `struct thread_s` ne sont pas initialisées. Elles sont donc dans une section `BSS` qui n'est pas vraiment dans le fichier objet.92 * Non, en principe non, puisque les piles sont créées à la volée à chaque création des threads. Mais, dans la version actuelle du système, qui n'a pas encore de service de mémoire dynamique, les piles des threads sont dans des variables globales de type `struct thread_s`, alors on peut se demander si elles sont dans le fichier. La réponse est non, parce que les variables globales thread de type `struct thread_s` ne sont pas initialisées. Elles sont donc dans une section `BSS` qui est définie (position et taille) dans le fichier, mais elle n'occupe pas de place pour les données puisque que c'est le programme qui fait la mise à 0 du segment. 93 93 ''' 94 94 }}} … … 121 121 ''' 122 122 * Le prototype de la fonction principale d'un thread est imposé par la fonction `thread_create()`. Une fonction principale de thread prend un seul argument de type `void *` et elle rend un `void *`. Si on veut passer plusieurs arguments, il faut les mettre dans une structure et passer le pointeur sur cette structure. 123 * Il y a quand même une exception pour le thread `main()` créé systématiquement au démarrage du processus. Comme vous le savez, la fonction `main()` prend jusqu'à 3 arguments : `int argc`, `char *argv[]` et un moins connu `char *arge[]` . Dans notre système `main()` n'a pas d'arguments, alors que normalement c'est grâce au shell que l'utilisateur peut définir les arguments `argc`, `argv` et `arge`, mais nous n'avons pas encore de shell. La fonction `main()` rend un `int` et non pas un `void *`.123 * Il y a quand même une exception pour le thread `main()` créé systématiquement au démarrage du processus. Comme vous le savez, la fonction `main()` prend jusqu'à 3 arguments : `int argc`, `char *argv[]` et un moins connu `char *arge[]` (aussi nommé `char *env[]`) qui contient les définitions de [https://docwiki.embarcadero.com/RADStudio/Sydney/fr/Arguments_%C3%A0_main()#:~:text=argc%20(un%20entier)%20est%20le,programme%20en%20cours%20d'ex%C3%A9cution. variables d'environnement du shell]). Dans notre système `main()` n'a pas d'arguments, alors que normalement c'est grâce au shell que l'utilisateur peut définir les arguments `argc`, `argv` et `arge`, mais nous n'avons pas encore de shell. La fonction `main()` rend un `int` et non pas un `void *`. 124 124 ''' 125 125 }}}