INTRODUCTION AUX SYSTEMES D'EXPLOITATION

Introduction

L’utilisation d’un ordinateur sous-entend l'exécution d’un programme par celui-ci, c’est pourquoi toute application nécessite du matériel, en l'occurrence un ordinateur, et du logiciel qui est exécuté par cet ordinateur.

Le logiciel se décompose en deux familles :

Nous allons aborder dans cet exposé, le plus important des programmes système, le système d'exploitation (SE).

Le modèle en couches

L’ensemble du système informatique est organisé en « couches ». Chaque couche du système informatique « masque » les couches inférieures. Ainsi les couches supérieures sont indépendantes des couches inférieures.

Le Système d’Exploitation (Operating System) est la couche logicielle qui sert d’interface entre les applications et le matériel, c’est à dire qu’il prend appui sur les circuits (la couche μ- programmée) pour mettre à la disposition des programmes d’application, les possibilités du matériel.

Le système d’exploitation masque la couche matérielle, une application prévue pour être exécutée sur tel système d’exploitation est ainsi indépendante du matériel.

Le code en langage machine d'un programme donné n'est pas le même selon le processeur qui doit l'exécuter. Le compilateur traduit le langage source en langage exécutable. Le système d'exploitation traduit le langage exécutable en langage machine.

Tâches d'un système d'exploitation

Les tâches d’un système d’exploitation sont les suivantes :

Les différents types de systèmes d'exploitation

AppleRhapsody · Darwin · OS X · iOS
IBMAIX · MVS · OS/2 · OS/360 · OS/390 · z/OS · OS/400
Microsoft WindowsBasé sur DOSMS-DOS · 1 · 2 · 3.x · 95 · 98 · Me
Branche NTNT · 2000 · XP · 2003 Server · Vista · 2008 Server · 7 · 2012 Server · 8
UNIXBSDFreeBSD · NetBSD · OpenBSD · DragonFly BSD · PC-BSD
LinuxArch Linux · Debian · Frugalware · Fedora · Mageia · Mandr4a · Slackware · SUSE · Ubuntu
AutresAIX · HP-UX · IRIX · LynxOS · Minix · QNX · Solaris · System V · Tru64 · UnixWare · ChorusOS
MobilesAndroid · Bada · BlackBerry OS · Firefox OS · OpenMoko · Palm OS · HP webOS · Windows Mobile
EmbarquéCartes à pucesJava Card · Multos
Temps réeleCos · FreeRTOS · Linux embarqué · LynxOS · MenuetOS · OS-9 · PikeOS · QNX · RTX (ARM) · RTEMS · RTLinux · μC/OS-2 · VxWorks · PREEMPT-RT

Le système UNIX

Les origines

Unix est un système d'exploitation multi-tâches et multi-utilisateurs. Les origines d'Unix remontent à la fin des années 1960.

Au départ écrit en assembleur, il fut totalement réécrit en C à partir de 1972. L'essor d'Unix est très fortement lié au langage de programmation C.

À l'heure actuelle, pour simplifier les choses, il y a deux grandes branches d'Unix :

Linux

Au sens strict, Linux n'est pas un Unix puisqu'il ne comprend pas de code provenant de l'original. Linux à proprement parler n'est que le noyau, le cœur du système d'exploitation.

Le système d'exploitation est GNU/Linux, le noyau plus les outils basiques fournis par le projet GNU (pour Gnu's Not Unix : « Gnu N'est pas Unix ») de la Free Software Foundation.

Néanmoins, GNU/Linux a en commun avec Unix une bonne part de son fonctionnement et de son comportement. Pour un utilisateur lambda, il est bien difficile de faire la différence entre un Linux et un Unix.

Définition d'un système de fichiers

Un système de fichiers (file system) est une façon de stocker les informations et de les organiser dans des fichiers sur ce que l'on appelle des mémoires secondaires (disque dur, CD- ROM, clé USB, etc.).

Un système de fichier offre à l'utilisateur une vue abstraite sur ses données et permet de les localiser à partir d'un chemin d'accès.

Les systèmes de fichiers peuvent inclure la compression ou le chiffrement automatique des données, une gestion plus ou moins fine des droits d'accès aux fichiers, et une journalisation des écritures (pour la robustesse, en cas de défaillance du système).

Les principaux systèmes de fichiers sont listés ici :

Systèmes de fichiersJournaliséDescriptionSystème d'exploitation d'origine
FAT32Non File Allocation Table (32 bits)
Taille des fichiers limité à 232=4G0
Windows 95 OSR2
exFAT = FAT64NonFile Allocation Table (64 bits)
Mémoires FLASH
Windows Vista SP1
NTFSOuiNew Technology FileSystemWindows NT
S5NonSystem 5Unix
EXT2NonExtented FileSystem version 2Linux
EXT3OuiExtented FileSystem version 3Linux
EXT4OuiExtented FileSystem version 4Linux

Les systèmes de fichier Linux

Les différentes catégories de fichiers

Sous Linux, tout est fichier. Il existe plusieurs types de fichiers :

Arborescence du système Linux

L'arborescence du système Linux a une structure d'arbre. La racine est désignée par / et les chemins sont décrits avec le séparateur /.

Exemples :

A chaque instant, l'utilisateur accède à un répertoire dans cette arborescence. Il se déplace avec la commande cd (change directory).

Les droits d'accès

Chaque fichier sous UNIX possède des autorisations individuelles. Lors de chaque accès à ce fichier, le système vérifie les autorisations d'accès. Seul l'administrateur du système (root) qui possède un identifiant égal à 0, n'est pas concerné par les restrictions su4antes.

Chaque utilisateur possède un numéro d'identification (uid) et un numéro de « groupe d'utilisateur » (gid). De la même manière, un fichier est affecté à un utilisateur (le propriétaire du fichier) et à un groupe d'utilisateur (le groupe auquel appartient la propriétaire). Les permissions sur les fichiers permettent ainsi de définir des droits de lecture (r), écriture (w) et d'exécution (x).

Ces droits sont définis pour :

De façon générale, ces permissions sont consultables par la commande : ls –l.

On trouve de gauche à droite :

Nature
du fichier
Propriétaire
u
Groupe
g
Les autres
o
-
d
l

r w x

r w x

r w x

Le premier caractère indique la nature du fichier :

Le système de droits est spécifié par les 9 attributs su4ants, correspondant aux 3 catégories du fichier.

Il est possible pour le propriétaire du fichier, de changer les droits d'accès à un de ses fichiers à l'aide de la commande chmod en utilisant le poids décimal ou les options =, + ou -.

BinaireLogiqueDécimal
000( - - - )0
001( - - x )1
010( - w - )2
011( - w x )3
100( r - - )4
101( r - x )5
110( r w - )6
111( r w x )7

Exemples :

chmod go+rw fichier
chmod 766 fichier
chmod g=rw,o=rw fichier

Il est possible pour le propriétaire du fichier, de « céder » un fichier à un autre utilisateur à l'aide de la commande chown (change owner). L'administrateur du système peut « céder » un fichier à un autre groupe d'utilisateurs à l'aide de la commande chgrp (change group).

Les processus

Un processus est un programme en cours d'exécution. Il ne faut pas confondre un processus (aspect dynamique, exécution qui peut être suspendue, puis reprise) avec le code d'un programme exécutable (aspect statique).

A un instant donné, un processus peut se trouver dans d4ers états. Le noyau du système d'exploitation est chargé de réguler l'exécution des processus grâce à un mécanisme nommé Ordonancemment ou Scheduling.

On peut examiner la liste des processus présents sur le système à l'aide de la commande ps et plus particulièrement avec ses options ax. La hiérarchie des processus présents sur le système s'obtient à l'aide de la commande ps axj.

Un processus est identifié par un numéro que l'on nomme PID (Process IDentifier). On peut visualiser la hiérarchie des processus grâce au PPID (Parent PID) qui correspond au PID du père c'est à dire celui qui a créé le processus.

Les commandes

Une commande lit normalement ses données d'entrée dans l’entrée standard et écrit sa sortie dans la sortie standard qui, par défaut, correspondent respect4ement au clavier et à l'écran du terminal.

Les processus accèdent à ces périphériques comme s'ils accédaient à des fichiers normaux, par le biais d'un descripteur de fichier (handle). Voici donc un récapitulatif des périphériques, de leur association par défaut, ainsi que des descripteurs de fichiers.

PériphériqueAssociation par défautDescripteur de fichier
Flux d'entrée standard
Standard input buffer
Clavier0
Flux de sortie standard
Standard output
Écran1
Flux d'erreur standard
Standard output error
Écran2

Ils peuvent être matérialisés de la sorte :

Les variables d'environnement

Les variables d'environnement sont des valeurs associées à des noms explicites, elles constituent l'environnement d'exécution des commandes. On retrouve dans l'environnement standard du shell un certain nombre de variables dont il se sert à l'exécution.

Les plus utilisées sont :

Bien sûr, l'utilisateur peut définir ses propres variables, en respectant la syntaxe su4ante :

nom_variable=valeur /* Sans espace avant ni après le signe égal */

Pour récupérer le contenu d'une variable, l'utilisateur utilise le caractère $ suivi du nom de sa variable.

Exemples :

etudiant@poste:~$ ma_variable=toto
etudiant@poste:~$ echo $ma_variable
etudiant@poste:~$ toto

Les signaux ou événements

Tout processus UNIX peut recevoir des signaux. Chaque signal est répertorié, et à chacun d'entre eux correspond un traitement particulier.

Voici les signaux principaux :

Nom du signalnuméroTraitement
SIGINT2Signal d'interruption, touche <DEL>, <BREAK> ou ^C tapée en cours d'exécution.
SIGQUIT3Signal d'abandon, généralement obtenu par la frappe de ^\.
SIGKILL9Destruction. A utiliser pour se débarrasser d'un processus « coriace ». C'est le seul signal qui ne peut être masqué.
SIGALRM14Signal d'horloge pour positionner une alarme.
SIGTERM15Terminaison du processus par kill.

La commande kill permet à un processus, l'exécutant, d'envoyer un signal à un processus (y compris à lui même).

kill [-<n>] <pid>
avec
<n> : numéro du signal
<pid> : identifiant du processus

Si le numéro du signal n à envoyer est omis, c'est le signal d'interruption numéro 15 qui est envoyé. Toutefois, il faut que le processus émetteur et le processus récepteur appartiennent au même propriétaire.

Exemple :

// la liste des processus
cdupont@poste-10:~$ ps ax
3444 pts/1 Ss
0:00 bash
.............................................
// On détruit le processus bash de pid=3444
cdupont@poste-10:~$ kill -9 3444