Professional Documents
Culture Documents
Exposé Systeme Dexploitation-Linuxdocx
Exposé Systeme Dexploitation-Linuxdocx
ـيـ ـ ـة
REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE
وزارة التـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـع ـ ـ ـليـ ـ ـ ـ ـم الع ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـايل و الب ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـحث الع ـ ـ ـ ـ ـ ـ ـ ـ ـ ـلـ ـ ــم ـ ـ ـ ـ ـ ـي
Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
ج ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ــامعة أيب ب ـكـ ـ ـ ـ ـ ــر ب ـ ـلـ ــق ـ ـ ــاي ـد – تـ ـ ـ ـلمسـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـ ـان –
– Université Aboubakr Belkaïd – Tlemcen
Faculté de TECHNOLOGIE
MINIPROJET
Module : Système d’exploitation embarqués
Sujet :
Linux
2
3.2.1 Gestion de la mémoire ............................................................................................ 22
3.2.1.1 Mémoire physique ........................................................................................... 23
3.2.1.2 Mémoire virtuelle ............................................................................................ 23
3.2.2 Threads, processus et ordonnancement :............................................................... 25
3.2.2.1 Threads noyau et threads utilisateur :............................................................. 25
3.2.2.2 Création et destruction .................................................................................... 25
3.2.2.3 Changement de contexte et ordonnancement ............................................... 26
3.2.2.4 Interactions entre applications et noyau ......................................................... 26
3.2.3 Processus : synchronisation et communication ...................................................... 27
3.2.3.1 Synchronisation dans le noyau ........................................................................ 27
3.2.3.2 Synchronisation et communication au niveau utilisateur ............................... 28
3.2.4 Fichiers .................................................................................................................... 29
3.2.4.1 Structures fondamentales ............................................................................... 29
3.2.4.2 Ouverture d’un fichier ..................................................................................... 31
3.2.4.3 Manipulation d’un fichier ................................................................................ 32
3.2.5 Pilotes de peripherique ........................................................................................... 32
3.2.5.1 Types de pilotes et sous-systemes................................................................... 32
3.2.5.2 Interaction avec le materiel ............................................................................. 33
3.2.5.3 Representation dans l’espace de nommage.................................................... 34
3.2.6 Code dependant de l’architecture .......................................................................... 34
4 Evaluation .......................................................................................................................................... 35
4.1 Comparaison ................................................................................................................................. 35
4.2 Avantage........................................................................................................................................ 37
5 Conclusion ......................................................................................................................................... 38
6 Réfèrences ......................................................................................................................................... 39
3
1 Introduction :
Un système informatique moderne consiste en un ou plusieurs processeurs,
de la mémoire principale, des disques, des imprimantes, un clavier, un écran, des
interfaces réseau et autres périphériques d’E/S. Tout bien considéré, c'est un
système complexe. Écrire des programmes qui prennent en compte tous ces
composants, et les utilisant correctement, de surcroît de façon optimale, est une
tâche extrêmement difficile. Pour cette raison, les ordinateurs sont équipés d'une
couche logicielle appelée système d'exploitation, dont le rôle est de gérer tous les
périphériques et de fournir aux programmes utilisateur une interface simplifiée
avec le matériel.
1.1 Système d’exploitation :
1.1.1 Définition
Un système d'exploitation est un ensemble de programmes qui coopèrent à la
gestion des ressources de la machine (ordinateur), par exemple : Unix, Windows,
MacOs.
Applications
Système d’exploitation
Matériel
4
• Gérer les ressources de la machine :
Le système d'exploitation doit gérer l'ensemble des éléments d'un système
fort complexe. Les ordinateurs modernes sont constitués d'un ou plusieurs
processeurs, d'une mémoire, de timers, de disques, d'une souris, d'une ou
plusieurs interfaces réseau et imprimantes, et le cas échéant de divers autres
périphériques. Le système d'exploitation doit gérer de manière équitable et
optimale l'allocation des processeurs, de la mémoire et des périphériques
d'E/S aux différents programmes
concurrents qui les sollicitent.
• Le plus bas niveau contient les périphériques, circuits intégrés, les câbles,
les alimentations et autres.
• Vient ensuite la niveau micro-architecture. En général, ce niveau
comprend des registres internes à la CPU (Central Processing Unit) et un
chemin de données contenant une ALU (Arithmetic and Logic Unit). Le
rôle du chemin de données est d'exécuter un ensemble d'instructions. Ces
instructions peuvent utiliser des registres ou d'autres ressources.
• Le matériel et les instructions accessibles au programmeur en assembleur
constituent le niveau ISA (Instruction Set Architecture). Ce niveau est
souvent appelé le langage machine.
5
• Pour masquer cette complexité du bas niveau, on a recours à un système
d'exploitation. Il consiste en une couche logicielle qui cache partiellement
le matériel et fournit au développeur un jeu d'instructions plus pratique
pour son travail.
• Au-dessus du système d'exploitation, on trouve le reste du logiciel
système. Il comprend l'interpréteur de commandes, le système de
fenêtrage, les compilateurs, et d'autres programmes indépendants des
applications.
• Enfin, on trouve au-dessus des programmes systèmes des programmes
applicatifs. Ces programmes sont achetés ou conçus par les utilisateurs
pour leurs besoins particuliers, comme le calcul scientifique, le tableur, le
traitement de texte, ou la gestion de bases de données.
1.2 Historique :
6
• Été 1969 : Ken Thompson, aux BELL Laboratories, écrit la version
expérimentale d’Linux : système de fichiers exploité dans un
environnement mono-utilisateur, multitâche, le tout étant écrit en
assembleur.
• 1ère justification officielle : traitement de texte pour secrétariat.
Puis : étude des principes de programmation, de réseaux et de
langages.
• Eté 1973 : réécriture du noyau et des utilitaires d’Linux en C.
• En 1974 : distribution d’Linux aux Universités (Berkeley et Columbia
notamment). Il se compose alors :
D’un système de fichiers modulaire et simple, d’une interface unifiée
vers les périphériques par l’intermédiaire du système de fichiers, du
multitâche, et d’un interpréteur de commandes flexible et
interchangeable.
1984-1993 : la standardisation
• LINUX est une implantation libre des spécifications POSIX avec des
extensions System V (AT&T) et BSD (Berkeley).
• En 1991 : Linus B. Torvalds (Helsinki) utilise MINIX.
7
• Août 1991 : 1ère version de LINUX 0.01. C’est une réécriture de
MINIX, avec des ajouts de nouvelles fonctionnalités et la diffusion
des sources sur « Internet ».
1.3 Présentation :
1.3.1 Comment est maintenu le projet Linux ?
9
Le système GNU permet l’utilisation de tous les logiciels libres, pas
seulement ceux réalisés dans le cadre du projet GNU que sa liberté est définie
sur :
• Liberté d'exécuter le programme, pour tous les usages
• Liberté d'étudier le fonctionnement du programme, de
l'adapter à ses besoins
• Liberté de redistribuer des copies
• Liberté d'améliorer le programme et de publier ses
améliorations, pour en faire profiter toute la communauté
Windows a toujours été fourni avec une interface graphique,
pourtant certains serveurs (Web, fichiers, BDD,...) n'ont aucunement
besoin d'une interface graphique et de cette façon des ressources sont
occupées pour rien. L'interface graphique Linux (X Window) est un
sous-système facultatif que vous pouvez choisir d'utiliser ou non. En
outre, vous pouvez démarrer et arrêter l'interface graphique quand
vous le souhaitez sans avoir à redémarrer le système et sans avoir un
quelconque effet sur les programmes en cours d'exécution.
Il faut savoir que sous Windows il n'existe qu'un seul environnement
de bureau possible par défaut (on peut en installer d'autres mais ils sont très
peu). Alors que sous Linux, il en existe plusieurs (KDE, GNOME, XFCE, etc.). On
peut les combiner, c'est-à-dire choisir à l'ouverture de sa session le type
d'environnement que l'on souhaite.
10
• Exemple de distribution :
2 Système Linux :
2.1 Architecture :
11
Figure 05 : Architecture des systèmes GNU/Linuxx
• Les systèmes Unix, donc Linux, sont très structurés, donc plus
simples à utiliser, à configurer, à maintenir et à développer.
• Ils sont très stables, car les composants de haut niveau n'interfèrent
pas sur les composants de bas niveau.
• Ils sont faciles à personnaliser, puisque l'utilisateur a le choix des
outils à chaque niveau.
• Linux a de plus la particularité d'être parfaitement modifiable,
puisque si l'on sait programmer, on peut personnaliser les
composants du système ou en rajouter à tous les niveaux.
• Il n'est pas propriétaire, c'est-à-dire que l'on n'est pas dépendant
d'un éditeur de logiciel pour résoudre un problème donné.
2.2 Structure :
Le noyau gère les tâches de base du système :
• L'initialisation du système.
• La gestion des ressources.
• La gestion des processus.
• La gestion des fichiers.
• La gestion des Entrées/Sorties.
→ Processus init
→ Services et démons
Lancement du système : boot -> init -> modules/services
• Après le chargement du noyau, le script correspondant à sysinit
dans fichier inittab est chargé :
– Mandriva : /etc/rc.d/rc.sysinit
– Debian : /etc/rc.d/rcS lance les scripts /etc/rcS.d/S??*
• Ce script d'initialisation est chargé de 2 tâches fondamentales :
‒ charger les modules dans le noyau (gestion des périphériques)
‒ démarrer les services en exécutant les processus «Deferred
Auxiliary
Executive Monitor» (daemons) correspondant, en français :
démons
→ Les runlevels
Lancement du système : boot -> init -> services
14
• Le mécanisme de démarrage des services est caractéristique d'une
distribution (incompatibilités entre distributions) :
- Mandriva, Debian, RedHat, ... mécanisme dérivé d' «Unix System V»
- Slackware, FreeBSD, NetBSD, ... mécanisme dérivée d' «Unix BSD»
• le répertoire /etc/init.d contient tous les scripts de gestion des
services installés (1 service <-> 1 ou plusieurs démon(s))
• les lignes «/etc/rc.d/rc x» du fichier /etc/inittab déterminent le
lancement des scripts pour le runlevel x
• Le runlevel de l'action initdefault est lancé par le ligne correspondante
→ Les runlevels :
16
Figure 08 : Processus de boot
17
• Pilotes d’appareils : Agir à titre de médiateur/interprète entre le
matériel et les processus.
• Appels système et sécurité : Recevoir les demandes de service des
processus.
18
commencer par presenter les concepts lies à la gestion de ces deux grandes
catégories de ressources.
3.1.1 Ressources d’exécution
Pour exécuter un programme utilisateur, les acteurs centraux sont les
instructions et les donnees manipulees par ces instructions, pris en charge par
deux composants fondamentaux : le processeur et la memoir e. Nous
presentons ici le cas general des systemes d’exploitation, sans nous
concentrer sur Unix en particulier
3.1.1.1 Threads
Lorsqu’on veut donner l’illusion d’une execution en parallele de
plusieurs applications, on doit gerer plusieurs flots d’instructions, sachant
que, a chaque instant, seulement un de ces flots sera execute sur chaque
processeur. Traditionnellement, on appelle de tels flots des threads, et on
parle de systeme multitache.
3.1.1.2 Ordonnancement et synchronisation
La partie du noyau qui s’occupe de gerer ces ressources threads est
l’ordonnanceur : c’est lui qui décide vers quel thread prêt effectuer chaque
changement de contexte. L’etat d’un thread (prêt ou bloque) dépend des
ressources qu’il demande et des ressources disponibles dans le systeme.
Les sources de blocage peuvent etre liees a des ressources matérielles
(correspondre à une realite physique tangible, comme un disque), logiques
(zones de memoire, fichiers, messages reseau, ...), ou purement virtuelles,
auquel cas on parle de synchronisations. Dans ce dernier cas, un thread peut
etre bloque en attente qu’un autre thread lui signale un evenement
particulier (il n’y a pas de vraie ressource la-dedans). En general, quand on
parle de blocage sur une ressource logique ou materielle, il s’agit en fait d’un
blocage sur une synchronisation sous-jacente, qui sert a proteger la
ressource logique ou materielle, comme le montre le scenario de la figure ci
dessous : deux threads identiques executent la meme fonction f() qui devrait
logiquement renvoyer 1 (a); sans synchronisation, leurs executions peuvent
s’entrelacer de fac¸on incorrecte (b); avec synchronisation, l’objectif serait de
se ramener a un scenario sans entrelacement comme celui de (c).
19
Figure09 : script de synchro/ordo
Les synchronisations les plus courantes sont les mutex (exclusion mutuelle),
les semaphores (protection de ressources constituées d’une quantite connue
d’unites, comme des files de messages), les conditions (un thread se met en
sommeil en attendant que la condition soit validée, ou signalee par un autre
thread), ou encore les files de messages (analogie avec un pipe Unix).
3.1.1.3 Espace d’adressage et memoire virtuelle
Le processeur lit les instructions des threads a executer en memoire, et une
partie d’entre elles agit sur des donnees en memoire (lecture/ecriture). Pour
faire du multitache robuste simplement, on est amene à distinguer deux
types d’adresse : les adresses pour acceder aux octets en memoire physique
(“adresses physiques”), et les adresses manipulees par le processeur pour
ses donnees et ses instructions (“adresses effectives” du processeur relatives
a` l’espace d’adressage” courant). La traduction adresses effectives ⇒
adresses physiques est effectuee par un composant particulier, souvent
integre dans le processeur : la MMU (Memory Management Unit). Cette
traduction est realisee en fonction de la configuration de l’espace d’adressage
courant, elle-même stockée en mémoire sous la forme de tables et Certaines
MMU font la traduction dans le sens inverse.
20
Figure10 : structure Mémoire Physique
3.1.2 Fichiers et espace de nommage
3.1.2.1 Operations sur les fichiers
Un fichier est la representation des ressources du système accessibles à
l’utilisateur, qui est a la fois uniforme et simple a manipuler. Parmi ces
ressources, on trouve les fichiers “classiques” bien sûr, mais aussi les
périphériques matériels, les sockets (programmation réseau), etc... Sous
Unix, on accede a un fichier du systeme par l’intermediaire d’une interface de
programmation unique, principalement formee des fonctions simples de
lecture (read), d’ecriture (write), de deplacement de la tete de lecture (seek),
d’attente d’opérations externes (lecture/écriture par d’autres applications :
select), et de consultation des informations sur le fichier (taille, date de
creation : stat). Cette interface unique permet de simplifier l’ecriture des
applications : on peut ainsi utiliser les memes fonctions pour acceder a un
disque IDE ou SCSI, a une carte son, ou un fichier du type /etc/passwd. Les
fichiers d’un systeme Unix ne supportent pas forcement toutes ces
opérations. Ainsi, on distingue les fichiers accessibles en mode bloc pour
lesquels la fonction seek est supportée (on peut se deplacer librement dans
tout le fichier), et les autres, dits “mode caractere”, pour lesquels seules les
lectures/écritures séquentielles sont supportées. Par exemple, les fichiers
stockes sur disque, et le disque lui-meme, sont des fichiers accessibles en
mode bloc. Un socket réseau ou une imprimante sont ainsi de type caractere
seulement.
Inversement, certains fichiers supportent d’autres operations. Sous Unix,
d’autres interfaces etendues ont ainsi ete definies, telles que les interfaces
pour les sockets (accept, bind, ...), ou celles pour les repertoires (readdir, ...).
De meme, Unix definit des fichiers speciaux qui font le lien direct entre les
applications utilisateur et les pilotes de peripheriques internes au noyau.
21
Pour ces fichiers speciaux aussi, une extension a l’interface standard est
prevue (fonction ioctl), qui permet par exemple de modifier la frequence
d’echantillonnage d’une carte son, ou la resolution d’une carte graphique,
etc...
3.1.2.2 Espace de nommage
Sous Unix, la plupart des fichiers accessibles sont rassembles dans une
arborescence unique globale a tout le systeme, permettant de les identifier
par un nom unique, ou chemin (/home/toto/.bashrc par exemple) : c’est
l’espace de nommage. Les fichiers spéciaux sont egalement présents dans cet
espace, et sont caracterises par un moyen d’identifier le pilote associe (le
fameux couple de nombres majeur/mineur). Cependant, tous les fichiers
n’apparaissent pas necessairement dans l’espace de nommage, tels les
sockets reseau. Sous Unix, l’espace de nommage est unique, mais peut etre
constitue de plusieurs sous-arborescences, chacune d’entre elles
correspondant à un système de fichiers monte. En général, un système de
fichiers est une organisation particulière des données physiques stockées sur
un disque (comme FAT ou ext2), mais il peut être aussi purement virtuel
(comme /proc).
3.1.3 Interaction noyau / applications utilisateur
Dans les systèmes Unix généralistes, il y a cloisonnement entre applications,
mais aussi entre les applications et le noyau. A cet effet, celles-ci ne sont pas
autorisées à effectuer certaines opérations dites “privilégiées”. Tout
particulièrement, elles ne sont pas autorisées à modifier leur espace
d’adressage pour accéder à l’espace d’adressage d’une autre application. Seul
le noyau est autorisé à prendre en charge ces opérations. Il apparaît par
conséquent au moins deux modes d’exécution des instructions qui doivent
être supportes par le processeur : le mode privilégie, ou noyau, et le mode
non privilégie, ou utilisateur. Les applications utilisateur fonctionnent en
mode utilisateur et font appel aux services du noyau au travers d’un
changement de mode parfaitement contrôle: un appel système, qui
correspond à un appel de fonction avec changement de privilège.
27
L’utilisation des spinlocks doit etre limitee a proteger du code dont le temps
d’execution est tres faible et non bloquant. Il n’est en effet pas acceptable de
desactiver les interruptions pendant trop longtemps, ou de consommer du
temps a ne rien faire durant une attente active.
Semaphores. Les semaphores (include/asm/semaphore.h) sont des
primitives de synchronisation. Contrairement aux spinlocks, pendant qu’on
possede un semaphore, on peut réaliser des opérations bloquantes. Ceci
serait en effet dangereux si on utilisait des spinlocks: etant donne que les
interruptions sont desactivees, on risquerait de ne pas etre reveille suite au
blocage. Avec les semaphores, un thread qui demande une ressource non
disponible est place dans un état d’attente (donc non éligible par
l’ordonnanceur), et donc susceptible d’etre reveille lorsque la ressource
deviendra disponible (suite a une interruption par exemple).
3.2.3.2 Synchronisation et communication au niveau utilisateur
Le noyau propose une serie d’appels systeme et de paradigmes pour
permettre aux processus de se synchroniser et de communiquer. Ces
fonctionnalites sont implantees au-dessus de celles baties dans le noyau.
Certaines sont disponibles sur la plupart des Unix (signaux, fichiers), d’autres
sont propres à l’API dite IPC System V, desormais largement repandue.
Semaphores. Les appels système semget (), semctl() et semop() permettent
de creer et d’utiliser des semaphores au niveau utilisateur. Leur
implémentation se situe dans ipc/sem.c.
Files de messages. Les files de message sont à la fois un mecanisme de
synchronisation et de communication : elles permettent aux processus de se
synchroniser sur l’attente d’un evenement, et la survenue de l’evenement est
accompagnee d’informations personnalisables (le contenu du message). Les
files de messages s’utilisent via les appels systèmes msgget(), msgctl(),
msgsnd(), msgrcv(), ... Ces appels systeme sont implantes dans ipc/msg.c.
Fichiers. Les fichiers sont un moyen de communication évident, notamment
les fichiers type pipe (man pipe) ou fifo (man mkfifo). Ils sont aussi un moyen
de synchronisation proche des sémaphores, grâce aux appels système fcntl()
(flags F GETLK et F SETLK) et flock().
Signaux. Les signaux sont un mecanisme de communication basique
permettant de declencher l’execution de routines depuis d’autres processus.
Ces routines sont appelées les gestionnaires de signaux. Dans le noyau, ces
gestionnaires de signaux sont définis dans la structure
include/linux/sched.h:struct signal struct. Pour chaque processus, ils sont
rassembles dans le champ sig de la structure include/linux/sched.h:struct task
struct. Le nombre de signaux et leur semantique sont parfaitement limites
(include/asm/signal.h) : seulement deux signaux, SIGUSR1 et SIGUSR2 sont
28
disponibles pourl’utilisateur. Le systeme définit pour chaque signal un
gestionnaire par defaut, qu’il est possible de changer pour la plupart des
signaux en utilisant les appels système signal () ou sigaction(), dont le code
est dans kernel/signal.c. Le signal SIGSEGV introduit est l’un de ces signaux.
Memoire partagee. La memoire partagee permet de disposer d’une region
virtuelle de memoire qui est partagee entre plusieurs espaces d’adressage, et
donc entre plusieurs
Processus. C’est un moyen tres efficace de communiquer des informations
entre processus, mais ce n’est pas un moyen de synchronisation. L’utilisation
d’une region de memoire partagee s’accompagne donc souvent de
l’utilisation d’un sémaphore pour protéger l’accès a cette ressource partagee.
Les appels systeme permettant d’utiliser la mémoire partagée sont mmap ()
(hautement portable) et shmat()/shmget()/shmctl() (API IPC System V). Ils
sont respectivement implementes dans mm/mmap.c et ipc/shm.c.
3.2.4 Fichiers
Le support des differents systemes de fichiers (ext2, FAT, ...) repose sur la
même architecture de base : le VFS, ou Virtual File System. Il définit les
abstractions, les structures, et la liste des opérations communes a tous les
systemes de fichiers, et assure 1) la coherence de l’espace de nommage global
(points de montage), 2) l’interaction uniforme avec les applications utilisateur
(interface de programmation unique), et 3) l’integration du sous-systeme de
fichiers avec les autres sous-systèmes, notamment la gestion de la memoire
virtuelle (mapping de fichiers). Nous nous limitons ici a presenter le VFS:
voyage au centre des fichiers”. Le code du VFS se trouve principalement dans
les fichiers source du repertoire fs, et le code des differ´ ents systemes de
fichiers se trouve dans les sous-repertoires correspondants.
3.2.4.1 Structures fondamentales
Pour une application utilisateur, un fichier ouvert correspond à un entier.
Pour tous les appels systeme de manipulation d’un fichier, le noyau utilise cet
entier comme un index dans le tableau fd array de la structure noyau
include/linux/sched.h:files struct propre a chaque processus (champ files de
include/linux/sched.h:task struct). L’entree correspondante fait reference a
un objet de type include/linux/fs.h:struct file.
Cette structure rassemble des informations propres acette ouverture du
fichier par ce processus (curseur de lecture/ecriture, mode d’acces). Elle
rassemble également les references vers les données communes a toutes les
ouvertures du fichier qui ont été faites dans l’ensemble du systeme.
29
Parmi ces references, le pointeur f op pointe vers la liste des operations qui
peuvent etre effectuees sur le fichier (read, write, . . .). C’est la structure
include/linux/fs.h:struct file operations qui les rassemble, sous la forme d’une
serie de pointeurs vers des fonctions. Ces fonctions sont implantees par le
systeme de fichiers prenant en charge ce fichier.
Le pointeur f vfsmnt de la structure file pointe justement vers une structure
de type include/linux/mount.h:struct vfsmount, et fait ainsi reference au
systeme de fichiers prenant en charge le fichier. Elle est unique pour chaque
montage d’un systeme de fichiers. D’une part, elle permet d’inserer la sous-
arborescence de fichiers liee a ce systeme de fichiers dans l’arborescence
globale. D’autre part, elle fait reference a une structure de type
include/linux/fs.h:struct super block (pointeur mnt sb). Ce superblock est
unique pour chaque peripherique bloc monte, et rassemble un pointeur
(champ s op) vers les opérations nécessaires pour gérer les inodes (decrits
plus bas) du système de fichiers (structure include/linux/fs.h:super
operations). Le système de fichiers doit ainsi implanter les opérations de
création, suppression, etc... des inodes.
Le pointeur f dentry de la structure file pointe sur une structure de type
include/linux/dcache.h:struct dentry. Cette structure est utilisee par le noyau
pour construire un arbre en mémoire représentant partiellement
l’arborescence (champs d parent et d subdirs) des fichiers du systeme. Elle
joue le role de cache pour la recherche de fichiers lors de leur ouverture, et
possede donc un nom (champ d iname : c’est par exemple “toto” pour la
dentry correspondant a /home/toto). Elle possede egalement un pointeur
vers l’inode du fichier associe sur disque. Plusieurs dentry peuvent
correspondre au même node, ce qui signifie qu’un même fichier peut être
présent sous différents noms dans differents repertoires : c’est la notion de
hard link.
30
Figure 12 : Architecture de VFS
33
– le logiciel pour exécuter un appel système. Le traitement des interruptions
doit etre le plus court possible parce que durant l’exécution de la routine, les
interruptions sont désactivées, ce qui diminue la reactivite du systeme. On
déporte donc les traitements les plus longs grâce à divers mécanismes
implantes par le noyau Linux : les tasklets et les softirqs.
3.2.5.3 Representation dans l’espace de nommage
Les fichiers speciaux qui permettent d’interagir avec les périphériques sont
traditionnellement regroupes dans le repertoire /dev. Il existe un systeme de
fichiers virtuel charge de ne faire apparaˆıtre dans ce repertoire que les
peripheriques effectivement accessibles (devfs). D’autre part, il est possible
de consulter l’état des pilotes et leur configuration dans le systeme de fichiers
particulier de type procfs traditionnellement monte sur /proc. Ce système
permet également de modifier quelques-uns de ces paramètres, mais le
système de fichiers sysfs en cours de développement generalisera cette
possibilite a tous les pilotes.
34
4 Evaluation
4.1 Comparaison
Windows 10 Linux
Interface (GUI) Contivial Ressemble à windows ou
Pratiquement aucune unix (Gnome,KDE)
soulplesse
Niveau professionnel mais
compliqué
Sans GUI (Terminal)
Menu démarrer Vaste choix de Programme classés en
programmes et differentes categories
d’applications claires
36
4.2 Avantage
Linux a trois avantages majeurs sur ses compétiteurs : sa qualité, sa
modularité, et sa liberté. Sa modularité remonte à Unix et est souvent ce à
quoi on fait référence lorsque l’on parle de « philosophie Unix » :
Write programs that do one thing and do it well.
Write programs to work together.
Write programs to handle text streams,
because that is a universal interface.
(Doug McIlroy)
Chaque logiciel d’un système de type Unix se borne donc à fournir une
fonction bien précise par une interface épurée; on peut alors réaliser des
fonctions plus complexes en assemblant ces programmes élémentaires. En
outre, les interfaces étant simples et publiques, on peut remplacer tout
logiciel par une implémentation alternative sans aucune incidence sur le
système d’exploitation.
La liberté logicielle est l’une des raisons historiques ayant mené à la
création de Linux. La majorité des logiciels des distributions Linux sont de nos
jours distribués sous la licence GPL qui, essentiellement, autorise :
— toute exécution du logiciel;
— toute modification du logiciel;
— la redistribution du logiciel modifié, à condition qu’il :
— soit lui aussi distribué sous licence GPL.
— soit accompagné de son code source.
Ce type de licence protège de manière irrévocable deux libertés
fondamentales des utilisateurs : celles d’exécution et de modification des
logiciels.
Les licences libres permettent aux développeurs de distribuer leurs logiciels
en évitant qu’une entité tierce (par exemple, une entreprise) se les approprie
sans contribuer en retour. C’est pourquoi des milliers de développeurs,
professionnels et amateurs, collaborent chaque jour sur des projets sous
licence GPL, par exemple le noyau Linux. Le code source étant librement
disponible et modifiable, il est constamment inspecté et amélioré, ce qui
produit des logiciels de bien meilleure qualité que les autres modèles de
distribution.
37
5 Conclusion
38
6 Réfèrences
• Maurice J. Bach. The Design of the UNIX Operating System. Prentice Hall, 1986. isbn
: 0-132-01799-7.
• Jacques Beigbeder. Programmation système Unix. Cours de second semestre de
l’École normale supérieure. url : http://www.spi.ens.fr/beig/systeme/.
• The Linux Foundation. Linux Standard Base. LS
• B 4.1 Specification. 2011. url : http://refspecs.linuxfoundation.org/lsb.shtml. [4]
IEEE et The Open Group. POSIX.1-2008. IEEE Std 1003.1-2008 and The Open Group
Technical Standard Base Specifications, Issue 7. 2008. url :
http://pubs.opengroup.org/onlinepubs/9699919799/.
• Gaetan Bisson (gaati.org)
• JULLIEN, Nicolas. Linux: la convergence du monde Unix et du monde PC. Terminal,
1999, vol. 80, no 81, p. 43-70.
• BISSON, Gaetan. Unix/Linux.
• https://fr.wikipedia.org/wiki/Noyau_Linux
• https://www.reseaux-telecoms.net/actualites/lire-linux-influence-un-marche-qui-
le-fait-evoluer-a-son-tour-17161.html
• https://www.tecmint.com/influence-of-debian-in-linux-open-source-community/
• 10 différences fondamentales entre Linux et Windows – Framablog
• Comprendre l'ordinateur - C'est quoi Linux ?
• Tigran Aivazian. Linux Kernel 2.4
Internals.GNU,http://www.mc.man.ac.uk/LDP/LDP/lki/lki.html, 2002.
• Hans-Peter Messmer. The Indispensable PC Hardware Book : Your Hardware
Questions Answered (3rd Edition). Number ISBN 0201403994.Addison-Wesley,
1999.
• Andrew Tanenbaum. Systemes · d’exploitation. Number ISBN 2100045547.
InterEditions /Pentice Hall, 1994.
• Les avantages d'utiliser GNU/Linux (hypertuxte.net)
• linux.networking | inetdoc.net
• Démarrage du système Linux - Linux Administration (goffinet.org)
• www.esi.dz
• http://syst.univ-brest.fr/boukhobza/index.php/systemes-dexploitation-pour-
lembarque
39