Projet système : extensions

De Ensiwiki
Aller à : navigation, rechercher
AttentionCette page est maintenue par les enseignants et utilisée par les élèves de la matière concernée. Vos contributions sont les bienvenues, mais merci d'en discuter avant de faire des modifications non triviales de la page, pour être sûr de ne pas perturber le déroulement du cours.

Mycomputer.png  Deuxième Année  CDROM.png  Informatique 

Résumé

Ce document présente quelques extensions possible pour le projet système. Il sera complété au fil du temps.

BIOS

Pour programmer des appels au BIOS en mode réel sur PC, nous vous fournissons un patch à appliquer avec la commande suivante :

# Pour voir les changements appliques par le patch
patch -p1 --dry-run < ~/Psys_bios.patch
# Enlever le parametre --dry-run pour appliquer effectivement les changements

Il ajouter trois fichiers de sources et modifie le Makefile ainsi que le kernel.lds. La seule fonction ajoutée par ce patch est décrite dans le fichier .h. Notez bien que cette fonction doit être appelée avec la pagination désactivée ! Dans vos noyaux la pagination est activée. Voir crt0.S.

Mémoire virtuelle (TODO DD à intégrer dans aspects techniques du projet système)

Voir aussi la partie sur Memory Management de la documentation Intel.

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.