4.2) Système de fichier, explorateur de fichiers, système d'eploitation
Système de fichiers :
Le système de fichiers est très simple. Il est basé sur une FAT (file
allocation table).
Chaque entrée de la FAT contient les informations suivantes :
L’index d’une entrée FAT,
c’est tout simplement sa position dans la table de FAT.
Par défaut, je me limite à 1024 entrées FAT, c’est largement suffisant
pour les 16 petits Mo.
Le système gère évidemment la structure arborescente du système de
fichiers grâce au champ "folder".
Remarque
: La FAT est la portion de la Flash ré-écrite le plus souvent. Chaque
modification dans le système de fichier (déplacement d’un fichier,
renommage, suppression) engendre une écriture de la FAT. Pour éviter
d’écrire tout le temps sur les mêmes secteurs de la Flash (chaque
secteur est limité à 200 000 écritures), j’utilise un mécanisme
d’emplacements de FAT tournants : 8 emplacements différents écrits à
tour de rôle, avec un index permettant de déterminer l’entrée FAT la
plus fraiche.
C’est un peu inutile vu la faible utilisation de cet ordinateur, mais
ça m’amuse.
Vu la petite taille de la FAT (64ko), elle est constamment chargée en
RAM.
Limitations :
- Le système ne gère pas la fragmentation des fichiers. S’il n’y a pas suffisamment d’espace contigu pour créer un nouveau fichier, le fichier ne sera pas créé.
- Un fichier a une taille fixe, déclarée une fois
pour toute. La taille ne peut pas être modifiée à postériori
L’organisation de la
flash 16Mo :
Interface homme machine –
explorateur de fichiers :
Je
n’ai pas voulu d’interface en « ligne de commande ». En fait, je
déteste ce principe de ligne de commande depuis très longtemps. J’ai
fait une allergie à ça dès mes premiers pas sous MS/DOS il y a 25 ans.
J’en ai encore des séquelles.
Du coup, j’ai codé une
interface graphique/texte simple où l’utilisateur sélectionne les
dossiers ou fichiers qu’il veut manipuler, avec les flèches du clavier,
un peu à la façon de « Norton Commander ». Je trouve ça beaucoup plus
ergonomique.
On
peut réaliser toutes les fonctions basiques d’un explorateur de
fichiers : couper, copier, coller, renommer, créer un dossier, un
fichier, etc...
On peut aussi « ouvrir » un fichier, ce qui va déclencher :
- Pour un programme : chargement du programme en RAM et exécution du programme
- Pour
un fichier de type texte ou image : l’OS ouvre le « programme par
défaut » de gestion des images ou du texte, qui à son tour va ouvrir le
fichier en question.
Attention,
pour trouver le programme de gestion du texte et des images, les
fichiers exécutables des programmes utilisés doivent impérativement
avoir l’index FAT suivant, car c’est ce qu’utilise A2Z_OS
- Text Editor : index 2
- Image viewer : index 3
Dans
le menu, une commande particulière permet de « raffraichir /
télécharger » le contenu du fichier depuis le PC vers la flash, de 2
manières différentes (choix proposé 1 ou 2):
- Choix 1 Sur A2Z réel : depuis la liaison série, avec le même protocole que le bootloader. Attention, tous les fichiers téléchargés doivent se terminer par une commande bootloader « goto », qui sert juste à détecter la fin du transfert, et ne sera pas exécutée. Donc après le transfert via port série d’un fichier bina, il faut rajouter le fichier « goto.bine » qui fait le job.
- Sur l’émulateur : depuis fichier windows bina,
bine ou binc.
Le transfert du fichier
se fait via la fonction F9 de l’émulateur.
Attention, le transfert doit impérativement être effectué avant de
valider la sélection « choix 2 » dans l’OS.
OS ou pas OS?
Ce
que j’appelle « OS » n’est donc pas un véritable système
d’exploitation, car il n’y a aucune couche d’abstraction hardware.
Chaque application embarque ses drivers pour accéder directement au
hardware (drivers mémoire SPI par exemple), et est donc relativement
indépendante d’un OS.