Wiki Linux SMH

   

Flux RSS

Gnu Linux

Cet article nécessite encore des ajouts/modifications.
N'hésitez pas à apporter votre contribution en complétant cet article.

1 - Histoire

1.1 - La naissance

L'histoire de GNU/Linux commence en 1991, lorsqu'un étudiant Finlandais du nom de Linus Torvald poste ce message, devenu mythique, sur les forums usenet.
Le projet était lancé : créer un noyau système qui, même si ce n'était pas forcément le but au début, pourrait, couplé aux outils GNU, fournir une alternative aux Unix propriétaires.

Au départ, Linux (qui s'appelait alors Freax), était surtout un moyen pour Linus de comprendre le fonctionnement de son ordinateur. Petit à petit, Linux est devenu un projet porté par une poignée de passionnés, avant de devenir la communauté rassemblant plusieurs milliers de développeurs qu'il est actuellement (et on ne parle que du noyau).

Il faut dire qu'au début, ce n'était pas très joyeux : un shell (bash), un compilateur (gcc), et hop c'est parti... Inutile de songer à des pilotes matériel ou encore à des interfaces ncurses (on ne vous parle même pas du serveur graphique, il faudra attendre...).
Pas de quoi enthousiasmer les néophytes, mais bon c'était un début prometteur...

1.2 - Le fonctionnement théorique

Le noyau Linux est directement inspiré des noyaux Unix, un système d'exploitation plus ancien qui avait déjà fait ces preuves dans les universités.
Le noyau Linux est de type monolithique : il gère énormément de chose, notamment la pile TCP, les pilotes matériels, les systèmes de fichier, etc...
C'est pour cette raison que depuis la version 2, le noyau Linux inclut un système de modules qui permet d'ajouter ou de retirer dynamiquement des bouts de code du noyau, pour ne pas l'encombrer inutilement (c'est une méthode beaucoup utilisée, notamment pour les pilotes, qui sont très nombreux aujourd'hui).

Au dessus du noyau, en espace utilisateur (càd soumis aux règles dictées par le noyau), tournent les applications. Il y a plusieurs type d'applications : les services (ou daemons), et les applications haut et bas niveau.

Les services sont des programmes qui se lancent au démarrage de la machine et qui tournent sans interruption (sauf crash) jusqu'à son extinction en arrière-plan. Un serveur web, mais également plus souvent le serveur CUPS qui gère les imprimante sont des exemples de services.

Les applications bas niveau sont les applications qui, à un degré plus ou moins grand, sont en contact direct avec le noyau (en fait, plus une application est proche de l'utilisateur, plus elle est "haut niveau"). Ainsi, dpkg est un logiciel bas niveau, tandis que apt est sa façade dite "haut niveau".

Les applications haut niveau sont les applications en conctact avec l'utilisateur (encore une fois, c'est une question de degré). Ainsi Firefox est une applications très haut niveau.

Linux emprunte à Unix un autre concept très important : sous les systèmes Unix, on dit que tout est fichier. Ainsi, sous les systèmes Unix, le répertoire /dev contient un ensemble de fichiers spéciaux qui représentent le matériel (exemple : la première partition du premier disque dur sera symbolisée par le fichier /dev/hda1). Ce système est très utile du point de vue de la gestion des droits par exemple : pour interdire à un utilisateur d'utiliser la carte son, il suffit de changer les permissions du fichier /dev/snd, et le tour est joué.

Le répertoire /proc est un exemple de ce concept poussé à l'extrême : ce répertoire représente l'état actuel de quasiment tout votre système. Ainsi, dans le répertoire /proc, vous trouverez entre autre une multitude de dossiers dont le nom est composé uniquement de chiffres : il s'agit des processus tournant actuellement sur votre machine! Les fichiers du répertoire /proc peuvent vous renseigner sur tout ce qui concerne votre système : mémoire vive utilisée, charge processeur, matériel connecté,...

Enfin, le concept de multi-utilisateur est très important dans tous les systèmes Unix (en fait, un système mono-utilisateur ne pourrait pas se dire de la famille Unix, quel que soit la proximité de sa conception par ailleurs). Dans tous les systèmes de type Unix, les utilisateurs sont identifiés par leur uid (User Identifier) et les groupes d'utilisateur par leur gid (Group Identifier). Ces deux nombres permettent au noyau de déterminer qu'est-ce que vous pouvez faire ou ne pas faire sur le système, selon les permissions qui vous sont accordées. Le fichier /etc/passwd fait le lien (entre autre) entre l'uid d'un utilisateur et son login. Ceci amène à quelque chose de très important : le login d'un utilisateur ou le nom d'un groupe n'est rien : seul compte l'uid/gid. Cela permet aux utilisateurs de changer de login sans casser toutes les permissions : si le nouveau login est lié au même uid que l'ancien dans /etc/passwd, il aura les mêmes permissions. Précisons le cas de l'uid 0, qui correspond à l'utilisateur "root", utilisateur disposant d'absolument tous les droits sur le système.

2 - Architecture

2.1 - Espace utilisateur et espace noyau

Il existe deux espaces mémoires dans Linux :

  • l'espace noyau
  • l'espace utilisateur
  détailler chaque espace
2.1.1 - Espace noyau

L'espace noyau ne peut être accédé que par le noyau ou ses modules.

2.1.2 - Espace utilisateur

L'espace utilisateur est accessible par tous les utilisateurs.

Vous êtes : 38.107.191.88 Dernière modification : 03/12/06 19:52 Propriétaire : Fritz Modifié par : Fritz

Commentaires

Afficher les commentaires
Il y a 1 commentaire(s)