diff --git a/Graphisme/map.png b/Graphisme/map.png new file mode 100755 index 0000000..49dedd8 Binary files /dev/null and b/Graphisme/map.png differ diff --git a/Graphisme/map.svg b/Graphisme/map.svg new file mode 100755 index 0000000..97348e7 --- /dev/null +++ b/Graphisme/map.svg @@ -0,0 +1,1581 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + Noyau COS2000 + Le code utilisateur ne peut ni lire ni écrire à ces adressessans générer une exception Segmentation Fault. + + + + Pile + Les variables de portées locales utilisées par les fonctionsex: paramètres, adresse de retour...etc + + + + + + Données "BSS" + Les variables statiques non initialisées remplies avec des zéros + + + + Données "DATA" + Les variables statiques explicitement initialisées + + + + Code + Code sous forme binaire du processus utilisateur + + + + Tas + Les variables allouées dynamiquement par malloc + + + + 0x00000000 + 0x40000000 + 0xE0000000 + ELF .heap + ELF .bss + ELF .data + 1Go + 3Go + + + + + + Mémoire en Identity Mapping + Les adresses physiques et virtuelles sont identiquesdans cette portition de mémoire + + + + Tas "noyau" + Données dynamiques (structures/variables) utilisées parle noyau + + + ELF .text + Entry point + 0x00000000 + 1Go + 0x01000000 + + + + 8Mo + + + Tables de pages "noyau" + Tables pointées par la page directory permettant d'associerdes adresses virtuelles vers des adresses physiques.Chaque page fait 4ko et 1024 sont disponibles. + + 0x00800000 + 0x00800000 + + + + Interrupt Description Table + Les points d'entrés et selecteurs pour toutes lesinterruptions matérielles et logicielles (et exceptions) + + + Page Directory "noyau" + Le répertoire de page principal utilisé par la MMUafin de transformer les adresses virtuelles en adresses physiques + + + + Global Description Table + Les descripteurs de segments et les informationsqui les définissent (avec aussi LGDT,TSS) + + + 0x00000000 + 1Mo + 0x00000800 + 0x00001000 + 0x00002000 + + + Pile "noyau" + Pile utilisée uniquement par le noyau + + + + + + BIOS (lecture seule) + Code et données statiques initialisées utilisées par le CPUlors du démarrage et de l'initialisation (POST) des périphériques + + + + Mémoire Vidéo VGA + Utilisé par la carte graphique afin de contenir : caractères, polices , attributs ou les couleurs des pixels + + 0x00100000 + 0x000C0000 + 0x000A0000 + PhysiquementLIBRE + + Mémoire basse du "noyau" + Les données primordiales utilisées par le noyauet l'ordinateur en général + + Code "noyau" + Le code binaire du noyau ainsi que les fonctions indispensables aux API primordiales + 0x00000000 + 0x00400000 + 0x00001000 + 0x00100000 + 0x40000000 + virtuellementLIBRE + + + + + Tas de pages + Pages alignées utilisée par le noyau pour descrirel'adressage virtuelles de chaque processus + + + + + + 0x10000000 + + + + Entry point + + SYSENTER + API fournies par le noyau vers l'espace utilisateur + + RING 3>0 + virtuellementLIBRE + CS + DS/ES/FS/GS + SS + + SS + CS/DS/ES/FS/GS + + + + Pile SYSENTER + Pile pour le processus courant utilisé lorsqu'un appeld'une API par SYSENTER (bascule vers RING0) + + + + SS + + + + + Pile préemption + Pile pour le processus courant utilisé lorsqu'un appeld'interruption / exception se produit (bascule vers RING0) + + + + SS + + + diff --git a/INFORMATIONS.md b/INFORMATIONS.md new file mode 100644 index 0000000..da94d70 --- /dev/null +++ b/INFORMATIONS.md @@ -0,0 +1,13 @@ +![logo](https://github.com/dahut87/cos2000/raw/master/Graphisme/logo.png) + +## Organisation du noyau + +### Mémoire + +L'organisation de la mémoire de COS2000 répond au schéma suivant: + +![logo](https://github.com/dahut87/cos2000/raw/master/Graphisme/map.png) + +### API + +COS2000 utilise les fonctions SYSENTER/SYSEXIT diff --git a/README.md b/README.md index bfb4745..a62ffda 100644 --- a/README.md +++ b/README.md @@ -196,7 +196,6 @@ Pour l'instant quelques commandes seulement sont disponibles: * * `floppy.img.final` * `Graphisme` - fichiers images * * `screenshots` - screenshots de l'évolution du système -* * `Thème` - thème de démarrage COS2000 pour plymouth * `include` - fichier d'entête C * `lib` - librairies pour le noyau * `makefile` - Makefile du projet @@ -206,6 +205,7 @@ Pour l'instant quelques commandes seulement sont disponibles: * * `lib` - librairies pour le domaine utilisateur * `README.md` - ce que vous lisez * `LICENSE.md` - la licence LGPLv3.0 +* `INFORMATIONS.md` - informations sur le développement de COS2000 * `BUGS.md` - bugs rélevés dans le système * `API.md` - Liste des APIs fournies par le système COS2000 * `system` - le noyau lui-même