Académique Documents
Professionnel Documents
Culture Documents
Chapitre I :
Introduction aux systèmes
d'exploitation
Amine DHRAIEF
1) Qu’est ce qu’un système
d’exploitation ?
●
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
●
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.
●
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
●
Gère les requêtes et les conflits des différent
programmes/utilisateurs qui demandent l'accès à
ces ressources.
●
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
●
le nombre de
transistors des
microprocesseurs
sur une puce de
silicium double tous
les 18 mois
●
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 »
●
Les OS des smartphone inclus en plus du noyau
(kernel) un middelware (iOS/Android)
– Des APIs pour les développeurs
Noyau
OS
Programmes Systèmes
Applications
●
Le bootstrap program :
– Un programme aussi simple que possible, connu sous le nom de firmware/
micro-code.
●
Une fois que le noyau (kernel) est chargé et
exécuté, il peut fournir ses services au
système et aux utilisateurs.
●
L’occurrence d'un événement est signalé
par une interruption logicielle ou matérielle
●
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
●
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
●
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 )
●
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.
●
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.
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
API
Applications
– /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;
};
●
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
Machine virtuelle
●
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.
●
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.
●
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.
●
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.
●
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.
●
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.
●
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.
●
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.
●
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
●
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.
●
Sa tâche la plus basique est d’allouer de la
mémoire à des processus lorsqu’ils en ont
besoin.
●
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).
●
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 ;
●
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
●
/bin : binaires, utilitaires binaires ,binaries,
binary utilities (binutils)
– Exécutables des commandes essentielles
disponibles pour tous les utilisateurs (ex: cd, cat,
ls…)
●
/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
●
/lib bibliothèques (librairies)
– Bibliothèques partagées essentielles et modules du noyau
●
/media
– Contient les points de montages pour les médias amovibles
●
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
●
Exemples
– /home/aminedhraief/Videos/mavideo.mp4
– /home/aminedhraief/Musiques/mamusique.mp3
●
Il a pour rôle de traduire
les commandes saisies
par l’utilisateur afin que le
système puisse les
exécuter.
●
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.
●
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
●
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
…..
●
Ces langages sont dits interprétés, par
opposition aux langages compilés (comme C,
C++, Fortran, Ada, etc.).
Écris
Lis
Écris
Lis
…..
●
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.
●
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.
●
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 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.
●
Pour les nouveaux utilisateurs, Vim intègre un
tutoriel. Il peut être lancé en tapant : vimtutor
●
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 !
●
Ceux-ci sont énumérés dans la variable
d’environnement PATH , que nous pouvons consulter.
●
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
●
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
●
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.
●
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
●
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.