Vous êtes sur la page 1sur 113

Fondements des OS

Chapitre I :

Introduction aux systèmes
d'exploitation
Amine DHRAIEF
1) Qu’est ce qu’un système
d’exploitation ?

27/09/20 Fondements des Systèmes d'Exploitation 2


Introduction

Un système d'exploitation (Operating System OS) :
– un programme qui gère le hardware
– Intermédiaire entre l'utilisateur et le hardware


Selon les exigences des équipements des OS différents
– Serveur vs. Ordinateur Portable vs. Supercalculateur
– Smartphone vs. Téléviseur vs. Console de jeux
– Compteur d'électricité/gaz/eau intelligent vs. Voiture vs. Drone


Système complexe = décomposé en unité plus simple à
modéliser et implémenter
27/09/20 Fondements des Systèmes d'Exploitation 3
Introduction

Un « ordinateur »
(computer system) est
constitué essentiellement
de
1)Hardware
2)OS
3)Applicatifs
4)Utilisateurs

27/09/20 Fondements des Systèmes d'Exploitation 4


Introduction

Le hardware
– CPU + Mémoires + périphériques d'E/S
– → Ressources du système


Le applicatifs
– Compilateur/navigateurs/Jeux/…
– → Utilisent les ressources du système pour satisfaire les besoins
des utilisateurs


L'OS 
– Contrôle le hardware et coordonne son utilisation par les différents
applicatifs des utilisateurs.

27/09/20 Fondements des Systèmes d'Exploitation 5


L'OS de point de vue de
l'utilisateur

La plupart des utilisateurs utilisent des équipements
mono-utilisateurs
– Les ressources sont monopolisées par un seul utilisateur


De point vue de l'utilisateur : l'objectif de l'OS est
d'optimiser la facilité de l'utilisation de l’équipement
– Peu d'attention est donnée aux performances du système
– L'OS ne cherche pas à optimiser l'utilisation/partage des ressources
→ des OS optimisés pour un seul utilisateur

27/09/20 Fondements des Systèmes d'Exploitation 6


L'OS de point de vue de
l'utilisateur

Dans l'industrie et la recherche, un utilisateur utilise un
terminal pour accéder à des serveurs/calculateurs...
– Au même moment d'autres utilisateurs accèdent à ces
équipements via d'autres terminaux.
→ Les utilisateurs partagent les ressources disponibles et
peuvent s'échanger des messages.

→ De point vue de l'utilisateur : L'objectif de l'OS est le


partage équitable des ressources (CPU/Mémoire/…)
entre les utilisateurs

27/09/20 Fondements des Systèmes d'Exploitation 7


L'OS de point de vue de
l'utilisateur

Facilité de l'utilisation de l’équipement

De point vue de l'utilisateur

Partage équitable des ressources

27/09/20 Fondements des Systèmes d'Exploitation 8


L'OS de point de vue de système

L'OS est vue comme un dispatcher de ressources
– Temps CPU
– Espace mémoire
– Périphériques d'E/S


Gère les requêtes et les conflits des différent
programmes/utilisateurs qui demandent l'accès à
ces ressources.

27/09/20 Fondements des Systèmes d'Exploitation 9


Est-ce qu'il y a une définition d'un OS ?


Le terme « système d'exploitation » couvre un grand
nombre de fonctionnalités
– Une grande diversité d'architecture d'équipement ayant besoin
d'un OS (supercalculateurs → smartphones → capteurs)


Loi de Moore : nombre de transistors dans un CPU
double tous les 18 mois
→ puissance des équipements en constante
augmentations
→ émergence de nouvelles fonctionnalités/besoins

27/09/20 Fondements des Systèmes d'Exploitation 10


Loi ou Conjoncture de Moore

Gordon Moore

Né le 3 janvier 1929 à San Francisco
est un docteur en chimie et en
physique, un chef d'entreprise
américain.

Il est le cofondateur avec Robert
Noyce et Andrew Grove de la société
Intel en 1968, premier fabricant
mondial de microprocesseurs.

Il est connu pour avoir publié une loi
empirique portant son nom, la loi de
Moore, le 19 avril 1965 dans le
magazine Electronics
– Source : wikipedia

27/09/20 Fondements des Systèmes d'Exploitation 11


Loi ou Conjoncture de Moore


le nombre de
transistors des
microprocesseurs
sur une puce de
silicium double tous
les 18 mois

27/09/20 Fondements des Systèmes d'Exploitation 12


Est-ce qu'il y a une définition d'un OS ?


Non : il n'y a pas une définition consensuelle  
– Selon Prof. Avi Silberschatz (Professor of Computer Science at Yale
University) : « we have no completely adequate definition of an operating
system »


Est-ce qu'on connaît exactement quels sont les composants
fondamentales d'un OS ? Non
– « we have no universally accepted definition of what is part of the
operating system »


Une vision simpliste : « the operating system is the one
program running at all times on the computer »

27/09/20 Fondements des Systèmes d'Exploitation 13


Est-ce qu'il y a une définition d'un OS ?

Avi Silberschatz, Peter Baer Galvin,


and Greg Gagne. Operating
System Essentials. Second Edition.
John Wiley & Sons, Inc., 2012.
27/09/20 Fondements des Systèmes d'Exploitation 14
Quels sont les constituants d'un OS ?

Procès antitrust contre Microsoft (justice
américaine): Windows® offre des fonctionnalités ne
faisant pas partie d'un OS (Internet Explorer) →
concurrence déloyale
– La vente couplée de Windows et d'Internet Explorer a eu pour
effet de laminer la concurrence, et particulièrement Netscape.


Les OS des smartphone inclus en plus du noyau
(kernel) un middelware (iOS/Android)
– Des APIs pour les développeurs

27/09/20 Fondements des Systèmes d'Exploitation 15


Noyau (Kernel) + Programmes Systèmes + Applications = ?

Noyau

OS
Programmes Systèmes

Applications

27/09/20 Fondements des Systèmes d'Exploitation 16


2) Structure matérielle des
ordinateurs

27/09/20 Fondements des Systèmes d'Exploitation 17


Architecture des machines

Un ordinateur à usage générale (general purpose computer) contient
– Un ou plusieurs CPUs
– Des contrôleurs au niveau de chaque équipements (device)
– Un bus relie le tout à la mémoire

27/09/20 Fondements des Systèmes d'Exploitation 18


Architecture des machines
Le CPU échange des
données avec la mémoire

Pour cela il utilise deux


registres

MAR : memory address
register → contient
l'adresse mémoire du
prochain R/W

MBR : memory buffer
register
→ contient les données

27/09/20 Fondements des Systèmes d'Exploitation 19


Architecture des machines

Mise sous tension de la machine  → démarrage d'un bootstrap
program


Le bootstrap program :
– Un programme aussi simple que possible, connu sous le nom de firmware/
micro-code.

– Enregistré dans la Read Only Memory (ROM) ou Electrically Erasable


Read Only Memory

EPROM= ROM programmable qui peut être effacé et réutilisée

– Initialise les équipements (Registre CPU, contenu de la mémoire,...)


→ Charge le noyau de l'OS (kernel) dans la mémoire.

27/09/20 Fondements des Systèmes d'Exploitation 20


Architecture des machines


Une fois que le noyau (kernel) est chargé et
exécuté, il peut fournir ses services au
système et aux utilisateurs.

– Les systèmes basés sur UNIX lancent après le


démarrage le processus « init ».

Init lance à son tour d'autre processus.

– À ce stade, l'OS est complètement démarré, et il


attends l'occurrence d'un quelconque événement.

27/09/20 Fondements des Systèmes d'Exploitation 21


Architecture des machines


L’occurrence d'un événement est signalé
par une interruption logicielle ou matérielle

– Le hardware peut déclencher une interruption à


tous moments en envoyant un signal au CPU.

– Un programme peut déclencher une interruption en


exécutant un appel système.

27/09/20 Fondements des Systèmes d'Exploitation 22


Architecture des machines
Structure de stockage

Le CPU charge les instructions uniquement de la mémoire principale,
donc tous les programmes doivent être enregistrés en mémoire


Les ordinateurs à usage générale (General-Purpose Computers)
exécutent leurs programmes à partir d’une mémoire réinscriptible (re-
writable) appelée RAM (Random-Access Memory) → mémoire
principale

● Le CPU interagit avec la mémoire à travers des séquences de load et


store.
– L'instruction load copie une mot mémoire de la mémoire principale vers un
registre interne du CPU
– L'instruction store copie un contenu d'un registre CPU vers la mémoire principale

27/09/20 Fondements des Systèmes d'Exploitation 23


Architecture des machines
Structure de stockage

Idéalement, nous voudrions que les programmes et leurs
données soient d'une manière permanente en mémoire →
Ceci est évidement impossible car :
– La taille de la mémoire principal est insuffisante pour accueillir tous les
programmes et leurs données.
– La mémoire principal est volatile et les données sont perdus lorsqu'on
éteint la machine.

→ Les machines sont équipées de mémoires secondaires qui


étendent les capacités de la mémoire principal
– Stockage permanent
– Grande capacité

27/09/20 Fondements des Systèmes d'Exploitation 24


Architecture des machines
Hiérarchie de mémoire

27/09/20 Fondements des Systèmes d'Exploitation 25


Architecture des machines
Hiérarchie de mémoire

Mémoire principale (RAM)
– Programmes doivent être « chargés » dans la RAM
pour être exécutées
– Les instructions et les données sont copiées depuis
la RAM dans des registres


Or :
– La RAM est volatile
– De taille et vitesse moyennes
27/09/20 Fondements des Systèmes d'Exploitation 26
Architecture des machines
Hiérarchie de mémoire

D'autres mémoires volatiles ont des tailles réduites,
sont rapides et ont un coût par bit élevé
– Registres
– Caches CPU


Mémoires non-volatiles (permanentes) ont des tailles
importantes, lentes et ont un coût réduit par bit
– Disque magnétique
– Disque optique

27/09/20 Fondements des Systèmes d'Exploitation 27


Architecture des machines
les E/S

Une large portion du code des OS est dédiée à la
gestion des E/S à cause de la variété de types d'E/S.


Un ordinateur à usage générale est formé
– de CPU(s)
– et de contrôleurs de périphériques connectés à travers un
bus commun.

Un contrôleur est en charge d'un type spécifique de périphérique.

Selon le type de contrôleur, plusieurs équipements peuvent y être
attaché.
– Par exemple : 7 périphériques peuvent être attaché simultanément au
contrôleur d’équipement small computer-systems interface ( SCSI )

27/09/20 Fondements des Systèmes d'Exploitation 28


Architecture des machines
les E/S

Le contrôleur de périphérique maintien un buffer
(mémoire) local pour y stocker temporairement
les données émises/reçues par périphérique.


Un OS utilise un pilote de périphérique (device
driver) pour chaque contrôleur de périphérique.


Le pilote est l’intermédiaire entre le contrôleur de
périphérique et l'OS.

27/09/20 Fondements des Systèmes d'Exploitation 29


3) Les concepts de base des
systèmes d'exploitation

27/09/20 Fondements des Systèmes d'Exploitation 30


Finalité des OS

Un OS fournit l'environnement nécessaire pour
que les programme puissent s’exécuter.


Pour cela, l'OS :
– Alloue les ressources matérielles et logicielles pour
satisfaire les besoins des programmes.
– Présente aux programme une interface mieux
adaptée à leurs besoins que celle fournie directement
par le matériel.

27/09/20 Fondements des Systèmes d'Exploitation 31


Le système d'exploitation en tant que
machine virtuelle

Peu de programmes
seraient développés si trouver un moyen de
chaque programmeur devait libérer les programmeurs
connaître le
L’ABSTRACTION
de la complexité du
fonctionnement du hardware
hardware

27/09/20 Fondements des Systèmes d'Exploitation 32


Le système d'exploitation en tant que
machine virtuelle
Hardware

API

Applications

1- Enrober le matériel avec une couche de logiciel qui gère


l'ensemble du système.

2- Présenter au programmeur une API (Application


Programming interface, interface de programmation
d'application)

27/09/20 Fondements des Systèmes d'Exploitation 33


Le système d'exploitation en tant que
machine virtuelle

Un disque est composé de cylindres,
qui contiennent chacun autant de pistes
qu'il y a de têtes placées verticalement.

Les pistes se divisent en secteurs,
le nombre de secteurs étant compris
entre 8 et 32.

Tous les secteurs contiennent le même
nombre d'octets.

27/09/20 Fondements des Systèmes d'Exploitation 34


Le système d'exploitation en tant que
machine virtuelle
• Prise en charge par Linux:

– /kernels/linux-2.6/drivers/block/
hd.c
/*
* This struct defines the
HD's and their types.
*/ Les champs représentent les
struct hd_i_struct { caractéristiques géométriques du lecteur :
unsigned int head, i. le nombre de têtes (autrement dit de
sect, cyl, wpcom, lzone, ctl; pistes),
int unit; ii. le nombre de secteurs par piste,
int recalibrate; iii. le nombre de cylindres
int special_op;
};

27/09/20 Fondements des Systèmes d'Exploitation 35


Le système d'exploitation en tant que
machine virtuelle

La plupart des programmeurs ne veulent
pas se soucier de la programmation des
disques durs. Ils veulent une abstraction
simple de haut niveau :
– considérer par exemple que le disque contient des
fichiers nommés ;
– chaque fichier peut être ouvert en lecture ou en
écriture ;
– il sera lu ou écrit, et finalement fermé.

27/09/20 Fondements des Systèmes d'Exploitation 36


Le système d'exploitation en tant que
machine virtuelle


La partie machine virtuelle des systèmes
d'exploitation
– soustrait le matériel au regard du programmeur
– offre une vue simple et agréable de fichiers
nommés qui peuvent être lus et écrits

27/09/20 Fondements des Systèmes d'Exploitation 37


Le système d'exploitation en tant que
machine virtuelle

Machine virtuelle

Cacher les limitations


Cacher les détails de mise
physiques (taille
en œuvre du matériel
mémoire)

27/09/20 Fondements des Systèmes d'Exploitation 38


Le système d'exploitation en tant que
gestionnaire de ressources

Les ordinateurs modernes se
composent de processeurs, de
mémoires, d'horloges, de disques, de
moniteurs, d'interfaces réseau,
d'imprimantes, et d'autres
périphériques qui peuvent être
utilisés par plusieurs utilisateurs en
même temps.


Le travail du système d'exploitation
consiste à ordonner et contrôler
l'allocation des processeurs, des
mémoires et des périphériques entre
les différents programmes qui y font
appel.

27/09/20 Fondements des Systèmes d'Exploitation 39


Le système d'exploitation en tant que
gestionnaire de ressources

Imaginez ce qui se produirait si trois programmes qui
s'exécutent sur un ordinateur essayaient simultanément
d'imprimer leurs résultats sur la même imprimante.
– Les premières lignes imprimées pourraient provenir du programme 1,
les suivantes du programme 2, puis du programme 3 et ainsi de suite.
→ Il en résulterait le désordre le plus total.


Le système d'exploitation peut éviter ce chaos potentiel en
transférant les résultats à imprimer dans un fichier tampon
sur le disque.
→ Lorsqu'une impression se termine, le système d'exploitation peut
alors imprimer un des fichiers se trouvant dans le tampon.

27/09/20 Fondements des Systèmes d'Exploitation 40


Systèmes multi-tâches


La plupart des systèmes
d'exploitation modernes permettent
l'exécution de plusieurs tâches à la
fois
– un ordinateur peut, pendant qu'il exécute
le programme d'un utilisateur, lire les
données d'un disque ou afficher des
résultats sur un terminal ou une
imprimante.


On parle de système d'exploitation
multi-tâches ou multi-programmé
dans ce cas.
27/09/20 Fondements des Systèmes d'Exploitation 41
Systèmes multi-tâches: les processus


La notion fondamentale des systèmes d'exploitation
multi-tâches est celle de processus.


Un processus est une instance de programme en
train de s'exécuter.
– Un processus est représenté par un programme (le code),
– mais également par ses données et par les paramètres
indiquant où il en est, lui permettant ainsi de continuer s'il est
interrompu (pile d'exécution, compteur ordinal...).
→ On parle de l'environnement du programme.

27/09/20 Fondements des Systèmes d'Exploitation 42


Systèmes multi-tâches: le temps partagé


La plupart des systèmes d'exploitation multi-tâches
sont implémentés sur un ordinateur ayant un seul
micro-processeur.


Celui-ci, à un instant donné, n'exécute réellement
qu'un seul processus, mais le système peut le faire
passer d'un programme à un autre


Ceci donne aux utilisateurs l'impression que tous les
programmes sont exécutés en même temps.

27/09/20 Fondements des Systèmes d'Exploitation 43


Systèmes multi-utilisateurs

Comme pour les systèmes multi-tâches, la
multi-utilisation est émulée en attribuant des
laps de temps à chaque utilisateur.


Naturellement, le fait de basculer d'une
application à l'autre ralentit chacune d'entre
elles et affecte le temps de réponse perçu
par les utilisateurs.

27/09/20 Fondements des Systèmes d'Exploitation 44


Structure externe des OS

Le système d'exploitation comporte un certain nombre de routines
(sous-programmes). Les plus importantes constituent le noyau (kernel).


Il gère les ressources de l’ordinateur et permet aux différents
composants, matériels et logiciels, de communiquer entre eux.


Le noyau d'un système d'exploitation se compose de quatre parties
principales :
1.le gestionnaire de tâches (ou des processus)/ordonnanceur,
2.le gestionnaire de mémoire,
3.le gestionnaire de fichiers
4.et le gestionnaire de périphériques d'entrée-sortie.

27/09/20 Fondements des Systèmes d'Exploitation 45


Le gestionnaire de tâches/ Ordonnanceur


L’ordonnanceur d’un système
d’exploitation n’a de sens qu’en
système multitâche.


Il gère l’ordre dans lequel les
instructions de différentes tâches
sont exécutées


Il est responsable de la sauvegarde
et de la restauration du contexte
des tâches (ce contexte est
constitué des registres
processeurs), appelée également
commutation de contexte.

27/09/20 Fondements des Systèmes d'Exploitation 46


Ordonnanceur
Commutation de contexte

Une commutation de contexte (context switch) consiste à sauvegarder
l'état d'un processus pour restaurer à la place celui d'un autre dans le
cadre de l'ordonnancement d'un système d'exploitation multitâche.


La commutation de contexte invoque au moins trois étapes. Par
exemple, en présumant que l'on veut commuter l'utilisation du
processeur par le processus P1 vers le processus P2 :
– Sauvegarder le contexte du processus P1 quelque part en mémoire (usuellement
sur la pile de P1).
– Retrouver le contexte de P2 en mémoire (usuellement sur la pile de P2).
– Restaurer le contexte de P2 dans le processeur, la dernière étape de la restauration
consistant à reprendre l'exécution de P2 à son point de dernière exécution.

27/09/20 Fondements des Systèmes d'Exploitation 47


Ordonnanceur

La plupart des ordonnanceurs modernes permettent
d’indiquer sur quel processeur sont exécutées les
tâches.
– Certains permettent également de migrer des tâches sur d’autres
machines d’une grappe de calcul.


L’algorithme d’ordonnancement détermine quelle tâche
doit s’exécuter en priorité et sur quel processeur.
– Cet algorithme doit permettre d’utiliser efficacement les
ressources de la machine

27/09/20 Fondements des Systèmes d'Exploitation 48


Ordonnanceur

L’ordonnancement peut être de type coopératif 
– Les tâches doivent être écrites de manière à coopérer les unes avec les
autres et ainsi accepter leur suspension pour l’exécution d’une autre tâche.


L’ordonnancement peut être également de type préemptif .
– L’ordonnanceur a la responsabilité de l’interruption des tâches et du choix
de la prochaine à exécuter.


Certains noyaux sont eux-mêmes préemptifs 
– l’ordonnanceur peut interrompre le noyau lui-même pour faire place à une
activité (typiquement, toujours dans le noyau) de priorité plus élevée.

27/09/20 Fondements des Systèmes d'Exploitation 49


Gestionnaire de mémoire

Le gestionnaire de mémoire est le sous-
ensemble du système d’exploitation qui
permet de gérer la mémoire de l’ordinateur.


Sa tâche la plus basique est d’allouer de la
mémoire à des processus lorsqu’ils en ont
besoin.

27/09/20 Fondements des Systèmes d'Exploitation 50


Gestionnaire de mémoire

Le gestionnaire de mémoire
– masque la localisation physique de la mémoire (en mémoire vive
ou sur disque dur, dans l’espace de mémoire paginée)
– présente au programme une mémoire globale uniforme dite mémoire
virtuelle.


Ainsi, tout processus croit manipuler une mémoire
«logique » qui a les propriétés suivantes :
– La mémoire peut être étendue jusqu’aux capacités théoriques de la
machine ;
– La mémoire est privée (protégée), un processus ne peut pas
accéder à la mémoire d’un autre processus (sauf allocations et
autorisations spécifiques).

27/09/20 Fondements des Systèmes d'Exploitation 51


Gestionnaire de fichiers

Une des tâches fondamentales du système
d’exploitation est de masquer les
spécificités des disques et des autres
périphériques d’entrée-sortie et d’offrir au
programmeur un modèle agréable et facile
d’emploi.

→ Ceci se fait à travers la notion de fichier.

27/09/20 Fondements des Systèmes d'Exploitation 52


Le gestionnaire de périphériques

Le contrôle des périphériques d’entrée-sortie
(E/S) de l’ordinateur est l’une des fonctions
primordiales d’un système d’exploitation.
– Ce dernier doit envoyer les commandes aux
périphériques, intercepter les interruptions, et traiter
les erreurs.
– Il doit aussi fournir une interface simple et facile
d’emploi entre les périphériques et le reste du
système qui doit être, dans la mesure du possible, la
même pour tous les périphériques, c’est-à-dire
indépendante du périphérique utilisé.
27/09/20 Fondements des Systèmes d'Exploitation 53
Le gestionnaire de périphériques
De nombreux systèmes d’exploitation
offrent un niveau d’abstraction qui permet
aux utilisateurs de réaliser des entrées-
sorties sans entrer dans le détail du
matériel.
– Ce niveau d’abstraction fait apparaître chaque
périphérique comme un fichier spécial, qui
permettent de traiter les périphériques d’entrée-
sortie comme des fichiers.

27/09/20 Fondements des Systèmes d'Exploitation 54


L’interpréteur de commandes

Le système d’exploitation proprement dit est le code qui
permet de définir les appels système.

– Les programmes système tels que les éditeurs de texte, les


compilateurs, les assembleurs, les éditeurs de liens et les
interpréteurs de commandes ne font pas partie du système
d’exploitation.

– Sous sa forme la plus rudimentaire, l’interpréteur de


commandes exécute une boucle infinie qui affiche une invite
(montrant par là que l’on attend quelque chose), lit le nom du
programme saisi par l’utilisateur à ce moment-là et l’exécute.

27/09/20 Fondements des Systèmes d'Exploitation 55


Les Appels Système

Les appels système sont des fonctions :
– appelées depuis un programme de l’espace utilisateur ;
– dont l’exécution (le traitement) est effectuée dans l’espace noyau ;
– dont le retour est effectué dans le programme appelant dans l’espace
utilisateur.


En plus d’un changement de mode d’exécution, l’appel
système suppose au moins deux commutations de
contextes :
– Contexte du programme appelant ;
– Contexte du noyau ;

27/09/20 Fondements des Systèmes d'Exploitation 56


4) Étude de cas : LINUX
4.1) Présentation de LINUX

27/09/20 Fondements des Systèmes d'Exploitation 57


Historique

Unix est né, en 1969, dans
les Bell Laboratories (AT&T)

– Ken Thompson et Dennis


Ritchie.

27/09/20 Fondements des Systèmes d'Exploitation 58


Historique

En 1974, la version 4 d’Unix est « donnée » à
l’université de Berkeley, Californie, qui commence
alors son propre développement du système. C’est
le début d’une divergence entre les deux versions
d’Unix : AT&T et BSD (Berkeley Software
Distribution).


De 1977 à 1979, Ken Thompson et Dennis Ritchie
réécrivent Unix pour le rendre réellement portable. Et
en 1980 les premières licences de distribution d’Unix
System V d’AT&T sont délivrées aux constructeurs.
27/09/20 Fondements des Systèmes d'Exploitation 59
Présentation d'UNIX

Unix est un système d’exploitation, constitué
– du noyau Unix,
– d’un interpréteur de commandes
– et d’un grand nombre d’utilitaires.


Le noyau assure la gestion des ressources physiques
(processeur, mémoires, périphériques) et logicielles
(processus, fichiers...).
– Le noyau est constitué d’un ensemble de procédures et de
fonctions écrites pour l’essentiel en langage C


Unix est un système multi–utilisateur, temps partagé,
multi-tâche
27/09/20 Fondements des Systèmes d'Exploitation 60
Présentation de LINUX


Linux, système Unix libre sur
plateforme PC, était au départ un
projet de loisirs de Linus
Torvalds, étudiant finlandais.
– Le 5 octobre 1991, Linus Torvalds
annonça la première version
officielle de Linux


Linux fut inspiré de Minix, un petit
système Unix développé par
Andrew Tanenbaum
27/09/20 Fondements des Systèmes d'Exploitation 61
Présentation de LINUX
Arborescence des répertoires

27/09/20 Fondements des Systèmes d'Exploitation 62


Présentation de LINUX
Arborescence des répertoires

/ :
– Racine du système, hiérarchie primaire


/bin : binaires, utilitaires binaires ,binaries,
binary utilities (binutils)
– Exécutables des commandes essentielles
disponibles pour tous les utilisateurs (ex: cd, cat,
ls…)

27/09/20 Fondements des Systèmes d'Exploitation 63


Présentation de LINUX
Arborescence des répertoires

/boot initialisation (bootstrap)
– Fichiers statiques du chargeur d’amorçage (noyaux, images ramdisk,
fichiers de configuration du chargeur d'amorçage…)


/dev périphérique (device)
– Fichiers spéciaux des périphériques


/etc configuration éditable en mode texte (editing text
config )
– Fichiers de configuration au format textuel de plusieurs programmes
et services du système

27/09/20 Fondements des Systèmes d'Exploitation 64


Présentation de LINUX
Arborescence des répertoires

/home maison (home directory)
– Répertoires personnels des utilisateurs


/lib bibliothèques (librairies)
– Bibliothèques partagées essentielles et modules du noyau


/media
– Contient les points de montages pour les médias amovibles

27/09/20 Fondements des Systèmes d'Exploitation 65


Présentation de LINUX
La désignation des fichiers

Un fichier est repéré par son nom et sa
position dans l’arborescence : son chemin
d’accès (pathname).


La syntaxe de ce chemin d’accès est très
précise et peut être décrite des deux manières
suivantes :
– Le chemin d’accès absolu
– Le chemin d’accès relatif

27/09/20 Fondements des Systèmes d'Exploitation 66


Présentation de LINUX
La désignation des fichiers

Le chemin d’accès absolu
– Il permet d’accéder à un fichier quelconque dans l’arborescence
du système de fichiers.
– Il est composé d’une suite de noms de répertoires séparés par le
caractère /.
– Il commence toujours par le caractère / qui désigne le répertoire
racine et se termine par le nom du fichier que l’on veut atteindre.


Exemples
– /home/aminedhraief/Videos/mavideo.mp4
– /home/aminedhraief/Musiques/mamusique.mp3

27/09/20 Fondements des Systèmes d'Exploitation 67


Présentation de LINUX
La désignation des fichiers

Le chemin d’accès relatif
– La désignation d’un fichier par son chemin
d’accès absolu se révèle rapidement lourde vu
le nombre de répertoires intermédiaires à
désigner.
– Tout utilisateur peut se positionner sur
n’importe quel répertoire de l’arborescence.
– Ce répertoire devient courant (répertoire de
travail ou current working directory).

27/09/20 Fondements des Systèmes d'Exploitation 68


Présentation de LINUX
La désignation des fichiers

Le chemin d’accès relatif
– Dès l’entrée en session de l’utilisateur, le système le place dans un
répertoire de travail initial (répertoire d’accueil ou home directory).
– Ce répertoire a été créé au moment de l’établissement du compte
de l’utilisateur.
– Le système associe alors en permanence, à tout processus ou
tâche, le chemin d’accès complet du répertoire de travail courant
de l’utilisateur.
– Ainsi, l’usager peut désigner un fichier en ne donnant que son
chemin d’accès relatif au répertoire de travail courant.
– A partir de ce répertoire courant, l’utilisateur construit son propre
sous–arbre de répertoires et de fichiers.

27/09/20 Fondements des Systèmes d'Exploitation 69


Présentation de LINUX
La désignation des fichiers

Le chemin d’accès relatif – Exemples :
– chemin absolu  → /home/amine/develop/code.c
– répertoire courant → /home/amine/code.c
– chemin relatif → develop/code.c

27/09/20 Fondements des Systèmes d'Exploitation 70


Présentation de LINUX
Le terminale ou L’interpréteur de commandes

L’interpréteur de
commandes est l’interface
entre l’utilisateur et le
système d’exploitation.


Il a pour rôle de traduire
les commandes saisies
par l’utilisateur afin que le
système puisse les
exécuter.

27/09/20 Fondements des Systèmes d'Exploitation 71


HowTo: Installer Ubuntu

1) Préparation de votre ordinateur pour accueillir Linux


1) Partitionnement de votre disque dur existant pour une configuration en dual boot

2) Télécharger le fichier iso d’ubuntu https://ubuntu.com/download/desktop

3) Création d’une clé usb amorçable (bootable)


1) Installer LinuxLive USB Creator http://www.linuxliveusb.com/fr
2) Générer des clés USB amorçables avec une installation de Linux → il suffit de spécifier la clé USB,
d’indiquer où se trouve le fichier ISO (la source), puis de lancer la création de la clé.
3) Placez la clef dans le connecteur USB de votre ordinateur et démarrez le système en veillant démarrer sur
le lecteur de disque ou sur la clé USB.

Source sur le net :



https://lecrabeinfo.net/installer-ubuntu-20-04-lts-dual-boot-windows-10.html

https://doc.ubuntu-fr.org/tutoriel/installer_ubuntu_avec_le_live_cd

27/09/20 Fondements des Systèmes d'Exploitation 72


4.2) Connexion d’un utilisateur

27/09/20 Fondements des Systèmes d'Exploitation 73


Connexion d’un utilisateur
Connexion en mode texte

27/09/20 Fondements des Systèmes d'Exploitation 74


Connexion d’un utilisateur
Connexion en mode graphique

27/09/20 Fondements des Systèmes d'Exploitation 75


Connexion d’un utilisateur
Mot de passe

Un utilisateur peut à tout moment changer son
mot de passe, ou s’en attribuer un par la
commande passwd.
– Lors du changement, il faut fournir l’ancien mot de
passe

27/09/20 Fondements des Systèmes d'Exploitation 76


Connexion d’un utilisateur
Mot de passe
« La sécurité d'un mot de passe repose sur la force de
l'algorithme de chiffrement et sur la taille de l'espace de
clés utilisé. La méthode de chiffrement des systèmes
UNIX est basée sur l'algorithme NBS DES. Des
méthodes plus récentes sont maintenant
recommandées (voir ENCRYPT_METHOD). La taille
de l'espace de clés dépend de l'aléa du mot de passe
utilisé. »

Extrait $man passwd

27/09/20 Fondements des Systèmes d'Exploitation 77


Fichier /etc/passwd

Lors des diverses connexions de l’utilisateur, la
lecture du mot de passe se fera sans écho.


Lorsque le nom et le mot de passe sont
corrects, login récupère dans le fichier /etc/
passwd toutes les informations utiles pour cet
utilisateur.

27/09/20 Fondements des Systèmes d'Exploitation 78


Fichier /etc/passwd

27/09/20 Fondements des Systèmes d'Exploitation 79


Fichier /etc/passwd
● root:x:0:0:root:/root:/bin/bash


Ce fichier est accessible en lecture à tous les utilisateurs et
contient, pour chaque utilisateur, les champs suivants :
– nom de connexion (login) de l’utilisateur,
– un caractère x (indique qu’un mot de passe existe pour le compte)
– le numéro de l’utilisateur (UID = user identifier),
– le numéro de groupe (GID = group identifier),
– Commentaires : informations complémentaire sur l'utilisateur (num
de téléphone, adresse courriel,...)
– le répertoire d’accueil,
– programme à lancer
27/09/20 Fondements des Systèmes d'Exploitation 80
Fichier /etc/shadow
● Le fichier /etc/shadow contient les mots de
passe et l'information sur l'expiration des comptes

27/09/20 Fondements des Systèmes d'Exploitation 81


Fichier /etc/shadow
amine :$6$VnYAAYRG$pwj1PIa25WRqaoqQcUvr68J/
JjnnqG.IL3RiOCc582kcP7Ii54nL.luoZGTt6yuetLzmIoYR.dZvXqWxX/
gb00:16686:0:99999:7:::

– Nom d'utilisateur, jusqu'à 8 caractères. Case-sensitive, habituellement uniquement des minuscules.


Exactement la même entrée que dans le fichier /etc/passwd.
– Mot de passe, 13 caractères codés. Une entrée nulle (eg. ::) indique qu'un mot de passe n'est pas
demandé pour entrer dans le système (une mauvaise idée en général), et une entrée ``*'' (eg. :*:) indique
que le compte a été désactivé.
– Le nombre de jours (depuis le 1er Janvier 1970) depuis le dernier changement du mot de passe.
– Le nombre de jours avant que le mot de passe ne puisse être changé (un 0 indique qu'il peut être changé
à n'importe quel moment).
– Le nombre de jours après lesquels le mot de passe doit être changé (99999 indique que l'utilisateur peut
garder son mot de passe inchangé pendant beaucoup, beaucoup d'années)
– Le nombre de jours pour avertir l'utilisateur qu'un mot de passe ne va plus être valable (7 pour une
semaine entière)
– Le nombre de jours avant de désactiver le compte après expiration du mot de passe
– Le nombre de jours depuis le 1er Janvier 1970 pendant lesquels un compte a été désactivé
– Un champ réservé pour une utilisation future possible

27/09/20 Fondements des Systèmes d'Exploitation 82


Algorithme de hashage utilisé
dans /etc/shadow

Format du mot de passe $ID$Salage$Hash
– ID: l’algorithme utilisé :

$1$ is MD5

$2a$ is Blowfish

$2y$ is Blowfish

$5$ is SHA-256

$6$ is SHA-512
– Salage : dynamique/statique
– Hash : empreinte du mot de passe

27/09/20 Fondements des Systèmes d'Exploitation 83


Principe de hashage

27/09/20 Fondements des Systèmes d'Exploitation 84


4.3) Les shells 

27/09/20 Fondements des Systèmes d'Exploitation 85


Les shells


Un script est fichier contenant une série
d’ordres que l’on va soumettre à un
programme externe pour qu’il les exécute.
– Ce programme est appelé interpréteur de
commandes.
Script Interpréteur de commande Résultat

Écris
Lis
Écris
Lis
…..

27/09/20 Fondements des Systèmes d'Exploitation 86


Les shells
langage interprété

Il existe de nombreux interpréteurs de
commandes.
– Naturellement, le shell en fait partie, tout comme
certains outils tels que Sed et Awk, ainsi que d’autres
langages tels que Perl, Python, Tcl/Tk, Ruby, etc.


Ces langages sont dits interprétés, par
opposition aux langages compilés (comme C,
C++, Fortran, Ada, etc.).

27/09/20 Fondements des Systèmes d'Exploitation 87


Les langages compilés

Un code source écrit en langage compilé doit être
traduit en instructions de code machine
compréhensibles pour le processeur.
– Cette étape de compilation nécessite plusieurs outils et peut
parfois s’avérer longue.
Code source Compilation Fichier binaire Résultat

Écris
Lis
Écris
Lis
…..

27/09/20 Fondements des Systèmes d'Exploitation 88


Les shells
langages interprétés vs compilés

Le code compilé étant Un script doit être


directement compris par interprété
le processeur du dynamiquement, ce qui
système, son ralentit sensiblement
exécution est très l’exécution
rapide

27/09/20 Fondements des Systèmes d'Exploitation 89


Les shells
langages interprétés vs compilés

Le fichier exécutable issu À l’inverse, un fichier script est


d’une compilation est souvent généralement assez réduit et
volumineux et n’est utilisable directement portable sur
que sur un seul type de d’autres processeurs ou
processeur et un seul d’autres systèmes
système d’exploitation. d’exploitation (pour peu que
l’interpréteur de commandes
correspondant soit disponible)

27/09/20 Fondements des Systèmes d'Exploitation 90


Les shells
langages interprétés vs compilés

Un fichier compilé est Inversement, un fichier script


incompréhensible par un est directement lisible et
lecteur humain. Il n’est pas modifiable, et peut contenir
« possible » d’en retrouver le sa propre documentation
code source. Cela peut sous forme de
garantir le secret commentaires, ce qui est
commercial d’un logiciel intéressant dans le cadre des
logiciels libres.

27/09/20 Fondements des Systèmes d'Exploitation 91


Les shells

Le shell fait partie intégrante d’Unix depuis les
débuts de celui-ci en 1971.


Le shell est avant tout un interpréteur de
commandes, chargé de lire les ordres que
l’utilisateur saisit au clavier, de les analyser, et
d’exécuter les commandes correspondantes.

27/09/20 Fondements des Systèmes d'Exploitation 92


Les shells
Bourne Shell

Le premier shell fut écrit par Steve Bourne et le
fichier exécutable correspondant était
traditionnellement /bin/sh .

– Il permettait d’écrire de véritables scripts complets, avec


des structures de contrôle performantes.

– Toutefois, son utilisation quotidienne de manière


interactive péchait quelque peu par manque d’ergonomie.

27/09/20 Fondements des Systèmes d'Exploitation 93


Les shells
C Shell

Un nouveau shell – dit shell C – fut donc mis au point par William
Joy à l’université de Berkeley. Cet outil fut officiellement introduit
dans certaines distributions Unix en 1978.

● Le fichier exécutable était /bin/csh .


Le shell C fut doté d’un langage de programmation ressemblant
quelque peu au langage C, mais dont l’implémentation était
fortement boguée.
– En dépit des corrections qui y furent apportées, le comportement des
scripts pour shell C n’était pas satisfaisant.

27/09/20 Fondements des Systèmes d'Exploitation 94


Les shells
Korn Shell


En 1983, David G. Korn, travaillant aux
laboratoires AT&T Bell, développa un nouveau
shell, nommé Korn Shell, dont le but était de
réunir à la fois les qualités du shell C et du shell
Bourne.

● Le fichier exécutable était /bin/ksh .

27/09/20 Fondements des Systèmes d'Exploitation 95


Les shells
Bash : Bourne Again Shell

Le Bash est l’interpréteur de commandes le plus
répandu dans le monde Linux.


Le Bash est compatible avec le Bourne-shell. Il inclut
des caractéristiques du Korn-shell et du C-shell.


Il offre des améliorations aussi bien en interactif
qu’en programmation.

27/09/20 Fondements des Systèmes d'Exploitation 96


4.4) Premier script shell

27/09/20 Fondements des Systèmes d'Exploitation 97


Éditeurs de texte : vi

« vi est un éditeur de texte en mode texte plein
écran écrit par Bill Joy en 1976 sur une des
premières versions de la distribution Unix
BSD. » source : wikipedia

Vim (VI iMproved, version améliorée de Vi)


Pour les nouveaux utilisateurs, Vim intègre un
tutoriel. Il peut être lancé en tapant : vimtutor

27/09/20 Fondements des Systèmes d'Exploitation 98


Éditeurs de texte : vi

vim possède trois modes : interactif, insertion
et commande.

27/09/20 Fondements des Systèmes d'Exploitation 99


Éditeurs de texte : vi

Vous pouvez aussi ouvrir un fichier en ajoutant son
nom en paramètre : $vim nomdufichier

i : insérer du texte
– Appuyez sur « i ». Vous basculez alors en mode insertion ; à
présent, il vous est possible de taper du texte

:wq : enregistrer puis quitter
– Vous enregistrez et quittez immédiatement Vim lorsque vous
tapez « :wq ».

Plus de détail sur :
https://openclassrooms.com/fr/courses/43538-reprenez-le-
controle-a-laide-de-linux/42693-vim-lediteur-de-texte-du-pr
ogrammeur

27/09/20 Fondements des Systèmes d'Exploitation 100
Exécution d’un script
Invocation de l’interpréteur

27/09/20 Fondements des Systèmes d'Exploitation 101


Exécution d’un script
Invocation de l’interpréteur

Remarquez que le suffixe .sh ajouté à la fin du nom du
script n’a aucune importance ; il ne s’agit que d’une
information pour l’utilisateur.

Le système Unix ne tient aucun compte des suffixes
éventuels des noms de fichiers.

Par exemple, renommons-le et réessayons :

27/09/20 Fondements des Systèmes d'Exploitation 102


Exécution d’un script
Appel direct

● Le shell ne reconnaît pas essai comme une


commande

27/09/20 Fondements des Systèmes d'Exploitation 103


Exécution d’un script
Appel direct

Lorsque nous invoquons une commande Unix
(par exemple, echo ), le système devra trouver
un fichier exécutable de ce nom ( /bin/echo en
l’occurrence).


Mais il est impossible de parcourir tous les
répertoires de tous les disques pour rechercher
ce fichier, le temps de réponse serait
horriblement long !

27/09/20 Fondements des Systèmes d'Exploitation 104


Exécution d’un script
Appel direct

Pour améliorer les performances, le système Unix ne
recherche les fichiers implémentant les commandes
que dans un nombre restreint de répertoires.


Ceux-ci sont énumérés dans la variable
d’environnement PATH , que nous pouvons consulter.

27/09/20 Fondements des Systèmes d'Exploitation 105


Exécution d’un script
Appel direct


Le script ne s’exécute pas plus qu’avant, mais le
message d’erreur a changé.

Ceci est dû aux permissions accordées pour ce fichier,
et que l’on peut observer avec l’option -l de ls

La première colonne décrit le type de fichier et les
permissions concernant sa manipulation

27/09/20 Fondements des Systèmes d'Exploitation 106


Exécution d’un script
Appel direct


Le premier tiret - correspond à un fichier normal ( d pour un répertoire, l pour un
lien symbolique, etc.).


Les trois lettres suivantes indiquent que le propriétaire amine du fichier a les droits
de lecture ( r ) et d’écriture ( w ) sur son fichier, mais l’absence de lettre x ,
remplacée ici par un tiret, signifie que le propriétaire ne peut pas exécuter ce
fichier. C’est justement notre problème.


Les trois lettres rw- suivantes décrivent les droits fournis aux autres utilisateurs
appartenant au même groupe que le fichier ( users ).


Enfin les trois dernières lettres indiquent les permissions accordées à tous les
autres utilisateurs du système ( r-- lecture seulement).
27/09/20 Fondements des Systèmes d'Exploitation 107
Exécution d’un script
Appel direct

Le fichier n’étant pas exécutable, il est
impossible de le lancer. Pour modifier les
permissions d’un fichier, il faut utiliser la
commande chmod

27/09/20 Fondements des Systèmes d'Exploitation 108


Exécution d’un script
Ligne shebang

Nous avons créé le fichier essai contenant une
seule ligne affichant un message ; nous avons
rendu le fichier exécutable avec chmod ; puis nous
l’avons lancé en utilisant la notation ./essai .


Nous savons que ce fichier doit être interprété par
un shell, c’est-à-dire qu’un shell disponible sur le
système ( sh , bash , ksh ...) doit lire le script et
traduire son contenu ligne à ligne.

27/09/20 Fondements des Systèmes d'Exploitation 109


Exécution d’un script
Ligne shebang

Mais comment le système sait-il que ce fichier doit
être interprété par un shell ? Comment sait-il qu’il
s’agit d’un script shell et non d’un script Sed, Awk,
Perl, ou autre ? Comment se fait l’association entre
notre fichier et le shell du système ?


En réalité, nous n’avons rien précisé, et si le script
fonctionne quand même, c’est uniquement grâce à un
comportement par défaut dans le cas où cette
information est absente

27/09/20 Fondements des Systèmes d'Exploitation 110


Exécution d’un script
Ligne shebang

On précise l’interpréteur à employer, on utilise le principe de la ligne shebang
(contraction de shell et de bang – point d’exclamation en anglais).


Lorsque le noyau s’aperçoit que les deux premiers caractères du fichier sont
#! , il considère que tout le reste de la ligne représente le nom de l’interpréteur à
utiliser.

● Et si l’on demande à exécuter le fichier mon_script.sh écrit ainsi :

27/09/20 Fondements des Systèmes d'Exploitation 111


Exécution d’un script
Ligne shebang

le système d’exploitation traduira l’invocation :
$ ./mon_script.sh
En
$ /bin/bash ./mon_script.sh

27/09/20 Fondements des Systèmes d'Exploitation 112


The END

27/09/20 Fondements des Systèmes d'Exploitation 113

Vous aimerez peut-être aussi