Somewhere in user space...
Search
Page principale
Réaliser son propre OS
Le langage C
Perl objet
Compiler MySQL
Patch Linux
Vi, le kit de survie !
Changelog
Learning PmWiki
Basic Editing
Administration
Login
Contact
print
·
rss
·
source
TutoOS
|
Introduction
>
Programmer son propre noyau
Sommaire
Sommaire
Introduction
Pourquoi ce tutoriel ?
Pré-requis
Ressources sur le web
Réaliser un secteur de boot qui affiche un message
Comment est chargé le secteur de boot au démarrage de l'ordinateur
Un secteur de boot qui affiche un message
Réaliser un secteur de boot qui charge et exécute un noyau
Un programme de boot qui charge et exécute un noyau
Un premier noyau
Compiler et tester le boot loader et le noyau
Réaliser un secteur de boot qui passe en mode protégé
Pourquoi utiliser le mode protégé ?
Addresser la mémoire en mode protégé
Un boot loader qui passe en mode protégé
Un noyau très simple
Écrire un noyau en C
Un noyau en C qui recharge la GDT
Pourquoi changer de GDT ?
Un noyau qui recharge la GDT
Gérer les interruptions - la théorie
Des interruptions pour prévenir le processeur d'un événement
Un chipset pour gérer les interruptions matérielles : le 8259A
Exécuter la bonne routine de service grâce à la table des descripteurs d'interruptions
Gérer les interruptions - la mise en oeuvre
Préalable : étendre le code C du noyau à l'aide de directives en assembleur
Initialiser la table IDT
Un noyau qui gère les interruptions
Gérer les interruptions du clavier
Le chipset 8042
La gestion du curseur
Créer et exécuter une tâche
Mode noyau et mode utilisateur
Définir des segments de mémoire distincts
Copier le code exécutable en RAM
Créer et initialiser un TSS
Exécuter une tâche
Sauvegarder le contexte d'une tâche
Compiler et exécuter le noyau
Les appels systèmes
Charger une tâche
Appeler une routine privilégiée à l'aide d'une interruption logicielle
Exécuter le noyau
Gérer la mémoire - utiliser la pagination
Comprendre l'adressage de la mémoire avec la pagination
Une première implémentation très simple
Exécuter le noyau
Gérer la mémoire - utiliser la pagination pour une tâche utilisateur
Préalable : un noyau capable de gérer la mémoire
Comment organiser l'espace d'adressage d'une tâche utilisateur
Créer une tâche
Exécuter la tâche utilisateur
Un système multi-tâches simple
Le contexte d'une tâche
Charger une tâche en mémoire
Activer une nouvelle tâche à chaque interruption d'horloge
Exécuter plusieurs tâches
Un système multi-tâches : des appels systèmes préemptibles
Un scheduler qui tient compte du contexte d'exécution
Utiliser les TrapGate pour rendre les appels systèmes interruptibles
Booter avec Grub
Le standard multiboot
Un premier noyau minimaliste
Booter
Pépin
avec Grub
Gérer la mémoire physique et la mémoire virtuelle
Une nouvelle organisation de la mémoire
Allouer dynamiquement de la mémoire pour le noyau
Mettre à jour le répertoire et les tables de pages
Compléments sur les répertoires de pages
Compléments sur la pagination
Structure d'une tâche
Lire et écrire sur un dique IDE
Créer et utiliser une image d'un disque dur sous Unix
Tester
Utiliser un système de fichier Ext2FS
Description d'un système de fichier Ext2FS
Lecture dans un système de fichier Ext2FS
Créer et utiliser une image d'un disque dur sous Unix avec un système de fichier Ext2FS
Créer et lancer une application au format ELF à partir du système de fichier
Quelques structures élémentaires pour gérer les fichiers
Annexe A - Compilation séparée en assembleur sous Unix
Compilation séparée en assembleur
Création d'exécutables sous Unix
Annexe B - Arithmétique en base 16
Annexe C - Bochs en mode debug
Annexe D - Gérer les arguments sur la pile avec les Stack Frame
Annexe E - Déboguer le noyau avec gdb
Liste des fichiers attachés
GNU Free Documentation License
F.A.Q.
TutoOS
|
Introduction
>
print
·
rss
·
source
Page last modified on November 27, 2008, at 10:58 AM