Projet système : extensions
De Ensiwiki
Révision de 25 mai 2011 à 13:00 par Rousfran (discussion | contributions) (Page créée avec « {{Maintenance par enseignants}} {{2A}} {{Informatique}} Catégorie:Deuxième Année Catégorie:Informatique Catégorie:Projets de spécialité == Résumé == C... »)

Résumé
Ce document présente quelques extensions possible pour le projet système. Il sera complété au fil du temps.
Mémoire virtuelle
A faire
- Coté application
-
- Définir un format d'application
- Exemple dans les programmes d'application au niveau du crt0.S
- Taille de la zone user (.data .rodata .text .bss) contenu dans le .bin
- Nom du programme (qu'on peut appeler)
- LDSCRIPT de l'application : toutes les applications commencent à 1Go
- Coté noyau
-
- dans le crt0.s
- Pas de copie de user.bin (inutile)
- Définir un pgalloc (blocs de 4kO) : nécessaire car les blocs doivent être alignés.
- principe : liste des blocs libre
- allocation en retirant les éléments de la liste et en initialisant la table de pagination
- libération en remettant les éléments dans la liste
- Démarrer 1er processus après avoir mis en place la table de pagination-
- Définir un nouvel appel système : startProcessus(char *nom)...
- Attention il faut une table de pagination par processus lourd, et ne pas oublier que la partie kernel doit être la même pour tous les processus
- Dans le contexte_switch, il faut changer de table de pagination au même niveau que le changement de la pile dans la TSS
- Quand est changé l'adresse de la pile dans la TSS il faut modifier la table de pagination dans la structure aussi
- TSS+28 (Cf. crt0.S du kernel)
- CR3 : table de pagination du processus
- CR0 : activation de la pagination (fait dans le crt0.S, pas besoin de modifier)
Conseil de mapping mémoire (pagination)
- 0 à 4ko -> adresse non valide (pour lever une exception en cas de pointeur null)
- 4Go-4ko à 4Go -> adresse non valide (pour lever une exception en cas d'accès à cette zone mémoire)
- 4ko à 64Mo -> Garder @virtuelle = @ physique
- 1Go -> @virtuelle de tous les programmes utilisateurs (allocation et correspondance à chaque pgalloc)
- Conseil
- Placer à 1Go le programme utilisateur.bin (.rodata, .data, .text, .bss) + tas (qui peut être alloué dynamiquement lors d'un memalloc, appel système à prévoir)
- Placer à (4Go-4ko) et avant la pile du programme utilisateur.
S'il y a un débordement de la pile, il y aura une exception.