suivant chapitre avant contenu index

Suivant: Applications Chapitre: Introduction à Linux Avant: Bref historique de


Caractéristiques du système

Linux offre la plupart des possibilités offertes par d'autres implémentations d'UNIX, plus quelques unes que l'on ne trouve nulle part ailleurs. Cette section fait un tour d'horizon des caractéristiques du noyau de Linux.        

Linux est un système d'exploitation multi-tâches et multi-utilisateurs (exactement comme toute autre version d'UNIX). Cela signifie que plusieurs utilisateurs peuvent utiliser la même machine en même temps, tout en utilisant simultanément de nombreux programmes différents.  

Le système Linux est compatible avec un certain nombre de standards UNIX (si tant est qu'UNIX ait des standards) au niveau code source, incluant IEEE POSIX.1, System V, et à la fois BSD.     Il a été développé en ayant toujours en tête la portabilité au niveau source: par conséquent, vous trouverez sous Linux les caractéristiques les plus courantes que l'on rencontre sur diverses implémentations. Un très grand nombre d'applications UNIX gratuites disponibles sur l'Internet ou ailleurs se compilent sous Linux sans aucune modification. De plus, tout le code source du système, y compris le noyau, les pilotes, bibliothèques, programmes utilisateurs, et outils de développement, est gratuit et librement distribuable.

Linux comprend d'autres caractéristiques spécifiques comme le contrôle de processus POSIX (utilisé par des shells comme csh et bash),   pseudo-terminaux (périphériques pty), et le support de claviers internationaux ou personnalisés modifiables dynamiquement. Linux supporte également des consoles virtuelles,   qui vous permettent de commuter le clavier et l'écran entre plusieurs sessions de travail en mode texte. Les utilisateurs du programme `` screen'' seront très à l'aise avec l'implémentation des consoles virtuelles de Linux.

Le noyau étant capable d'émuler un co-processeur mathématique (387-FPU) par lui-même, les machines dépourvues de tels processeurs peuvent tout de même utiliser de manière totalement transparente des programmes qui utilisent ce co-processeur.  

Linux possède différents types de systèmes de fichiers pour stocker les données. Certains, comme ext2fs, ont été développés spécialement pour Linux.   D'autres types de systèmes de fichiers, comme Minix-1 et Xenix, sont aussi supportés. Le système de fichiers MS-DOS a été également implémenté, pour vous permettre d'accéder directement à vos disques MS-DOS depuis Linux, en montant une partition ou une disquette le plus naturellement du monde. Le type CD-ROM ISO 9660, qui permet de lire tous les formats standard de CD-ROM, est aussi supporté. Nous parlerons plus en détail des systèmes de fichiers dans les chapitres 2, ``2'', et 4, ``4''.

Linux fournit une implémentation complète du réseau TCP/IP. Ceci comprend les pilotes de périphériques pour beaucoup de cartes Ethernet populaires, SLIP (Serial Line Internet Protocol, et PPP, Point to Point Protocol, qui vous permettent d'accéder à un réseau TCP/IP depuis une connexion série, avec un modem par exemple), NFS, et bien d'autres choses. La totalité des clients et services TCP/IP est supportée, comme FTP, telnet, NNTP et SMTP par exemple. Nous parlerons du réseau dans le chapitre 5.        

Le noyau de Linux utilise les possibilités du mode protégé des processeurs Intel 80386 et 80486.   En particulier, Linux utilise les primitives de gestion mémoire et de tâches, ainsi que d'autres caractéristiques techniques de ces processeurs. Toute personne familière avec la programmation en mode protégé du 80386 sait que ce processeur fut réalisé pour les systèmes multi-tâches comme UNIX (ou, en l'occurrence, Multics). Linux exploite ceci avec bonheur.

Le noyau Linux supporte le chargement à la demande des exécutables. C'est à dire que seuls les segments d'un programme qui sont réellement utilisés sont lus et chargés en mémoire. Linux utilise aussi la technique de partage des pages mémoire avec copie à l'écriture, ce qui signifie que si plusieurs instances d'un même programme sont utilisées en même temps, elle partageront leurs pages de mémoire physique, ce qui réduit notablement la mémoire globalement utilisée.  

Afin d'augmenter la mémoire disponible, Linux implémente également la pagination sur disque: Jusqu'à 256 Mégaoctets d' ``espace de swap''gif peuvent être alloués sur le disque dur. Lorsque le système a besoin de plus de mémoire physique, il transfère les pages inactives sur le disque, vous permettant ainsi de pouvoir utiliser de plus grosses applications ou de supporter plus d'utilisateurs à la fois. Mais attention, la zone de swap ne remplace pas la mémoire physique (RAM), c'est bien entendu beaucoup, beaucoup plus lent !

 

Le noyau utilise aussi une réserve de mémoire dynamique, commune aux programmes utilisateurs et au cache disque. De cette façon, Linux utilise la totalité de la mémoire RAM dont vous disposez pour le cache disque, celui-ci étant réduit ou augmenté en fonction des besoins en mémoire des programmes.

Les exécutables utilisent des bibliothèques partagées,     ce qui signifie que les binaires partagent le code commun aux fonctions librairie, si 50 programmes utilisent printf(), le code de printf() ne sera présent qu'une seule fois en mémoire. Ceci permet de réduire considérablement l'espace occupé par les programmes. Il existe aussi bien entendu la possibilité d'utiliser des bibliothèques statiques pour ceux qui ont besoin de déboguer un programme ou qui veulent conserver un exécutable ``complet'', pouvant s'exécuter en l'absence des fichiers de librairies partagées. Les librairies partagées de Linux sont linkées dynamiquement à l'éxéxution, autorisant le programmeur à remplacer des modules des librairies par ses propres routines s'il le désire.

Afin de faciliter le déboguage, le noyau de Linux génère des core dumps (sauvegarde d'image mémoire) à des fins d'analyse post-mortem des programmes. A l'aide d'un core-dump et d'un exécutable compilé en mode déboguage, il est possible de déterminer la cause de l'erreur qui a provoqué la fin prématurée du processus.      

       



suivant chapitre avant contenu index

Suivant: Applications Chapitre: Introduction à Linux Avant: Bref historique de


Jean-Michel Antoine
Mon Apr 3 16:04:54 MET DST 1995