Académique Documents
Professionnel Documents
Culture Documents
I - Introduction
Considérons le programme ci-dessous :
from os.path import getsize
from tkinter.filedialog import askopenfilename
fichier = askopenfilename()
if fichier:
print(fichier, " fait ", str(getsize(fichier)), " octets")
1
Cours
Systèmes d’exploitation NSI
ou OS
II – Principes
2.1 composants d’un OS
Un système d’exploitation ou operating system en anglais, est un ensemble de programmes dont le but
est de gérer les ressources matérielles et logicielles d’une machine. Il fournit un accès unifié à ces
ressources (exemple du point 4. ci-dessus).
Composition :
• l’ordonnanceur décide quel programme s’exécute à un
instant donné sur le processeur.
• Le gestionnaire de mémoire répartit la mémoire vive
entre les différents programmes en cours d’exécution
• les systèmes de fichiers définissent la manière de stocker
les fichiers sur les supports physiques (disques, clés
USB, disques optiques etc.)
• la pile réseau implémente les protocoles réseaux
(notamment TCP/IP) pour la communication inter-
machines.
• Les pilotes (ou drivers en anglais) gèrent la communication avec les périphériques matériels
(carte graphique, disques durs, clavier, …, mais aussi imprimantes, caméras, micros etc.)
2.3 Distribution
Une distribution est un ensemble de logiciels et de ressources (fichiers de configuration, icônes,
polices de caractères etc...) associés à un noyau. Lorsqu’on « installe Linux », on installe une
distribution particulière qui a ses familles et sous-familles : Ubuntu et Linux Mint (famille Debian),
fedora et redhat (famille redhat) etc... Ces distributions sont adaptées à des types de machine (grand
public, serveurs ou matériel embarqué) ou à des usages spécifiques (édition multimédia, gestion
d’entreprise etc...)
Il existe aussi des distributions pour d’autres noyaux : FreeBSD, GNU/Hurd…
2
Cours
Systèmes d’exploitation NSI
ou OS
III – Histoire
1956 : 1er 1978 : sortie de BSD, OS 1984 : l’entreprise 1991 : L’étudiant Linus Torvalds 2008 : Google
issu de la recherche Apple développe le noyau d’un nouvel diffuse le
OS, le
(Berkeley) et basé sur Unix. commercialise des OS, qu’il diffuse sous licence libre système
GM-NAA I/O
Ses licences open source ordinateurs GNU GPL. L’association avec le Android, basé
spécifique à
permissives autorisent à personnels basés sur projet GNU, qui développe des sur le noyau de
la machine
copier le code, que l’on l’architecture outils libres (bibliothèque C etc.) Linux qu’il
IBM 704
retrouve en partie dans les Motorola, puis donne naissance aux distributions entoure de
systèmes Apple (iOS/ PowerPC. Les Linux. Il connaît une adoption programmes et
macOS…) ou la bibliothèque machines sont rapide comme OS pour serveurs, bibliothèques
standard C d’Android équipées du système calculateurs et machines de propriétaires.
graphique Mac OS stockage.
1970 : sortie d’ 1980 : système MS- 1990 : Microsoft 2001 : Apple sort
Unix, OS des DOS de Microsoft. développe un un nouvel OS basé
laboratoires Bell, Conçu pour fonctionner système graphique sur BSD : macOS
multi-tâche, multi- sur le processeur x86 au dessus de MS- 2007 : Apple
utilisateurs. Les d’Intel. Le succès de DOS, qui deviendra commercialise une
1ère versions sont l’ordinateur personnel et un OS à part version de macOS
en assembleur puis de l’architecture x86 entière : le système pour ses téléphones
en C, d’Intel installent MS- Windows. portables, baptisé
nouvellement créé DOS comme l’OS iOS
pour cela. principal pour les
particuliers.
IV – Standard POSIX
Le Portable Operating System Interface définit :
• les fonctions offertes par le système pour lire/écrire dans les fichiers, accéder aux réseaux …
• les programmes de base permettant d’utiliser le système.
La plupart des OS modernes sont compatibles avec le standard POSIX, à l’exception du système
Windows de Microsoft. Cela s’explique par le fait que ce standard est très largement inspiré par le
système Unix dont tous les OS modernes sont des descendants (Linux, macOS, iOs, Android…) sauf
Windows, qui est un dérivé de MS-DOS.
Les commandes présentés dans la suite de ce cours sont réalisables sur tous les systèmes compatibles
POSIX.
3
Cours
Systèmes d’exploitation NSI
ou OS
toto a pour UID 1001, son groupe principal est nsi avec pour GID 2002 et il fait de plus partie des
groupes premieres (son niveau) et sambashare (partage réseau).
Dans tous les systèmes POSIX, il existe un utilisateur spécial nommé root, dont l’UID et le GID
valent 0 : on l’appelle traditionnellement le « super-utilisateur » et il correspond à l’administrateur
système : il a tous les droits sur le système et peut le modifier à sa guise.
4
Cours
Systèmes d’exploitation NSI
ou OS
5
Cours
Systèmes d’exploitation NSI
ou OS
NB : L’extension d’un fichier (par exemple « txt » pour monfichier.txt) n’a pas de signification sur les
systèmes POSIX. Son utilisation pour déterminer le type de fichier est une spécificité de Microsoft
Windows.
5.4 Gestion des droits
Les systèmes POSIX sont multi-utilisateurs. Pour différencier les fichiers de chaque utilisateur, l’OS y
associe l’UID du propriétaire et le GID du groupe propriétaire, puis définit des permissions pour les
utilisateurs. L’option -l de la commande ls permet un affichage détaillé
suzy@pc1:/home/suzy$ ls -l Photos
total 2672
-rw-r--r-- 1 suzy nsi 1431099 juil. 1 15:02 img_001.jpg
-rw-r--r-- 1 suzy nsi 1300458 juil. 1 15:02 img_002.jpg
• La 1ère ligne indique que les fichiers occupent 2672 blocs de 1024 octets
• le 1er tiret indique qu’il s’agit d’un fichier (un répertoire serait indiqué par la lettre d)
• les 9 caractères suivants sont à lire par groupe de 3 : chacun de ces groupes contient les
permissions de lecture (r pour read) d’écriture (w pour write) et d’exécution s’il s’agit d’un
exécutable (x pour execute). Le 1er groupe concerne les permissions du propriétaire du fichier,
le second du groupe propriétaire et le 3ème de tous les autres utilisateurs.
• Le nombre suivant (1 ci-dessus) est le nombre de « hard links » vers le fichiers. De manière
simpliste, il s’agit du nombre de raccourcis vers le fichier. De manière plus exacte, les liens
durs sont les associations nomFichier-ino des répertoires. Ce nombre compte donc combien il
existe d’associations pour l’ino de ce fichier dans tout le système de fichier (un même fichier
peut donc apparaître avec un nom nomFichier1 dans un répertoire et un nom nomFichier2
dans un autre).
• On trouve ensuite le nom du propriétaire (suzy), le groupe propriétaire (nsi), la taille du fichier
en octets (1431099), la date et l’heure de dernière modification et enfin le nom du fichier.
La commande chmod permet de modifier les permissions sur le fichier avec la syntaxe
chmod c ₁ m₁ p ₁ , c ₂ m₂ p ₂ , … , c n mn pn nomFicOuRep
où les c i sont les cibles qui peuvent valoir « u » pour le propriétaire, « g » pour le groupe, « o » pour
les autres et « a » pour tous. Les mi sont les modifications, « + » pour ajouter des permissions et
« - » pour les retirer. Les pi sont les permissions, « r », « w » ou « x ».
suzy@pc1:/home/suzy$ chmod g+w,o-r Photos/img_001.jpg
suzy@pc1:/home/suzy$ ls -l Photos
total 2672
-rw-rw---- 1 suzy nsi 1431099 juil. 1 15:02 img_001.jpg
-rw-r--r-- 1 suzy nsi 1300458 juil. 1 15:02 img_002.jpg
6
Cours
Systèmes d’exploitation NSI
ou OS
En se souvenant que les répertoires sont en réalité des fichiers spéciaux contenant les associations
nomFichier-ino des fichiers et répertoires qu’ils contiennent, on comprendra que :
• le droit en lecture permet de lister les éléments du répertoire.
• le droit en écriture permet de modifier les associations, i.e. créer / renommer / supprimer les
fichiers contenus dans le répertoire.
• Le droit d’exécution est interprété comme un droit de chercher : il permet d’utiliser ce
répertoire dans un chemin (par exemple pour en faire le répertoire courant), et d’accéder aux
inodes des fichiers et sous-répertoires. Sous Linux, il est nécessaire à l’affichage des fichiers et
sous-répertoires.
Suzy peut afficher les droits sur son répertoire à l’aide de l’option -d de la commande ls
suzy@pc1:/home/suzy$ ls -l -d .
drwxr----x 1 suzy nsi 4096 juil. 1 15:02 /home/suzy
Bob, n’appartenant pas au groupe nsi, il ne peut pas voir le contenu de /home/suzy (il n’a pas les
droits en lecture) :
bob@pc1:/home/bob$ cd /home/suzy
bob@pc1:/home/suzy$ ls -l
ls: impossible d’ouvrir le répertoire ‘.’ : Permission non accordée.
Kate, appartenant au groupe nsi, peut lister les entrées (sous Linux, il faudrait aussi les droits
d’exécution sur le répertoire), mais pas les informations associées :
kate@pc1:/home/kate$ ls -l /home/suzy
ls: impossible d’accéder à ‘/home/suzy/Photos : Permission non accordée.
ls: impossible d’accéder à ‘/home/suzy/Documents: Permission non accordée.
total 0
d ????????? ? ? ? ? ? Documents
d ????????? ? ? ? ? ? Photos
kate@pc1:/home/kate$ cd /home/suzy
bash: cd: /home/suzy/: Permission non accordée.
7
Cours
Systèmes d’exploitation NSI
ou OS
Quels fichiers correspondent aux motifs suivant sachant que le répertoire courant est /home/suzy:
• Photos/img/*
• Photos/img_001.j?g
• Photos/img_00[2345].jpg
• Documents/[^abc]*
• [A-Z]*/img*
Le processus de substitution des motifs en l’ensemble des noms correspondants s’appelle expansion
de la ligne de commande. Il est effectué par le shell avant l’exécution du programme.
suzy@pc1:/home/suzy$ ls /home/suzy/*/img?*[23].jpg
/home/suzy/Photos/img_002.jpg
Ci-dessus, le shell effectue les étapes suivantes :
• ls et /home/suzy/*/img?*[23].jpg sont expansés pour donner ls (inchangé) et
/home/suzy/Photos/img_002.jpg
• ls ne contenant pas de « / » est cherché dans les répertoires par défaut et trouvé dans /bin
• /bin/ls /home/suzy/Photos/img_002.jpg est exécuté
NB :
1. Si un motif ne correspond à aucun fichier, le motif est utilisé directement comme nom de
fichier avec le risque que la commande échoue.
2. Le caractère spécial « ~ » correspond au répertoire personnel de l’utilisateur courant, par
convention /home/suzy pour l’utilisateur suzy
5.6 Redirections
Les systèmes POSIX proposent à chaque programme 3 fichiers spéciaux :
1. l’entrée standard (ou stdin pour standard input) est un fichier spécial dans lequel le
programme peut lire et qui par défaut est reliée au clavier. Dans ce cas, lire dans ce fichier
bloque le programme jusqu’à ce que l’utilisateur presse une touche du clavier.
2. La sortie standard (ou stdout pour standard output) correspond à un fichier spécial
disponible en écriture, par défaut relié à l’affichage de la console.
3. Le sortie d’erreur (ou stderr pour standard error)
Le shell permet ensuite de faire des redirections :
• L’opérateur > permet de rediriger la sortie standard d’un programme vers un fichier :
suzy@pc1:/home/suzy$ ls Photos/* > liste_photos.txt
Ici, la liste des photos renvoyée par ls ne sera pas affiché dans la console mais écrite dans le fichier
liste_photos.txt
8
Cours
Systèmes d’exploitation NSI
ou OS
• L’opérateur | permet de rediriger la sortie standard d’un programme vers l’entrée standard
d’un second :
suzy@pc1:/home/suzy$ ls -l */* | sort -k 5 -n -r
-rw-r--r-- 1 suzy nsi 1431099 juil. 1 15:02 Photos/img_001.jpg
-rw-r--r-- 1 suzy nsi 1300458 juil. 1 15:02 Photos/img_002.jpg
-rw-r--r-- 1 suzy nsi 500341 juil. 1 15:02 Documents/cours.odt
-rw-r--r-- 1 suzy nsi 201314 juil. 1 15:02 Documents/diapos.pdf
La commande sort permet de trier les lignes d’un fichier, l’option -k 5 indique de prendre le 5ème
champ comme clé de tri, l’option -n indique que ce champ doit être considéré comme un nombre (et
non du texte) et l’option -r inverse l’ordre du tri. La sortie standard de ls est donc redirigé vers
l’entrée standard de la commande sort, pour être triée selon la taille du fichier.
• Les opérateurs >> et 2>> sont des variantes de > et 2> qui au lieu d’écraser le contenu du
fichier (vers lequel on redirige la sortie du programme), permettent d’ajouter le nouveau
contenu à la fin du fichier.
Commandes utiles :