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 ?

55voto

sawdust Points 16268

Alors, pourquoi est-ce unique à Unix ?

Les systèmes d'exploitation classiques, avant Unix, traitaient les fichiers d'une seule façon et chaque périphérique en fonction des caractéristiques de ce dernier. En d'autres termes, si la sortie d'un programme était écrite dans un fichier sur le disque, c'était le seul endroit où la sortie pouvait aller ; vous ne pouviez pas l'envoyer à l'imprimante ou au lecteur de bande. Chaque programme devait être conscient de chaque périphérique utilisé pour l'entrée et la sortie, et disposer d'options de commande pour gérer les périphériques d'E/S alternatifs.

Unix traite tous les périphériques comme des fichiers, mais avec des attributs spéciaux. Pour simplifier les programmes, entrée standard y sortie standard sont les périphériques d'entrée et de sortie par défaut d'un programme. Ainsi, la sortie du programme normalement destinée à l'écran de la console peut aller n'importe où, vers un fichier disque, une imprimante ou un port série. C'est ce qu'on appelle Redirection des E/S .

Les autres systèmes d'exploitation, tels que Windows et Mac, ne fonctionnent-ils pas sur les fichiers ?

Bien sûr, tous les systèmes d'exploitation modernes prennent en charge divers systèmes de fichiers et peuvent "fonctionner sur des fichiers", mais la distinction est la suivante : comment les périphériques sont-ils gérés ? Je ne sais pas pour Mac, mais Windows offre une certaine redirection des E/S.

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

Plus vraiment. Linux possède la même fonctionnalité. Bien sûr, si un système d'exploitation adopte la redirection des E/S, il a tendance à utiliser d'autres fonctionnalités Unix et finit par ressembler à Unix.

34voto

Patrick Seymour Points 8162

L'idée que "tout est un fichier" vient de Multics. Les concepteurs d'Unix ont basé une grande partie de leur travail sur leurs prédécesseurs, notamment Multics. En effet, beaucoup de choses en informatique sont basées sur des prédécesseurs.

Vous pouvez lire le travail de feu Dennis Ritchie sur la conception d'Unix pour en savoir plus. Il a fait référence à des choses qu'ils ont "copiées" de Multics, comme le système de fichiers arborescent, la commande Shell, et la non-structuration des fichiers. Je ne veux pas dire que les gens d'Unix ont volé les gens de Multics. A toutes fins utiles, il s'agissait des mêmes personnes.

28voto

Chochos Points 3364

Unique ? Non. Définitif ? Absolument.

Le fait de tout avoir sous forme de fichier ou de dispositif dans une hiérarchie connue signifie que vous pouvez utiliser le même ensemble d'outils pour tout. _Plan 9 des Laboratoires Bell_ va plus loin en considérant même les dispositifs matériels comme des fichiers.

Plus important encore, cela permet de mettre en œuvre deux concepts très simples et très puissants. Des utilitaires de base qui font une seule chose bien (tm), qui peuvent être enchaînés avec des tuyaux selon les besoins. Vous voulez trouver quelque chose dans un fichier texte ? Utilisez cat pour le montrer, le faire passer grep et vous cuisinez au gaz. C'est la véritable puissance de la méthode "Unix" - des applications spécialisées qui travaillent ensemble pour une grande flexibilité.

Mac OS X suit également la philosophie d'Unix, mais il est mieux caché (un paquet d'applications est en fait un répertoire plein de fichiers), et est en fait un véritable Unix certifié, descendant de l'ancien système d'exploitation Unix. NeXT qui utilisait des bits de FreeBSD .

Avec Windows, il existe des composants binaires tels que l'observateur d'événements et le registre depuis, et il y a des avantages en termes de vitesse, dans ce scénario particulier.

19voto

wnrph Points 3563

A cause des dossiers spéciaux. Lorsque les gens disent "tout est un fichier sous Unix", ils n'ont pas à l'esprit les fichiers et répertoires courants. Les fichiers spéciaux sont propres aux systèmes d'exploitation de type Unix, qui sont nombreux. Il n'est donc pas unique à le site Unix.

Les dossiers spéciaux servent à de nombreuses fins. Il y a par exemple les pipes, les sockets et, surtout, les fichiers de périphériques. Les pipes et les sockets sont des flux de communication entre les processus. Une grande partie des fonctionnalités des sous-systèmes est mise à la disposition de l'espace utilisateur par le biais des fichiers de périphériques.

Tuyaux et prises

Les programmes les utilisent comme ils le feraient avec des fichiers ordinaires. En fait, la plupart du temps, ils ne se soucient même pas du type de fichier qu'ils utilisent. C'est pourquoi les commandes Unix peuvent être combinées de façon si variée pour former de nouveaux systèmes puissants. (Voir la redirection des E/S dans la réponse de la sciure)

Fichiers d'appareils

Comme mentionné précédemment, ils agissent comme des interfaces pour l'espace utilisateur. Par exemple, pour éjecter le tiroir à cd, un programmeur doit d'abord ouvrir le fichier de périphérique correspondant. Autre exemple : vous voulez que votre programme commute le terminal virtuel. Ouvrez d'abord /dev/console.

Ce qui se passe ensuite n'envoie pas de simples caractères à ces fichiers, mais en émettant ioctl() 's sur les. Les ioctl's individuelles que vous pouvez émettre dépendent du périphérique. Par exemple, la console est documentée dans console_ioctl(4)

12voto

Don Points 11

Je vais probablement me faire engueuler pour avoir dit cela, mais je pense que dire que tout est un fichier dans Unix est en fait une erreur. Il s'agit en fait de deux choses.

  1. Les fichiers et les périphériques (et beaucoup d'autres choses) sont des objets qui peuvent être modélisés par une interface comprenant des fonctions d'ouverture, de fermeture, de lecture, d'écriture et de contrôle (ioctl).
  2. L'espace de nom de ces objets est hiérarchique, c'est-à-dire que ces objets sont organisés en une hiérarchie.

Un système de fichiers implémente cet espace de noms et met en œuvre le cadre qui permet d'envoyer des fonctions d'interface à ces objets. Un système de fichiers a d'abord été conceptualisé pour héberger des fichiers, mais a ensuite été coopté pour organiser d'autres objets dans la hiérarchie de l'espace de noms. Un exemple de polymorphisme datant d'avant l'orientation objet.

Il n'y a pas de mal à appeler tout cela des fichiers. Mais en réalité, il s'agit d'objets plus génériques (un fichier étant un de ces objets). De ce point de vue, cette idée n'est pas du tout propre à Unix. Beaucoup d'autres systèmes d'exploitation mettent en œuvre de telles hiérarchies d'objets polymorphes.

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