La grande différence entre Linux et Windows, du moins en ce qui concerne leurs systèmes de fichiers et leurs structures de répertoires, est que sous Linux, "tout est un fichier", et tout descend d'une seule racine. Cela s'applique également à presque tous les systèmes d'exploitation dérivés de Unix tels que BSD, OS X, Solaris, etc., mais je vais juste dire "Linux" pour être générique (même si ce n'est pas tout à fait exact).
Mais que cela signifie-t-il en pratique?
Windows permet d'avoir plusieurs racines nommées pour leurs systèmes de fichiers. Vous les comprenez comme des lettres de lecteur: C: D: E:
et ainsi de suite. Chacune a une racine (\
) et un arbre qui en descend. Les versions récentes de Windows permettent des choses comme les points de montage de volume, où un volume (ce que vous considéreriez comme une partition) peut être monté sur un dossier existant et vide. Ainsi, au lieu de D:
\ représentant la racine de, disons, votre lecteur optique (CD/DVD/BR), vous pourriez le monter à C:\Optical
à la place. C'est plus similaire à ce que fait Linux. Il y a aussi un espace de noms d'objets sous-jacent à racine unique pour tout dans Windows, similaire à ce que Linux utilise et est géré par le Gestionnaire d'objets, mais la plupart des utilisateurs le voient rarement référencé car il est principalement utilisé par le noyau.
Linux a une racine unique: /
. Tout descend d'elle, et cela ne nécessite pas nécessairement de représenter votre disque dur. Disques durs, lecteurs optiques, cartes mémoire, partages réseau, imprimantes, scanners, CPU, RAM, processus, ... tout est représenté quelque part à l'intérieur de cet espace de noms unique, et peut être accessible par n'importe quel processus avec des API de gestion de fichiers standards, en supposant que vous avez un niveau d'accès suffisant. Juste parce que vous pouvez lire ou écrire dessus ne signifie pas que c'est un fichier sur votre disque dur sous Linux. Par exemple, les périphériques sont généralement montés dans /dev
, donc accéder à des éléments là-dedans signifie souvent que vous communiquez avec un périphérique - peut-être la carte son, ou un scanner, ou un appareil photo, etc. Ceux-ci sont appelés des fichiers de périphérique. Procfs est un "système de fichiers" spécial normalement monté sur /proc
et a un "dossier" pour chaque processus en cours d'exécution, avec des fichiers dans chaque dossier liés à des éléments tels que la ligne de commande utilisée pour invoquer ce processus, les cartes mémoire, les fichiers ouverts, etc. Sysfs est un autre système de fichiers spécial (monté sur /sys
) utilisé pour exposer une multitude d'informations sur les objets du noyau en cours d'exécution et peut également être utilisé pour affiner le noyau en cours d'exécution en écrivant simplement dans un fichier particulier.