72 votes

Pourquoi l'expression "Tout est un fichier" est-elle propre aux systèmes d'exploitation Unix ?

J'entends souvent des gens dire "La philosophie unique d'Unix est qu'il traite tout comme un fichier" ou "Dans Unix, tout est un fichier". Mais je n'ai jamais entendu personne expliquer pourquoi c'est unique à Unix.

Alors, pourquoi est-ce unique à Unix ? Les autres systèmes d'exploitation tels que Windows et Mac ne fonctionnent-ils pas avec des fichiers ?

Et, est-il unique par rapport aux autres systèmes d'exploitation ?

9voto

Tom Dalling Points 10656

Lorsque les gens disent "Sous Unix, tout est un fichier", ils veulent dire que les choses qui ne sont pas des fichiers sont également traitées comme des fichiers.

Bien sûr, la plupart des systèmes d'exploitation fonctionnent avec des fichiers. Fichiers texte, fichiers image, fichiers son. Mais tous les systèmes d'exploitation ne traitent pas les périphériques comme des fichiers. C'est une différence importante. Si je répertorie le contenu de mon dossier /dev/ dans mon système d'exploitation Ubuntu (qui est basé sur Unix), j'obtiens une liste de plus de 200 périphériques. Certains de ces périphériques sont du matériel, mais sont présentés dans un dossier. Par exemple, les disques durs, les ports USB, la souris et le clavier, les périphériques audio et les imprimantes, entre autres. Certains de ces périphériques sont virtuels, par exemple /dev/urandom, qui se comporte comme un fichier infini rempli de nombres aléatoires. Ce n'est pas un fichier réel sur mon disque dur.

Tous ces dispositifs sont traités comme des fichiers. Je peux lire des données à partir de ces périphériques et/ou y écrire des données. Voici quelques exemples de copier des données de différents appareils dans l'appareil audio. Cela est possible parce qu'elles sont traitées comme des fichiers. Le résultat (geek) est la possibilité de écouter au contenu du disque dur, au mouvement de la souris, à la mémoire de l'ordinateur ou aux pixels d'une image. Cela serait beaucoup plus difficile à réaliser si les dispositifs n'étaient pas traités comme des fichiers, car chaque dispositif nécessiterait des méthodes différentes pour lire et écrire les données.

Cela dit, ce que signifie "tout" varie d'un système à l'autre. Par exemple, OS X est basé sur Unix, mais ne possède pas de périphérique /dev/audio. Il utilise un système audio propriétaire appelé CoreAudio. Dans ce cas, on pourrait donc dire que "presque tout est un fichier". Ensuite, dans des systèmes comme Windows, où "tout n'est pas un fichier", vous pouvez toujours faire des choses comme copier le contenu d'un fichier sur un port d'imprimante (en tapant quelque chose comme copy mydocument.txt >lpt1: ), ce qui est similaire à la copie d'un document sur le périphérique d'impression dans les systèmes Unix.

Les autres systèmes d'exploitation tels que Windows et OS X ne fonctionnent-ils pas sur les fichiers ? Si, ils le font. Windows et OS X fonctionnent sur des fichiers, mais Windows ne traite pas les périphériques comme des fichiers, ce qui fait partie de la signification de "tout est un fichier".

8voto

alvatar Points 1304

Je vois Multics cité comme la source de "tout est un fichier", mais je pense qu'il faut regarder un peu plus loin que les simples fichiers de périphériques, les tuyaux nommés, les fichiers réguliers, etc. etc. Il faut regarder la syntaxe de nommage des fichiers. Cela fait une grande différence même si les "noms de fichiers magiques" AUX, CON et LP existent.

Voir " Le nom hideux "par Rob Pike. Il compare la syntaxe de nommage des fichiers d'Unix avec quelques autres syntaxes, notamment VMS. Notez que les systèmes d'exploitation pour gros ordinateurs de la fin des années 60 et du début des années 70, époque à laquelle Unix a vu le jour, avaient une syntaxe de nommage des fichiers que l'esprit moderne considérerait comme extraordinairement rococo. Cela fait des années que je n'ai pas utilisé VM/CMS, ou NOS ou NOS/VE, et j'ai seulement regardé par-dessus l'épaule de quelqu'un qui utilisait un OS Univac, mais il suffit de dire que les bizarreries étaient plus nombreuses que les régularités.

Je n'ai jamais vu Multics fonctionner, mais on peut voir une papier sur son système de fichiers . Il semble que l'Unix original ait poussé le principe du "tout est un fichier" un peu plus loin que ne l'a fait Multics, mais votre expérience peut varier.

4voto

Matt Ryan Points 833

Veuillez noter que même Linus Torvalds n'est pas d'accord avec l'affirmation "tout est un fichier". Si vous recherchez "

tout est un bytestream

"vous trouverez des philosophies intéressantes sur la façon dont nous entendons que tout n'est pas un fichier ; par exemple, une structure de données abstraite dans la mémoire ou un pointeur n'est sûrement pas un fichier, OK, tout peut être représenté comme un dossier mais représenter et être sont deux actions différentes.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X