Écrit dans une version légèrement modifiée de BCPL
(http://rabbit.eng.miami.edu/class/een521/bcpl-2.pdf)
pour un émulateur Intel 80486
- http://rabbit.eng.miami.edu/class/een521/hardware-1.pdf
- http://rabbit.eng.miami.edu/class/een521/hardware-2a.pdf
- http://rabbit.eng.miami.edu/class/een521/intel486vm.pdf
Émulateur écrit par DR. Stephen Murrell
(Code source: http://rabbit.eng.miami.edu/class/een521/een521.zip)
À l'intérieur de ce rempot:
- start.b: mémoire virtuelle (pour la mémoire 80846. 4 Go = 512 pages * 2048 mots par page. Word = 32 bits)
Répertoire de page avec tables de page pour six régions distinctes
de l'espace d'adressage virtuel (code utilisateur et système, tas et pile) - OS.B: Page Handler des défauts pour développer un tas et une pile
Capacité à lire et à exécuter des programmes utilisateur
Exit () Appel système pour restaurer le système FP, SP et PC, définir les indicateurs de processeur et recycler les pages de processus utilisateur
Système d'entrée du clavier basé sur l'interruption
shell de ligne de commande
(en cours) File d'attente de processus exécutables - NewVe.B: Attribution et recyclage du tas avec NewVec et FreeVec
- file_system.b: système de fichiers de base (Mkdir, CD, RMDIR, Fcreate, Fdelete, Fopen, Fclose, FWrite, Fread)
- sys_lib.b: API d'appel système de base pour les processus utilisateur
- Processus utilisateur XB, YB: pour les tests
Pour l'instant, les entrées de répertoire sont limitées à un bloc chacune (128 mots = 512 octets),
Ce qui signifie que les répertoires sont limités à 16 fichiers et répertoires enfants. Ces enfants
Les répertoires sont également limités à 16 entrées, etc.
Chaque répertoire contient:
- 512 octets
- jusqu'à 16 structures de 28 octets, chacun décrivant un fichier enfant ou un répertoire
- 6 octets pour le nom des répertoires
- 4 octets pour l'emplacement sur le disque de son répertoire parent
Les fichiers servent également de porte-lieu et incluent un bloc d'en-tête avec
28 mots d'informations descriptives: nom, autorisation, temps créé, etc.
et 100 pointeurs vers le contenu du fichier.
100 pointeurs * 512 octets par bloc = taille de fichier max 50KB
- Les répertoires nécessitent un disque lu pour s'ouvrir
- Les fichiers prennent un disque lu pour ouvrir le bloc d'en-tête
plus un disque lu pour accéder à chacun des 100 blocs de contenu
L'objectif était d'avoir un système de fichiers de base (prise en charge des fichiers et répertoires)
pour tester le système d'exploitation sous-jacent et assister à tout problème
avant d'optimiser. Les fonctionnalités testées sont
- Mémoire virtuelle, répertoire de page avec tables de page pour six régions distinctes
de l'espace d'adressage virtuel (code utilisateur et système, tas et pile) - Page Handler Fault pour cultiver un tas et une pile
- Capacité à lire et à exécuter des programmes utilisateur
- Exit () Appel système pour restaurer le système FP, SP et PC
Définir les drapeaux CPU, recycler les pages de processus utilisateur - Système d'entrée du clavier basé sur l'interruption
- Attribution et recyclage du tas avec NewVec et FreeVec
En cours
- file d'attente des processus utilisateur qui se déroulent à tour de rôle
- Tester Fread et Fwrite
Suivant
- Arbre b + pour accueillir des fichiers volumineux avec des lectures de disque minimales