Académique Documents
Professionnel Documents
Culture Documents
Systèmes d'exploitation
2022/2023
Systèmes d'exploitation
Introduction
Concepts fondamentaux
▪ Ordinateur : Machine permettant de stocker des informations et d’effectuer
des calculs (beaucoup plus rapide que l’humain)
▪ Cet ordinateur regroupe un certain nombre de composants que nous
appellerons matériel (hardware)
▪ Les logiciels sont des séquences d’instructions que l’on appelle souvent
programmes.
▪ Un programme est l’implantation d’un ensemble de méthodes de résolution
de problèmes dans un langage compris par l’ordinateur
▪ La méthode de résolution est ce que l’on appelle l’algorithme
▪ Informatique désigne l'automatisation du traitement de l'information
Qu’est ce que le système d’exploitation?
▪ Un système d’exploitation(SE), en anglais Operating System(OS), est un programme
ou un ensemble de programmes qui permet la communication entre
▪ A quoi ca sert?
▪ à simplifier la vie des utilisateurs et des programmeurs
▪ à cacher la complexité des machines pour l'utilisateur afin d'utiliser la machine
sans savoir ce qui est derrière
▪ à gérer les ressources de la machine d'une manière efficace
▪ Première génération (1938 - 1955) : les tubes à vide et les tableaux d’interrupteurs
sont utilisés pour effectuer certaines opérations simples de calcul.
Tous les programmes ont été écrits en langage machine (langage binaire), pas de
langage abstrait (C,C++,Java, etc.). L’exécution des applications a été conçue en
basculant les tableaux d’interrupteurs afin de contrôler les fonctions de base de la
machine.
▪ Troisième génération (1965 - 1980) : des circuits intégrés sont utilisés pour la
production des ordinateurs. Une seule gamme de produits est apparue (IBM). IBM
1401 est une machine pour E/S (les opérations d’Entrées / Sorties). IBM 7094 est
une machine pour le calcul. Puis IBM a proposé d’autres machines.
Linux
Utilisateurs
Système d’exploitation
Pilotes (Drivers)
Ordinateur / Matériel
Systèmes d'exploitation
Linux
Linux
▪ Les origines
A l'origine Linux est un noyau UNIX créé en 1991 dans le cadre d'un
projet initialisé et coordonné par Linus TORVALDS.
▪ Quelques distributions :
GNU
Le projet GNU est un projet de la FSF (Free Software Foundation) dont le but est de
développer un système d'exploitation complet, distribué selon les conditions de la GPL.
La FSF a été fondée au début des années 80 par Richard M. Stallman, chercheur au
laboratoire d'Intelligence Artificielle du MIT.
La GPL (General Public License) est une license qui spécifie les conditions de
distribution de tous les logiciels GNU.
Logiciel Libre
Selon www.gnu.org, l'expression “Logiciel libre” fait référence à la liberté et non pas
au prix
✓ La liberté de redistribuer des copies, donc d'aider votre voisin, (liberté 2).
Ainsi, chacun est libre de redistribuer des copies, avec ou sans modification,
gratuitement ou non.
La seule condition est que les sources de ces logiciels doivent être disponibles
gratuitement pour quiconque en fait la demande.
Linux a donc été développé selon les termes d'une licence GPL
Commandes
➢ Interpréteur de commandes
Le Shell est un programme qui permet l'exécution de commandes
Bash (Bourne Again Shell) qui est l’interpréteur de commandes (terminal) le plus
courant sous Linux et aussi sous MAC OS. Il est également possible de l’activer
sous Windows
➢ man : Manuel des commandes donne des infos détaillées (manuelles ) sur la
commande
▪ $ man nom_commande
Exemple : $ man man
On peut également avoir une aide rapide sur la plupart des commandes par l'option - -help
▪ $ man --help
Commandes
La commande ls est utilisée pour visualiser le contenu d’un répertoire.
Par défaut, cette commande affichera le contenu du répertoire (dossier) courant.
Pour voir le contenu d’autres répertoires, tapez ls suivi du chemin d’accès au répertoire.
Par exemple pour voir le contenu de Documents qui se trouve dans home
$ ls /home/elsa/documents
> boulot fiche.ods
Arborescences
Répertoire racine
Sous-répertoires Fichiers
Commandes
La commande ls prend en charge les options suivantes:
-a: liste tous les fichiers, y compris les fichiers cachés. Ce sont des fichiers qui commencent par «.».
-A: liste tous les fichiers, y compris les fichiers cachés, à l'exception de «.» et «..» ils se réfèrent aux entrées du
répertoire courant et du répertoire parent.
-R: liste tous les fichiers de manière récursive,
-l: liste les fichiers avec le numéro d'index, le nom du propriétaire et du groupe, la taille et les autorisations.
-o: liste les fichiers au format long mais sans le nom du groupe.
-g: liste les fichiers au format long mais sans le nom du propriétaire.
-i: liste les fichiers avec leur numéro d'index.
-s: liste les fichiers avec leur taille.
-t: trie la liste par heure de modification, avec la plus récente en haut.
-S: trie la liste par taille, avec la plus grande en haut.
-r: inverser l'ordre de tri.
$ ls -lit
> -r-x-r--r-- 1 john staff 128 mai 18 11:56 toto.sh
drwxrwx--- 1 vivati finances 128 oct 1 13:22 titi
Commandes
La commande pwd (print working directory) pour afficher le chemin du répertoire de
travail (dossier) dans lequel vous êtes actuellement.
La commande retournera un chemin absolu (complet à partir de la racine), qui est en
fait un chemin de tous les répertoires qui commence par une barre oblique (Slash ) /
Exemple :
$ pwd
> /home/elsa/documents
Commandes
La commande cd (Change Directory) est utilisée pour naviguer dans les répertoires.
Elle nécessite soit le chemin d’accès complet, soit le nom du répertoire, selon le
répertoire de travail dans lequel vous vous trouvez.
La commande mv pour déplacer des fichiers, bien qu’elle puisse également être utilisée
pour renommer des fichiers.
Par exemple
pour copier scenery.jpg (de votre répertoire actuel) dans le répertoire photos:
$ cp scenery.jpg /home/elsa/photos
pour déplacer fichier.txt (de votre répertoire actuel) dans le répertoire documents:
$ mv fichier.txt /home/elsa/documents
Par exemple
pour créer un fichier appelé fichier :
$ touch fichier
Par exemple
pour créer un répertoire appelé Music :
$ mkdir Music
Par exemple
pour supprimer un répertoire appelé Music :
$ rmdir Music
Par exemple
pour supprimer un fichier appelé fichier :
$ rm fichier
l’option r pour supprimer les répertoires même s’ils ne sont pas vide :
$ rm -r Music/2023
Commandes
La commande cat (concatenate) permet de créer, d’afficher et de concaténer des
fichiers. Il est principalement utilisé pour prévisualiser un fichier sans ouvrir un éditeur
de texte
La commande head pour visualiser les premières lignes de fichier. Par défaut, elle
affichera les 10 premières lignes, mais avec l’option -n on peut modifier ce nombre
La commande tail similaire à celle de la commande head, mais au lieu d’afficher les
premières lignes elle affiche les 10 dernières lignes d’un fichier
Par exemple
pour prévisualiser un fichier appelé fichier :
$ cat fichier
$ head fichier
$ tail –n 30 fichier
Commandes
La commande wc (word count) permet de compter le nombre de lignes, de mots, de
caractères et d’octets de chaque fichier donné
La commande wc prend en charge les options suivantes:
-l, –lines Imprimez le nombre de lignes
-w, –words Imprimez le nombre de mots
-m, –chars Imprimez le nombre de caractères
-c, –bytes Imprimez le nombre d’octets
-L Imprimez la longueur de la ligne la plus longue
Par exemple
pour copier scenery.jpg (de votre répertoire actuel) dans le répertoire photos:
$ wc -mL rose-tatoo.txt
$ wc rose-tatoo.txt Ubuntu.txt
Commandes
La commande grep permet de rechercher tout le texte d’un fichier donné
$ grep [option] motif [nom_fichier]
Exemple
$ grep son fic
[option]
-i – la recherche ne sera pas sensible à la casse
-c – il n’affichera que le nombre de lignes qui correspondent au modèle recherché
-r – permet la recherche récursive dans le répertoire courant
-n – rechercher les lignes et ne retenir que les numéros des lignes correspondant
-v – avec cette option, on nous montre les lignes qui ne correspondent pas au
modèle que nous avons cherché
$ grep ^[a-d] fichier1
obtenir tous les lignes commençant par les caractères compris entre a et d du fichier
fichier1.
Commandes
Les différentes expressions régulières sont :
^ début de ligne
. un caractère quelconque
$ fin de ligne
x* zéro ou plus d'occurrences du caractère x
x+ une ou plus occurrences du caractère x
x? une occurrence unique du caractère x
[...] plage de caractères permis
[^...] plage de caractères interdits
\ {n\} pour définir le nombre de répétition n du caractère placé devant
La commande who permet d'afficher des informations concernant des utilisateurs qui
sont connectés.
La commande which donne le chemin complet des commandes du shell. Si elle ne peut
pas reconnaître la commande donnée, elle lancera une erreur.
La commande whatis affiche une description d’une seule ligne de toute autre command
Exemple :
$ ls -l > poub
$ date > poub
$ ls -l > poub
$ date >> poub
Exemple
$ wc < poub
Commandes
➢ Tube (<<pipe>>)
‘|’ permet de prendre la sortie standard d'une première commande et de la
rediriger sur l'entrée standard d'une 2ème commande.
La syntaxe :
nom_commande1 [options] [arguments] | nom_commande2 [options]
[arguments]
Exemple :
$ ls -l fic? | wc (raccourci de la série de redirections vu précédemment)
$ ls /etc | head (permet de se déplacer dans un texte écran par écran)
Caractères spéciaux
Caractère Description
Métacaractère qui remplace n'importe quelle chaîne de caractères (même vide).
*
Exemple : cp * DATA copie tous les fichiers dans le répertoire DATA.
? Métacaractère qui remplace un caractère quelconque.
Permet de séparer plusieurs commandes écrites sur une même ligne.
Exemple :
;
cp *.c DATA; tar cvf data.tar DATA copie tous les fichiers d'extention .c
dans le répertoire DATA et les archive dans le fichier data.tar.
Regroupe des commandes.
Exemple :
() (echo "Liste :"; ls ) > liste.txt
écrit la chaîne Liste : et la liste des fichiers du répertoire courant dans le fichier
liste.txt.
Permet le lancement d'un processus en arrière plan. Cela permet d'exécuter
& d'autres commandes pendant qu'un processus est en marche.
Exemple : vi&.
Le Système de fichiers
/usr Contient les programmes, les librairies et les fichiers accessibles pour l’utilisateur
/var Contient les données variables liées à la machine (spool, traces)
Le contenu d'un système de fichiers Linux
▪ Commandes pour
▪ Créer un utilisateur :
adduser nom_user
▪ Affecter un mot de passe :
passwd nom_user
▪ Les 2 premiers points se traduisent concrètement par l'ajout d'une ligne dans
les fichiers :
/etc/passwd
/etc/group
▪ /etc/passwd et /etc/group sont deux fichiers texte que l'administrateur peut
modifier avec un éditeur de texte.
La Sécurité – Les utilisateurs
▪ Une ligne du fichier /etc/passwd se présente ainsi (séparateur de
champs ":") :
sandra:*:300:400:Sandra Garnier:/home/sandra:/bin/bash
▪ Respectivement
▪ Nom de l'utilisateur (login)
▪ Mot de passe crypté (cf. fichier /etc/shadow)
▪ Numéro de l'utilisateur (uid)
▪ Numéro de groupe (gid)
▪ Champ commentaire (nom par exemple)
▪ Le répertoire de démarrage
▪ Interpréteur de commande (shell)
La Sécurité – Les utilisateurs
▪ La commande adduser permet également de fixer toutes les valeurs qui sont, sinon,
fixées par défaut :
adduser –u 250 –g 600 –G comedy,users brad
Les paramètres de la commande adduser
-u uid Pour fixer le numéro de l'utilisateur
-g gid Pour fixer le numéro du groupe primaire. Le groupe doit
exister dans /etc/group
-G liste Appartenance de l'utilisateur à une liste de groupes
(séparateur "," – sans espace)
-s shell Attribution du shell par défaut /bin/bash
-c commentaire
-d répertoire Par défaut le répertoire porte le nom de l'utilisateur et
personnel est placé dans /home
-m Pour créer le répertoire personnel
La Sécurité – Les utilisateurs
Les utilisateurs ont accès à ce fichier lors de leur connexion, il est donc accessible en
lecture.
M jours N jours
(avertir) (avant_expiration) Date_expiration
La Sécurité – Les utilisateurs
▪ Pour supprimer un mot de passe, l'administrateur supprime
simplement le contenu du champs "mot de passe" avec un
éditeur de texte.
▪ La commande id permet d'obtenir les informations concernant
un utilisateur, par exemple avec : id sandra
on obtiendra :
uid=300 (sandra) gid=400 (sandra)
groupes=400(sandra),100(users), 800(comedie)
La Sécurité – Les utilisateurs
▪ Autres commandes …
▪ Modification des informations sur un utilisateur :
usermod paramètres nom_user
Les paramètres sont identiques à ceux de la commande
adduser,
par exemple :
usermod –u 670 –c directrice sandra
Modification du numéro et du commentaire sur l'utilisateur
sandra
La Sécurité – Les utilisateurs
▪ Autres commandes …
u
g
o
La Sécurité – Les Fichiers
Dans l'ordre
rwx
▪ Read (r) droit de lecture autorisé ; "-" si non permise
▪ Write (w) droit d'écriture autorisé ; "-" si non permise
▪ eXecute (x) droit d'exécution autorisé ; "-" non permise
La Sécurité – Les Fichiers
▪ Signification de ces droits sur les fichiers :
•"r" : Droit de lire le contenu du fichier
•"w" : Droit d'écrire dans le fichier
•"x" : Droit d'exécuter si le fichier est un script ou un fichier binaire
▪ Exemples :
shutdown –r +5 "Arrêt du système imminent"
shutdown –h now
▪ La séquence de touches Ctrl-Alt-Del qui
effectue un arrêt du système se définit dans
le fichier /etc/inittab :
ca::ctrlaltdel:/sbin/shutdown -r now
La gestion des processus
▪ Les systèmes Linux (comme Unix et Windows NT et
successeurs) sont des systèmes d'exploitation préemptifs.
Où :
UID Nom de l'utilisateur qui a lancé le processus
PID Numéro du processus
❖ Ces fichiers d’initialisation permettent de modifier ou de créer des variables internes au Shell, ou des
variables d’environnement, de créer des fonctions, etc.
La programmation SHELL
❖ Le jeu d’instructions lui-même comporte:
➢ Scripts
✓ Un script correspond à une suite de commandes écrite dans un fichier.
✓ Les variables spéciales les plus utilisées dans l’écriture des scripts :
❖ Exécution: un script doit être exécutable, pour qu’on puisse l’exécuter par son
nom.
❖ Les lignes de commentaire sont tout ignorés par l’interpréteur. Elles sont
indispensables pour tout programmeur, car elles lui permettent de « commenter »
son programme.
❖ Les lignes blanches ne sont pas interprétées non plus. N’hésitez donc surtout pas
à espacer votre script, les lignes blanches ne consomment presque rien en termes
d’espace disque, ce n’est pas une ressource rare, et elles facilitent la lecture pour
un être humain.
La programmation SHELL
❖La commande echo sert à afficher un texte. Chaque ligne
de texte est écrite sur une ligne à part.
Résultat :
Bonjour tout le monde … On est en séance du cours programmation SHELL
Exemple 2:
#!bin/sh
#fichier ‘’mon_script ’’
echo ‘’écrivez votre nom puis votre prénom’’
read nom prénom
echo ‘’nom: $nom’’
echo ‘’prénom: $prénom’’
La programmation SHELL
❖ On peut faire passer un script un argument lors de l’invocation.
❖ Le nombre de paramètres passés en argument à un script n’est pas limité, toutefois les neufs
variables 1, …, 9 permettent de désigner ces paramètres dans le script.
❖ La commande shift permet de faire un décalage de paramètre, ainsi $i sera désigné par $i+1.
#/bin/sh
#fichier « arg_shift »
Echo $1 $2 $3
Shift
Echo ‘apres shift’
Echo $1 $2 $3
Exemple:
itri@itri-virtualBox: ~ $ arg_shift 1 2 3 4
123
Après shift …
234
itri@itri-virtualBox: ~ $
La programmation SHELL
▪ En plus des variables vues précédemment, le Shell
prédéfinit d’autres variables facilitent la programmation:
#/bin/sh
#fichier « var_sp »
Echo $0 a été appelé avec $# paramètres
Echo qui sont : $*
itri@itri-virtualBox: ~ $ var_sp a b c d
Var_sp a été appelé avec 4 paramètres
Qui sont : a b c d
itri@itri-virtualBox: ~ $
La programmation SHELL
❖ La liste des variables et leur valeur est obtenue à l’aide de la commande
set sans argument. Pour affecter une valeur à une variable on utilise
simplement le signe «=» sans espace.
❖ Syntaxe:
Nom_variable=valeur
❖La référence d’une variable est obtenue en faisant précéder le nom par $.
Ainsi «echo $nom_variable » affichera le contenue.
Exemple:
❖ La commande unset nom_variable permet de supprimer une variable, sauf les variables PATH, PS1,
PS2, MAILCHECK…
❖ Certaines variables ont une signification particulière pour le Bourne-Shell. Les principales seront
indiquées ci-dessous par ordre alphabétique.
✓ CDPATH: Liste des chemins d’accès utilisés par la commande cd lors d’un changement de
répertoire en relatif.
✓ HOME: Indique le répertoire d’acceuil, correspond à l’argument par défaut de la commande cd.
✓ PATH: Liste des chemins d’accès contenant les commandes. Chaque chemin d’accès est séparé par
le caractère « : ».
La programmation SHELL
❖ Pour la programmation des actions conditionnelles, nous disposons de trois outils:
✓ L’instruction if;
✓ L’instruction case.
La programmation SHELL
❖ L’instruction if: présente trois variantes qui correspondent aux structures sélectives à une, deux ou n
alternatives.
▪ Les commandes 1 ne sont exécutées que si la condition renvoie un code retour nul ($?=0).
if condition 1
then commandes 1
elif condition 2
then commandes 2
……
elif condition (n-1)
then commandes (n-1)
else
commandes n
fi
La programmation SHELL
❖ La commande test: est une opération dont le but est d’évaluer la valeur d’une expression. Cette
expression peut être simplement l’existence de quelque chose (par exemple, d’un fichier, ou bien d’une
variable), ou peut être une proposition.
❖ Un test renvoie un code de retour. Un code de retour est un nombre (0 ou autre), qui correspond à une
réponse de type « vrai » ou « faux ». C’est ce code de retour qui permet la manipulation des tests dans
les structures de contrôle comme if, etc.
❖ Le code de retour 0 correspond à la réponse « vrai ». Pour répondre « faux », le programme répond …
autre chose (peut être 1, 2, -1 ou autre).
❖ Les expressions peuvent être niées par l’opérateur logique de négation « ! » et combinées par les
opérateurs logiques ou « -o » et et logique « -a ».
La programmation SHELL
❖ Les expressions les plus utilisées sont:
❑ Opérateurs arithmétiques:
✓ -eq (equal): égal à (signe « =»);
✓ -ne (not equal): différent de (signe « ≠ »;
✓ -gt (greater than): strictement supérieur à (signe « > »);
✓ -it (lesser than): strictement inférieur à (signe « <»);
✓ -ge (greater or equal): supérieur ou égal à (signe « ≥ »;
✓ -le (lesser ou equal): inférieur ou égal à (signe « ≤ »
Exemple:
#!/bin/sh
echo "Entrer une couleur"
read C
case $C in
"vert")
echo "Vous pouvez passez" ;;
"orange")
echo "Soyez prudent" ;;
"rouge")
echo "Stop, vous ne pouvez pas passer" ;;
*)
echo "Erreur" ;;
esac
La programmation SHELL
❖ L’interpréteur de commandes gère trois types de constructions pour les boucles:
❖ Pour les deux premières constructions, le fonctionnement est similaire à la commande if. Pour la boucle
for, la variable prendra successivement toutes les valeurs de la liste.
while condition
do commandes
done
until condition
do commandes
done
Nom_fonction (){
Instruction 1
Instruction 2
…
}
#/bin/sh
#je définis une première fonction
Ecrire_sur_une_ligne(){
Echo –n$*
}