Changes between Version 17 and Version 18 of Archi-1-TD10


Ignore:
Timestamp:
Nov 20, 2022, 12:21:36 PM (3 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TD10

    v17 v18  
    2828- En bas à gauche, c'est le code de boot qui, ici, se contente d'initialiser la pile d'exécution du noyau et d'entrer dans le noyau par la fonction `kinit()` (kernel init).  Ce code s'exécute en mode `kernel`, mais il ne fait pas partie du noyau car dans un vrai système, il devrait charger le noyau depuis le disque, mais, ici, le noyau est déjà en mémoire.
    2929- En bas, c'est le noyau avec la fonction `kinit()` qui initialise les structures de données internes du noyau, ici, il s'agit juste de mettre les variables globales non initialisées à 0, puis d'appeler la routine `app_load` qui va entrer dans la première fonction de l'application nommée `_start()`. Dans le noyau, on voit aussi, la routine `kentry` qui est le point d'entrée du noyau pour la gestion des services, ici, il n'y a que le gestionnaire d'appel système (`syscall`). Son comportement est succinctement résumé.
    30 - En haut, c'est l'application, décomposée en trois parties. La première à gauche est la fonction `_start()` appelée par le noyau au début de l'application. Cette fonction initialise les variables globales, puis appelle la fonction `main()`. Si on sort de la fonction `main()`, elle fait l'appel système `exit()`. La seconde partie au centre contient le code de l'utilisateur. Enfin, la troisième partie, à droite, c'est le code des bibliothèques système utilisées par l'application, ce sont elles qui font les appels système.
     30- En haut, c'est l'application, décomposée en trois parties. La première à gauche est la fonction `_start()` appelée par le noyau au début de l'application. Cette fonction initialise les variables globales, puis appelle la fonction `main()`. Si on sort de la fonction `main()`, elle fait l'appel système `exit()`. La seconde partie au centre contient le code de l'utilisateur  ''(notez que la fonction `main()` ou l'une des fonctions appelées par la fonction `main()` peut demander une sortie anticipée de l'application en appelant directement `exit()`)''. Enfin, la troisième partie, à droite, c'est le code des bibliothèques système utilisées par l'application, ce sont elles qui font les appels système, ici, seule la fonction `clock()` est représentée.
    3131
    3232