Changes between Version 15 and Version 16 of Archi-1-TP10
- Timestamp:
- Dec 30, 2020, 11:40:31 AM (4 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Archi-1-TP10
v15 v16 282 282 283 283 284 Le noyau et l'application sont deux exécutables compilés indépendamment mais pas qui ne sont pas indépendants. Vous savez déjà que l'application appelle les services du noyau avec l'instruction syscall, mais comment ça se passe vraiment depuis le code C et comment le noyau gère-t-il cet appel? En outre, il y a l'autre sens, comment le noyau lance-t-il l'application?284 Le noyau et l'application sont deux exécutables compilés indépendamment mais pas qui ne sont pas indépendants. Vous savez déjà que l'application appelle les services du noyau avec l'instruction syscall, mais comment ça se passe vraiment depuis le code C? Certaines questions sont proches de celles déjà posées, c'est volontaire. 285 285 286 286 … … 291 291 {{{#!protected ------------------------------------------------------------------------------------ 292 292 ''''''''''''''' 293 - 294 ''''''''''''''' 295 }}} 296 1. Convention utilisée pour que le noyau puisse lancer l'application? 293 - C'est l'éditeur de lien qui est en charge du placement en mémoire du code et des données, et c'est dans le fichier ldscript `kernel.ld` ou `user.ld` que le programmeur peut imposer ses choix. 294 - Pour placer une fonction à une place, la méthode que vous avez vu consiste 295 - à créer une section grâce à la directive `.section` en assembleur ou à la directive `__attribute__((section()))` en C 296 - puis à positionner la section créée dans la description des `SECTIONS` du ldscript. 297 ''''''''''''''' 298 }}} 299 1. Dans la question **A2.5**, nous avons vu comment la fonction `kinit` appelle la fonction `__start()` grâce à bout de code assembleur. Nous allons voir maintenant quelles sont les condition de cet appel. Dans le code de la question **A2.5**, `$26` est un registre de travail pour le kernel. Quels sont les autres registres modifiés? Expliquez pour chacun la valeur affectée. 297 300 {{{#!protected ------------------------------------------------------------------------------------ 298 301 '''''''''''''''