0% ont trouvé ce document utile (0 vote)
324 vues27 pages

Introduction au Système Linux

Transféré par

sarita
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
324 vues27 pages

Introduction au Système Linux

Transféré par

sarita
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université de Sfax

Institut Supérieur d'Informatique et de Multimédia de Sfax


2009 / 2010
• But
– Présentation de Linux
– Apprentissage de base pour bien démarrer avec
Linux
Cours : Systèmes d’exploitation évolués • Application et expérimentation
– Machines en double boot Windows/Linux
– VirtualBox
Le système d’Exploitation Linux

Mohamed Ben Halima

2009/2010 Systèmes d'Exploitation Evolués 2

Plan 1. Historique (1)

1. Historique
2. Présentation de Linux
3. Structure de Linux
4. Le Principes de fonctionnement de Linux  Été 1969 : Ken Thompson, aux BELL Laboratories, écrit la version
5. Le Shell Linux expérimentale d’Linux : système de fichiers exploité dans un
environnement mono−utilisateur, multi−tâche, le tout étant écrit en
6. Éléments d'administration de Linux
assembleur.
7. Les qualités du système Linux
8. Caractéristiques générales du noyau
 1ère justification officielle : traitement de texte pour secrétariat.
9. Système de Gestion de Fichiers Puis : étude des principes de programmation, de réseaux et de
10. Processus dans Linux langages.
11. Implémentation des processus sous Linux
12. La gestion de la mémoire sous Linux
13. Entrées/Sorties dans Linux
2009/2010 Systèmes d'Exploitation Evolués 3 2009/2010 Systèmes d'Exploitation Evolués 4

1
1. Historique (2) 1. Historique (3)

 Eté 1973 : réécriture du noyau et des utilitaires d’Linux en C.


 En 1979, avec la version 7, Linux se développe commercialement
 En 1974 distribution d’Linux aux Universités (Berkeley et Columbia
notamment). Il se compose alors :

 d’un système de fichiers modulaire et simple,


 En 1984 le Système V.2 est adopté comme standard,
 d’une interface unifiée vers les périphériques par  En 1985 AT&T publie SVID (System V Interface Definition) qui
l’intermédiaire du système de fichiers, définit l’interface d’application du Système V.2 et non pas son
implémentation,
 du multi−tâche,  En 1986, le Système V.3 apporte les Streams, les librairies
partagées et RFS (Remote File Sharing),
 et d’un interpréteur de commandes flexible et interchangeable.
 En 1993, X/Open lance le COSE (Common Open Software
Environment). Il s’agit d’accords entre constructeurs pour le
développement d’applications dans un environnement commun.

2009/2010 Systèmes d'Exploitation Evolués 5 2009/2010 Systèmes d'Exploitation Evolués 6

2. Présentation de Linux
1. Historique (4)
Comment est maintenu le projet Linux ?

1991 - … : Linux, le renouveau d’Linux

 LINUX est une implantation libre des spécifications POSIX avec des
extensions System V (AT&T) et BSD (Berkeley),

En 1991, Linus B. Torvalds (Helsinki) utilise MINIX,

 Août 1991 : 1ère version de LINUX 0.01. C’est une réécriture de


MINIX, avec des ajouts de nouvelles fonctionnalités et la diffusion
des sources sur « Internet »,

2009/2010 Systèmes d'Exploitation Evolués 7 2009/2010 Systèmes d'Exploitation Evolués 8

2
2. Présentation de Linux 2. Présentation de Linux
Développement du noyau Linux Mode de numérotation

Les numéros de version du noyau sont composés de trois chiffres : le


Si au début de son histoire le développement du noyau Linux était premier est le numéro majeur, le second le numéro mineur.
assuré par des développeurs bénévoles, les principaux Avant l'apparition des versions 2.6.x, les numéros mineurs pairs
contributeurs sont aujourd'hui un ensemble d'entreprises, souvent indiquaient une version stable et les numéros mineurs impairs une
concurrentes, comme Red Hat, Novell, IBM ou Intel. version de développement. Ainsi, les versions 2.2, 2.4 sont stables, les
versions 2.3 et 2.5 sont des versions de développement.
La licence du noyau Linux est la licence publique générale GNU.
Depuis la version 2.6 du noyau, ce modèle de numérotation
Cette licence est libre, ce qui permet d'utiliser, copier et modifier le
stable/développement a été abandonné et il n'y a donc plus de
code source selon ses envies ou ses besoins. Ainsi, quiconque a
signification particulière aux numéros mineurs pairs ou impairs. Le
les connaissances nécessaires peut participer aux tests et à
troisième chiffre indique une révision, ce qui correspond à des
l'évolution du noyau.
corrections de bogues, de sécurité ou un ajout de fonctionnalité.

Exemple 2.2.26, 2.4.30, 2.6.11 ou 2.6.32

2009/2010 Systèmes d'Exploitation Evolués 9 2009/2010 Systèmes d'Exploitation Evolués 10

2. Présentation de Linux 2. Présentation de Linux


Le projet GNU La licence GPL

La licence GPL (General Public licence)


Principe de base : le libre accès au code source accélère le www.gnu.orgcopyleft/gpl.html
progrès en matière d'informatique car l'innovation dépend de la
diffusion du code source  Autorise l'utilisateur à copier et distribuer à
La liberté au sens GNU est définie selon quatre principes (le volonté le logiciel qu'elle protège, pourvu qu'il
copyleft GPL) : n'interdise pas à ses pairs de le faire aussi,
 Requiert aussi que tout dérivé d'un travail placé
– liberté d'exécuter le programme, pour tous les usages sous sa protection soit lui aussi protégé par elle,
– liberté d'étudier le fonctionnement du programme, de  Quand la GPL évoque les logiciels libre, elle traite
l'adapter à ses besoins de liberté et non de gratuité (un logiciel GPL peut
être vendu),
– liberté de redistribuer des copies
 Remarque : en anglais « free » mélange gratuité et
– liberté d'améliorer le programme et de publier ses liberté.
améliorations, pour en faire profiter toute la communauté

2009/2010 Systèmes d'Exploitation Evolués 11 2009/2010 Systèmes d'Exploitation Evolués 12

3
2. Présentation de Linux
3. Structure de Linux (1)
Distributions Linux

Une distribution est un noyau auquel des logiciels ont été ajoutés
Possibilités de créer des distributions dédiées à un usage  Le noyau gère les tâches de base du système :
particulier
 L'initialisation du système
 La gestion des ressources
 La gestion des processus
 La gestion des fichiers
 La gestion des Entrées/Sorties

 L’utilisateur communique avec le noyau par l'intermédiaire d'un


SHELL. Les Shells sont aussi des langages de commandes et de
programmation.

2009/2010 Systèmes d'Exploitation Evolués 13 2009/2010 Systèmes d'Exploitation Evolués 14

3. Structure de Linux (2) 3. Structure de Linux (3)

 Multi-tâches, multi-usagers depuis le début


 Les utilitaires sont des outils d'interfaçage avec le système, de  Le système Linux initial était aussi préoccupé par les limitation du
programmation et de communication. matériel
 Distinction entre:
– programmes du système
– noyau
 Les shells les plus connus sont :
• tout ce qu’il y a entre l ’interface des appels de système et
BOURNE SHELL (sh) le matériel
KORN-SHELL (ksh) • fournit dans une seule couche un grand nombre de
fonctionnalités
C-SHELL
– système fichiers, ordonnancement UCT, gestion
TC-SHELL mémoire...
BOURNE AGAIN SHELL (bash)  Plus modulaire et protégé que MS-DOS

2009/2010 Systèmes d'Exploitation Evolués 15 2009/2010 Systèmes d'Exploitation Evolués 16

4
3. Structure de Linux (4) 4. Le Principes de fonctionnement de Linux

X-Window

Shell

Noyau (Kernel)

BIOS

Périphériques

2009/2010 Systèmes d'Exploitation Evolués 17 2009/2010 Systèmes d'Exploitation Evolués 18

4. Le Principes de fonctionnement de Linux


4. Le Principes de fonctionnement de Linux Boot et lancement du noyau

 Boot et lancement du noyau Lancement du système : boot et chargement du noyau


 Au boot le BIOS exécute le MBR (Master Boot Reccord) situé sur le
 Processus init premier secteur (512 octets) du support bootable choisi (disque,
CD, clef USB, ...)
 Services et démons  Le MBR :
- scanne le disque pour trouver la partition bootable (flag)
 Les runlevels - lance le boot loader (chargeur de démarrage) du secteur de boot
(premier secteur) de la partition bootable
 Scripts de lancement des services  Le bootloader :
- charge le noyau en mémoire et l'exécute
- charge le ramdisk initrd.img en mémoire
 2 bootloader possibles:
– LILO (LInux LOader)
– GRUB (GRand Unified Bootloader)

2009/2010 Systèmes d'Exploitation Evolués 19 2009/2010 Systèmes d'Exploitation Evolués 20

5
4. Le Principes de fonctionnement de Linux 4. Le Principes de fonctionnement de Linux
Processus init Services et démons

Lancement du système : boot -> init -> modules/services


Lancement du système : boot -> init

 Après le chargement du noyau, le script correspondant à sysinit


 Une fois le noyau chargé en mémoire, il lance le premier processus : dans fichier inittab est chargé :
– Mandriva : /etc/rc.d/rc.sysinit
/bin/init – Debian : /etc/rc.d/rcS lance les scripts /etc/rcS.d/S??*
 init est le père de tous les autres processus qui seront créés par
l'appel system fork()
 init lit le fichier /etc/inittab pour savoir :  Ce script d'initialisation est chargé de 2 tâches fondamentales :
- quel est le fichier à exécuter pour continuer le chargement du système ‒ charger les modules dans le noyau (gestion des périphériques)
- quel est le runlevel (niveau d'exécution) par défaut ‒ démarrer les services en exécutant les processus «Deferred Auxiliary
Executive Monitor» (daemons) correspondant, en français : démons
- comment lancer les services pour un runlevel donné
- ...

2009/2010 Systèmes d'Exploitation Evolués 21 2009/2010 Systèmes d'Exploitation Evolués 22

4. Le Principes de fonctionnement de Linux 4. Le Principes de fonctionnement de Linux


Les runlevels Les runlevels

Lancement du système : boot -> init -> services Lancement du système : boot -> init -> services

 Le runlevel (numéro de 0 à 6) fixe le répertoire de démarrage des


 Le mécanisme de démarrage des services est caractéristique d'une services :
distribution (incompatibilités entre distributions) : - Mandriva -> répertoires /etc/rc.d/rc[0-6].d
- Mandriva, Debian, RedHat, ... mécanisme dérivé d' «Unix System V» - Debian -> répertoires /etc/rc[0-6].d
- Slackware, FreeBSD, NetBSD, ... mécanisme dérivée d' «Unix BSD»
 rcX.d : contient des liens symboliques vers les scripts de gestions des
 le répertoire /etc/init.d contient tous les scripts de gestion des services qui sont dans le répertoire :
services installés (1 service <-> 1 ou plusieurs démon(s)) - /etc/rc.d/init.d (Mandriva, + lien symbolique vers /etc/init.d)
 les lignes «/etc/rc.d/rc x» du fichier /etc/inittab déterminent le - /etc/init.d (Debian)
lancement des scripts pour le runlevel x
 Les liens sont formés selon la syntaxe : [S/K]XX<nom_du_script>
 Le runlevel de l'action initdefault est lancé par le ligne correspondante
- S lance le script avec l'argument start (démarrage du service)
- K lance le script avec l'argument stop (arrêt du service)
- XX est un rang qui fixe l'ordre dans lequel les scripts sont lancés

2009/2010 Systèmes d'Exploitation Evolués 23 2009/2010 Systèmes d'Exploitation Evolués 24

6
4. Le Principes de fonctionnement de Linux
Les Scripts de lancement des services 5. Le Shell Linux(1)

Lancement du système : boot -> init -> services


 Le Shell est un programme (application), qui assure l'interface
 Utilitaires en mode console : entre les différents programmes et la machine
- Debian : update -rc.d
- Mandriva : chkconfig, service  Interprète les commandes
 le script /etc/rc.local peut contenir des personnalisations locales qui
seront lancées à la fin du processus init  Gère les I/O utilisateur sur le terminal
 Mémorise le set-up de l’environnement de l’utilisateur dans le
 Pour démarrer un service sous mandrake, on peut taper : fichier .profile

service <nom_du_service> start  Les utilisateurs communiquent avec sh

ou encore :  Commandes internes : gérées dans le shel (set, unset)

/etc/rc.d/init.d/<script_correspondant_au_service> action  Commandes externes : exécutées en tant que programmes (ls,


grep, sort, ps)
action : start | stop | restart | status | ...
2009/2010 Systèmes d'Exploitation Evolués 25 2009/2010 Systèmes d'Exploitation Evolués 26

5. Le Shell Linux(2) 5. Le Shell Linux(3)

A quoi cela sert-il ?


Propriétés du Shell Linux
- Administrer.
- Interactive,
- Tuer des processus récalcitrants (Indisciplinés).
- Exécution des programmes en arrière plan (non interactifs),
- Sur une machine multiprocesseur, avoir une idée de son
- Redirection des E/S, occupation.

- Connexion de pgms ensembles à travers les tubes (pipes) - Automatiser des traitements massifs ou un même programme

- A un langage simple pour écrire des scripts, doit être lancé des dizaines de fois.

- Savoir se connecter à une machine Linux distante pour y


prendre ou mettre des fichiers ainsi qu’y lancer des
programmes.
2009/2010 Systèmes d'Exploitation Evolués 27 2009/2010 Systèmes d'Exploitation Evolués 28

7
5. Le Shell Linux(4) 6. Éléments d'administration de Linux

Syntaxe d’une commande Shell


 Les 2 modes d'administration
Syntaxe :
command [ -options ] [ arguments ]  Notion de « fichier spécial »
 Nommage des périphériques de boot
Exemples :
 Partitionnement des disques
Contexte
root@machine1:~# pwd
Commande à exécuter  Formatage disque et filesystem
Résultat de la /home/root
commande  Le « montage » des périphériques
root@machine1:~#
 Les gestionnaires de paquets (rpm et Debian)
 Configuration du bootloader (LILO)

2009/2010 Systèmes d'Exploitation Evolués 29 2009/2010 Systèmes d'Exploitation Evolués 30

6. Éléments d'administration de Linux 6. Éléments d'administration de Linux


Les 2 modes d'administration Notion de «fichier Spécial»

Linux supporte 2 modes d'administration :


Principe :
« À la main » :  Sous Unix tout est fichier
 Édition (manuelle) des fichiers de configuration => tous les périphériques sont représentés par un fichier
 Utilisation (manuelle) des commandes d'administration spécial dans le répertoire /dev
 Utilisation (manuelle) des gestionnaires de paquets RPM ou DEBIAN
- disques, clavier, souris, carte son, ports d'E/S, ...
 Édition de scripts de commande (langage : shell, perl, awk, ...)

Avec des logiciels d'administration (graphique ou mode caractère) :


 Qui manipulent les fichiers de configuration
 Qui utilisent des commandes d'administration standard ou spécifiques
 linuxconf, webmin, DrakConf, ....

2009/2010 Systèmes d'Exploitation Evolués 31 2009/2010 Systèmes d'Exploitation Evolués 32

8
6. Éléments d'administration de Linux 6. Éléments d'administration de Linux
Notion de «fichier Spécial» Appellation des périphériques

Périphériques IDE
Principe :
 Sous Unix tout est fichier
=> tous les périphériques
- disques
- clavier IDE 0 Master Slave
- souris /dev/hda /dev/hdb
- carte son
- ports d'E/S
- sockets réseau
- mémoire ...
IDE 1 Master Slave
…sont représentés par un fichier spécial dans le répertoire /dev /dev/hdc /dev/hdd

2009/2010 Systèmes d'Exploitation Evolués 33 2009/2010 Systèmes d'Exploitation Evolués 34

6. Éléments d'administration de Linux 6. Éléments d'administration de Linux


Appellation des périphériques Partitionnement des disques

 La plupart des systèmes d'exploitation « correctement » installés


utilisent un disque avec plusieurs partitions:
– partition « système » (fichiers systèmes, fichiers de configuration ...)
– partition « utilisateurs » (données des utilisateurs)
– …

 Exploitation plus sécurisée


– on peut formater une partition indépendamment des autres
– on peut utiliser une partition en lecture seule
– ...

 partitionnement statique => planifier le partitionnement


– on ne peut pas modifier simplement un partitionnement statique
– partitionner est une opération « low level », risquée !!
– ...

 Pour bénéficier des avantage du partitionnement dynamique il faut


passer à des solutions de type RAID (Redondant Array of
Independant Disks) ou LVM (Logical Volume Manager)
2009/2010 Systèmes d'Exploitation Evolués 35 2009/2010 Systèmes d'Exploitation Evolués 36

9
6. Éléments d'administration de Linux 6. Éléments d'administration de Linux
Partitionnement des disques Partitionnement/Filesystem

Partitionnement et formatage du disque dur :


 Formatage « bas niveau » (physique, en usine)
 Partitionnement (à l'installation de l'OS)
- fdisk, PartitionMagic (DOS)
- fdisk, parted,partman.(linux)..
- à l'installation de Linux (menu caractère, menu graphique)

 « Formatage » « haut niveau » (logique, dépends de l'OS et du


FileSystem cible)

- format (Windows : créer un filesystem FAT ou NTFS)


- mkfs (Unix : créer un filesystem Ext2, Ext3, FAT, ...)

Exemple : mkfs –t ext2 /dev/hda1


mkfs –t fat /dev/fd0
Système de fichiers journalisés (ext3): plus robuste aux pannes
secteurs

2009/2010 Systèmes d'Exploitation Evolués 37 2009/2010 Systèmes d'Exploitation Evolués 38

6. Éléments d'administration de Linux 6. Éléments d'administration de Linux


Partitionnement/Filesystem Partitionnement/Filesystem

Arborescence du système

Installation Mandriva / outil DrakConf


/ : Racine du système
etc/ : fichiers de configuration
bin/ : programmes et commandes de base
boot/ : noyau du système
tmp/ : fichiers temporaires créés et utilisés par le système
var/ : divers fichiers relatifs au système d'exploitation (logs, files, cache, ...)
usr/ : programmes utilisateurs, librairies, fichiers partagés, ...
home/ : répertoires personnels des utilisateurs
toto/
jean/
mnt/ : communément utilisé pour les divers “montages” de disques ou partitions
cdrom/
windows/ 39 2009/2010 Systèmes d'Exploitation Evolués 40

10
6. Éléments d'administration de Linux 6. Éléments d'administration de Linux
Filesystem Montage des périphériques

Système d'exploitation Types de système de fichiers supportés

Dos FAT16
L'opération de montage des périphériques :

Windows 95 FAT16  DOS et Windows utilisent la notion d'unité logique pour fournir un
Windows 95 OSR2 FAT16, FAT32 accès
aux ressources de stockage
Windows 98 FAT16, FAT32
( A: -> floppy, C: -> disque dur, ... E: -> lecteur CD)
Windows NT4 FAT, NTFS version4
 Tous les Unix utilisent la notion de montage :
Windows 2000/XP FAT, FAT16, FAT32, NTFS (versions 4 et 5)
– un périphérique est associé à un point de montage (répertoire) par une
Linux Ext2, Ext3, ReiserFS Linux Swap, FAT,NTFS «opération de montage» (commande mount)
– la commande mount peut être utilisée « à la main »
MacOS HFS, MFS
exemple :
SGI IRIX XFS mount /dev/hda1 /
FreeBSD UFS
mount /dev/sda1 /mnt/removable

Sun Solaris UFS  -tous les périphériques montés bénéficient du « cache disque »
IBM AIX JFS

2009/2010 Systèmes d'Exploitation Evolués 41 2009/2010 Systèmes d'Exploitation Evolués 42

6. Éléments d'administration de Linux


Montage des périphériques 7) Les qualités du système Linux

1. Code source facile à lire et à modifier ; disponible commercialement.


 Avant d'extraire un périphérique amovible (disquette, clef 2. Interface utilisateur simple ; non-conviviale mais très puissante.
USB, etc.), nous DEVONS le démonter (umount), pour
synchroniser les écritures (vidage du cache disk) 3. Le système est construit sur un petit nombre de primitives de base ;
de nombreuses combinaisons possibles entre programmes.
 Tous les montages permanents sont indiqués dans le fichier
/etc/fstab 4. Les fichiers ne sont pas structurés au niveau des données, ce qui
favorise une utilisation simple.
5. Toutes les interfaces avec les périphériques sont unifiées (système
La commande df affiche la liste des périphériques montés + propriétés : de fichier).
6. Le programmeur n'a jamais à se soucier de l'architecture de la
machine sur laquelle il travaille.
7. C'est un système disponible sur de nombreuses machines, allant du
super-calculateur au microordinateur (PC).
8. Les utilitaires et programmes proposés en standard sont très
nombreux.

2009/2010 Systèmes d'Exploitation Evolués 43 2009/2010 Systèmes d'Exploitation Evolués 44

11
8) Caractéristiques générales du
noyau (1) 8) Caractéristiques générales du noyau (2)

2. Système de fichiers arborescent


1. Multi-tâche / multi-utilisateur
Arborescence unique de fichiers, même avec plusieurs périphériques
(disques) de stockage.
 Plusieurs utilisateurs peuvent travailler en même temps ; chaque
3. Entrée/Sorties compatible fichiers, périphériques et
utilisateur peut effectuer une ou plusieurs tâches en même temps.
processus
 Une tâche ou un processus = programme s'exécutant dans un  Les périphériques sont manipulés comme des fichiers ordinaires.
environnement spécifique.

 Les tâches sont protégées; certaines peuvent communiquer, c-à-d


 Les canaux de communication entre les processus (pipe) s'utilisent
échanger ou partager des données, se synchroniser dans leur
avec les mêmes appels systèmes que ceux destinés à la manipulation
exécution ou le partage de ressources. Certaines tâches peuvent
des fichiers.
être « temps réél ».

2009/2010 Systèmes d'Exploitation Evolués 45 2009/2010 Systèmes d'Exploitation Evolués 46

8. Caractéristiques générales du noyau (3) 9. Système de Gestion de Fichiers (1)

Réduction du noyau système


 Linux comprend un noyau (kernel) et des utilitaires. Irremplaçable  Le système de gestion de fichiers est un outil de manipulation des
par l'utilisateur. fichiers et de la structure d'arborescence des fichiers sur disque et a
 Le noyau gère les processus, les ressources (mémoires,
aussi le rôle sous Linux de conserver toutes les informations dont la
périphériques ...) et les fichiers.
pérennité est importante pour le système
 Tout autre traitement doit être pris en charge par des utilitaires ;
c'est le cas de l'interprète de commande (sh, csh, ksh, tcsh ...).
 Il permet de plus une utilisation facile des fichiers et gère de façon

Interface au noyau transparente les différents problèmes d'accès aux supports de


masse
 L’interface entre le noyau Linux et les périphériques est assurée par
les gestionnaires de périphériques (devices driver)
 L’interface entre le noyau Linux et les programmes est assurée par  Ce principe est différent de celui employé par les systèmes MS-DOS
un ensemble d’appels systèmes et Windows, pour lesquels chaque volume (disque) possède une
racine spécifique repérée par une lettre (A:\, C:\, etc).
2009/2010 Systèmes d'Exploitation Evolués 47 2009/2010 Systèmes d'Exploitation Evolués 48

12
9. Système de Gestion de Fichiers (2) 9. Système de Gestion de Fichiers (3)
- fichiers -

Le concept de fichier • Affichage des caractéristiques: ls -l


 L'unité logique de base du S.G.F. le fichier
groupe
-rw-r--r-- 1 user01 ISIMS 58K 16 Jul 09:19 tp1.tex
 Le contenu est entièrement défini par le créateur
nb liens propriétaire le date nom
il
ta
 Sur Linux les fichiers ne sont pas typés
type group
 Matérialisé par une inode et des blocs du disque

-rw-r--r--
user
others
2009/2010 Systèmes d'Exploitation Evolués 49 2009/2010 Systèmes d'Exploitation Evolués 50

9. Système de Gestion de Fichiers (4) 9. Système de Gestion de Fichiers (5)


- fichiers - - liens -

• Changer les permissions: chmod • Liens physiques


chmod <classe op perm, …>|nnn <fic> ln <nom_fic> <nouveau_nom_fic>
– permet de donner plusieurs noms à un fichier
– classe: – chaque perm = 1 valeur: – pas pour les répertoires
u : user r 4 – ne traverse pas les partitions
g : group w 2 – un fic est détruit quand TOUS ses liens physiques sont
o : others x 1 supprimés (≠ raccourcis)
a : all rien 0
– op: – déf. des permissions (par addition) • Liens symboliques
= : affectation pour chaque classe ln -s <nom_fic> <nouveau_nom_fic>
- : suppr.
exemples: – crée un raccourci
+ : ajout
– perm: chmod u=rwx,g=rx,o=r – traverse les partitions
chmod u=rwx,g=rx,o=r tp1.tex
tp1.tex
r : lecture chmod a+x – fonctionne aussi pour les répertoires
chmod a+x script.sh
script.sh
w : écriture chmod
chmod 755
755 script.sh
script.sh
x : exécution • Lister les liens d’un fichier: ls -l <nom_fic>
2009/2010 Systèmes d'Exploitation Evolués 51 2009/2010 Systèmes d'Exploitation Evolués 52

13
9. Système de Gestion de Fichiers (6) 9. Système de Gestion de Fichiers (7)

Les inodes Organisation des disques

 L'inode est le centre de tous les échanges entre le disque et la


mémoire,
 L'inode est la structure qui contient toutes les informations
sur un fichier donné à l'exception de sa référence, dans
l'arborescence.

Les informations stockées dans une inode disque sont :


 utilisateur propriétaire  date de dernière
 groupe propriétaire modification

 type de fichier  date de dernière


modification de l'inode
 droits d'accès
 taille du fichier
 date de dernier accès
 adresses des blocs-
disque contenant le
2009/2010 Systèmes d'Exploitation Evolués 53 2009/2010 Systèmes d'Exploitation Evolués 54
fichier.

9. Système de Gestion de Fichiers (8) 9. Système de Gestion de Fichiers (9)

Organisation des disques Bloc de


données

Boot bloc
Attributs Bloc
utilisé au chargement du système. d’indirection
simple

Super Bloc
Bloc
Adresses d’indirection
il contient toutes les informations générales sur le blocs double
disque logique.
Bloc
Inode list d’indirection
triple

Table des inodes.


blocs de données
chaînés à la création du disque (mkfs).

2009/2010 Systèmes d'Exploitation Evolués 55 2009/2010 Systèmes d'Exploitation Evolués 56

14
9. Système de Gestion de Fichiers (10) 9. Système de Gestion de Fichiers (11)

Adressage des blocs dans les inodes


Capacité de la structure d'index : numéro de bloc sur 32 bits
(4 octets), et bloc de 1 KO.
Le système d'adressage des blocs dans les inodes (Système V)
consiste en 13 adresses de blocs : On peut donc mettre p = 256 numéros de blocs dans un bloc.

 Les 10 premières adresses sont des adresses qui pointent  blocs directs : 10 blocs,
directement sur les blocs de données du fichier
 bloc indirect_1 : 256 blocs,
 Les autres sont des adresses indirectes vers des blocs de  bloc indirect_2 : 256 2 blocs,
données contenant des adresses  bloc indirect_3 : 256 3 blocs.

Nombre maximum de blocs dans un fichier : 10 + 256 + 2562+ 2563


Les inodes sont stockés en mémoire tant que le fichier est ouvert
Taille maximale d'un fichier ~ 16 Go !!!

2009/2010 Systèmes d'Exploitation Evolués 57 2009/2010 Systèmes d'Exploitation Evolués 58

9. Système de Gestion de Fichiers (12) 10. Processus dans Linux (1)

Allocation des inodes d'un disque


Processus = objet dynamique qui représente un programme en
L'allocation des inodes est réalisée en recherchant dans la zone des cours d’exécution et son contexte
inodes du disque un inode libre. Pour accélérer cette recherche : un Caractéristiques:
tampon d'inodes libres est géré dans le SuperBloc, de plus l'indice du  identification (pid)
premier inode libre est gardé en référence dans le SuperBloc afin de  identification du proc. parent (ppid)
redémarrer la recherche qu'à partir du premier inode réellement libre.  propriétaire
 priorité
 ...

Inondes libres dans le SuperBloc


2009/2010 Systèmes d'Exploitation Evolués 59 2009/2010 Systèmes d'Exploitation Evolués 60

15
10. Processus dans Linux (2) 10. Processus dans Linux (3)
1: le processus créé par fork a acquis les ressources nécessaires à son
exécution
2 : le processus vient d'être élu par l'ordonnanceur Un processus comporte du code machine exécutable, une zone

3 : le processus revient d'un appel système ou d'une interruption mémoire (données allouées par le processus) et une pile (pour les
4 : le processus a réalisé un appel système ou une interruption est variables locales des fonctions et la gestion des sous-programmes)
survenue
5 : le processus se met en attente d'un événement (libération de
ressource, terminaison de processus par wait). Il ne consomme pas de
temps UC
6 : l'événement attendu par le processus s'est produit
7 : conséquence d'un signal particulier
8 : réveil du processus par le signal de continuation SIGCONT
9 : le processus s'achève par exit, mais son père n'a pas pris
connaissance de sa terminaison. Il ne consomme pas de temps UC et ne
mobilise que la ressource table des processus

2009/2010 Systèmes d'Exploitation Evolués 61 2009/2010 Systèmes d'Exploitation Evolués 62

10. Processus dans Linux (4) 10. Processus dans Linux (5)

Les processus sont composés d’un espace de travail en


mémoire formé de 3 segments :
Le noyau maintient une table pour gérer l’ensemble des
 Le code correspond aux instructions, en langage processus. Cette table contient la liste de tous les processus
d’assemblage, du programme à exécuter. avec des informations concernant chaque processus.

 La zone de données contient les variables globales ou Le nombre des emplacements dans cette table des processus
statiques du programme ainsi que les allocations
dynamiques de mémoire. est limité pour chaque système et pour chaque utilisateur.

 les appels de fonctions, avec leurs paramètres et leurs


variables locales, viennent s’empiler sur la pile.

Les zones de pile et de données ont des frontières mobiles qui


croissent en sens inverse lors de l’exécution du programme.

2009/2010 Systèmes d'Exploitation Evolués 63 2009/2010 Systèmes d'Exploitation Evolués 64

16
10. Processus dans Linux (6)

L’environnement d’un processus encore appelé contexte, comprend


entre autre :
 Un numéro d’identification unique appelé PID (Process
IDentifier) ;
 Le numéro d’identification de l’utilisateur qui a lancé ce
processus, appelé UID (User IDentifier), et le numéro du groupe
auquel appartient cet utilisateur, appelé GID (Group IDentifier) ;
 Le répertoire courant ;
 Les fichiers ouverts par ce processus ;
 Le masque de création de fichier, appelé umask ;
 La taille maximale des fichiers que ce processus peut créer,
appelée ulimit ;
 La priorité ;
 Les temps d’exécution ;
 Le terminal de contrôle, c’est−à−dire le terminal à partir duquel
la commande a été lancée.

2009/2010 Systèmes d'Exploitation Evolués 65 2009/2010 Systèmes d'Exploitation Evolués 66

10. Processus dans Linux (8) 10. Processus dans Linux (9)

Création de processus
Création de processus
Sous Linux la création de processus est réalisée par
Pour chaque commande lancée (sauf les commandes l’appel système :
internes), le shell crée automatiquement un nouveau
int fork(void)
processus.
Tous les processus sauf le processus d’identification 1
Il y a donc 2 processus. Le premier, appelé processus (init) sont crées par un appel fork
père, exécute le programme Shell, et le deuxième, appelé Le processus qui appelle le fork est appelé processus
processus fils, exécute la commande. père Le nouveau processus est appelé processus fils

Tout processus a un seul processus père Tout


Le fils hérite de tout l’environnement du père, sauf bien
processus peut avoir zéro ou plusieurs processus fils
sûr du PID, du PPID et des temps d’exécution.

Le PPID est le PID du processus père.


2009/2010 Systèmes d'Exploitation Evolués 67 2009/2010 Systèmes d'Exploitation Evolués 68

17
10. Processus dans Linux (10) 10. Processus dans Linux (11)

Création de processus

Voyons ce qu'il se passe lorsque qu'un shell exécute la


commande
compress toto
qui demande la compression du fichier nommé toto :
1. Le shell se duplique (fork); on a alors deux processus shell
identiques.
2. Le shell père se met en attente de la fin du fils (wait).
3. Le shell fils remplace son exécutable par celui de la commande
compress;
4. La commande compress s'exécute et compacte le fichier toto;
lorsqu'elle termine, le processus fils disparaît.
5. Le père est alors réactivé, et affiche le prompt suivant.
2009/2010 Systèmes d'Exploitation Evolués 69 2009/2010 Systèmes d'Exploitation Evolués 70

2009/2010 Systèmes d'Exploitation Evolués 71 2009/2010 Systèmes d'Exploitation Evolués 72

18
10. Processus dans Linux (14) 10. Processus dans Linux (15)

On utilisera cette solution (processus lancés en parallèle)


par exemple pour lancer un traitement très long, et
continuer à travailler en même temps. Dans ce cas, on dit
que le père a lancé un fils en tâche de fond (background) ou
encore en mode asynchrone.

Pour lancer une commande en tâche de fond, il faut


faire suivre cette commande par le caractère ’&’ Pour lancer une commande en plaçant le père en attente, il
suffit de taper cette commande :
Une autre solution consiste à placer le processus père en Ce mode est donc le
attente jusqu’à ce que le processus fils soit terminé. mode par défaut dans le
shell.
2009/2010 Systèmes d'Exploitation Evolués 73 2009/2010 Systèmes d'Exploitation Evolués 74

10. Processus dans Linux (16) 10. Processus dans Linux (17)

Arborescence de processus Arborescence de processus


Tous les processus sont créés à partir d’un processus père, Le processus "init" crée 2 sortes de processus :
existant déjà.
 des démons, c’est−à−dire des processus qui ne
Le premier processus est un peu spécial. Il est créé lorsque le
sont rattachés à aucun terminal, qui sont endormis la
système est initialisé. Il s’appelle "init", a le PID 0 et n’est
plupart du temps, mais qui se réveillent de temps en
associé à aucun terminal. Son travail consiste à créer de
temps pour effectuer une tâche précise (par exemple la
nouveaux processus.
gestion des imprimantes).

 des processus interactifs, associés aux lignes


d’entrées/sorties sur lesquelles sont rattachés des
terminaux. Autrement dit des processus vous
permettant de vous connecter.

2009/2010 Systèmes d'Exploitation Evolués 75 2009/2010 Systèmes d'Exploitation Evolués 76

19
10. Processus dans Linux (18) 10. Processus dans Linux (19)

Arborescence de processus
• Infos retournées par ps: temps CPU utilisé

[user01:~] ps
PID TT STAT TIME COMMAND
3899 p1 S 0:00.08 -zsh
numéro de 4743 p1 S+ 0:00.14 emacs
processus 4180 std S 0:00.04 -zsh commande
exécutée

état du
processus: R actif
T bloqué
terminal
P en attente de page
associé
D en attente de disque
Pour visualiser les processus que vous avez lancé, tapez la S endormi
Commande : ps IW swappé
2009/2010 Systèmes d'Exploitation Evolués 77 2009/2010 Systèmes d'Exploitation Evolués
Z tué 78

10. Processus dans Linux (20) 10. Processus dans Linux (21)

Communication entre processus Communication entre processus

Les processus Linux communiquent avec deux mécanismes : Le système assure la synchronisation de l’ensemble dans le
sens où :
1. En passant des messages à travers les tubes
(pipelines)  il bloque le processus lecteur du tube lorsque le tube
est vide en attendant qu’il se remplisse (s’il y a encore
des processus écrivains);

 il bloque (éventuellement) le processus écrivain


lorsque le tube est plein (si le lecteur est plus lent que
l’écrivain et que le volume des résultats à écrire dans
le tube est important).
illustration de "cmd1 | cmd2"
2009/2010 Systèmes d'Exploitation Evolués 79 2009/2010 Systèmes d'Exploitation Evolués 80

20
10. Processus dans Linux (22) 10. Processus dans Linux (23)

Communication entre processus Communication entre processus

2. En utilisant les interruptions logicielles  Le signal handler commence à exécuter, et


 Un processus envoie un signal à un autre; lorsqu’il termine le contrôle retourne au
processus qui a pris le signal;
 Le processus dit au système quoi faire : ignore le
signal, prendre le signal, ou bien laisser le signal  Un processus peut envoyer un signal uniquement
termine le processus (par défaut); au membre de son groupe (parent, frères, enfants
et descendants);
 Si le signal est pris, le processus doit indiquer le
processus en charge du signal (signal handler);  Le même signal peut être envoyé à tous les
membres du groupe du processus.

2009/2010 Systèmes d'Exploitation Evolués 81 2009/2010 Systèmes d'Exploitation Evolués 82

10. Processus dans Linux (25)

Listes des états d'un processus

1. le processus s'exécute en mode utilisateur.


2. le processus s'exécute en mode noyau.
3. le processus ne s'exécute pas mais est éligible (prêt à s'exécuter) .
4. le processus est endormi en mémoire centrale .
5. le processus est prêt mais le swappeur doit le transférer en mémoire
centrale pour le rendre éligible.
6. le processus est endormi en zone de swap (sur disque par exemple).
7. le processus passe du mode noyau au mode utilisateur mais est
préempté et a effectué un changement de contexte pour élire un autre
processus.

2009/2010 Systèmes d'Exploitation Evolués 83 2009/2010 Systèmes d'Exploitation Evolués 84


États et transitions d'un processus

21
10. Processus dans Linux (26) 10. Processus dans Linux (27)

Listes des états d'un processus Liste des signaux Linux/Linux


Numéro Nom Signification
8. naissance d'un processus, ce processus n'est pas encore prêt et
1 SIGHUP Fin de session
n'est pas endormi, c'est l'état initial de tous processus sauf le
2 SIGINT Interruption
swappeur.
3 SIGQUIT Instruction
9. zombie le processus vient de réaliser un exit, il apparaît 4 SIGILL Instruction illégale
uniquement dans la table des processus où il est conservé le 5 SIGTRAP Trace
temps pour son processus père de récupérer le code de retour et 6 SIGABRT Instruction IOT ou abort
d'autres informations de gestion (coût de l'exécution sous forme de 7 SIGEMT Instruction EMT
temps, et d'utilisation des ressources ). 8 SIGFPE Exception arithmétique
9 SIGKILL Tuer un processus
10 SIGBUS Bus error
L'état zombie est l'état final des processus, les processus restent 11 SIGSEGV Violation de mémoire
dans cet état jusqu'à ce que leur père lise leur valeur de retour (exit 12 SIGSYS Erreur appel système
status). 13 SIGPIPE Ecriture dans un pipe sans lecteur
14 SIGALRM Alarme de l'horloge
15 SIGTERM Signal de terminaison

2009/2010 Systèmes d'Exploitation Evolués 85 2009/2010 Systèmes d'Exploitation Evolués 86

11. Implémentation des processus sous Linux (1) 11. Implémentation des processus sous Linux (2)

La table de processus contient les informations suivantes :


Chaque processus a deux parties :
 Les paramètres d’ordonnancement :
 Une composante utilisateur qui exécute le programme,
 Priorité du processus, temps CPU récemment consommé,
 Une partie noyau.
temps récemment passé à dormir.
 Servent à déterminer le prochain processus à exécuter.
Le noyau maintien deux structures de données
fondamentales relatives aux processus :  L’image mémoire :
 La table de processus : réside en permanence en  Pointeurs sur les segments de codes (text), de données et
mémoire et contient des informations nécessaire à tous de pile du programme et sur les tables des pages (si la
les processus (même ceux qui ne sont pas en mémoire) pagination existe).

 La structure utilisateur : swappée ou paginée quand le  Si le segment de page est partagé, le pointeur adresse la
table partagée.
processus associés n’est pas en mémoire (pour
économiser la mémoire).  Si le processus n’est pas en mémoire, on trouve des
informations permettant d’en retrouver les éléments sur
disque
2009/2010 Systèmes d'Exploitation Evolués 87 2009/2010 Systèmes d'Exploitation Evolués 88

22
11. Implémentation des processus sous Linux (3) 11. Implémentation des processus sous Linux (4)

 Les signaux : La structure utilisateur contient les informations suivantes


(nécessaire uniquement quand le processus est en cours
 Des masques indiquent quels signaux sont ignorés, d’exécution):
attrapés, temporairement bloqués et en instance d’émission
par le processus.  Les registres :
 Le reste :  quand une interruption matérielle (trap) arrive au noyau, les
 l’état courant du processus, l’événement éventuel sur registres sont sauvegardés.
lequel il attend, le temps au bout duquel l’horloge de l’alarme  L’état de l’appel système :
aura terminé, le PID du processus, le PID de son parent, le
UID et le GID.  l’information concernant l’appel système en cours, y
compris ses paramètres et le résultat.
 La table de descripteur de fichiers :
 quand un appel système utilisant un descripteur de fichier
survient, ce descripteur sert d’indice dans cette table pour
trouver l’i-node relative au fichier concerné.

2009/2010 Systèmes d'Exploitation Evolués 89 2009/2010 Systèmes d'Exploitation Evolués 90

11. Implémentation des processus sous Linux (5) 11. Implémentation des processus sous Linux (6)

L’ordonnancement sous Linux


 L’accounting :
Il s’agit d’un algorithme d’ordonnancement à deux niveaux :
 Un pointeur sur une table contenant le temps CPU en mode
 L’algorithme de haut niveau (swapper) :
utilisateur et en mode noyau consommé par le processus.
 déplace le processus entre mémoire et disque afin de
 Certains systèmes définissent une limite pour le temps
permettre à tous d’avoir une chance d’être exécuter;
CPU consommable par un processus, la taille maximale de sa
pile, le nombre de cadre de pages qu’il peut utiliser, etc.  utilise plusieurs files d’attente, dont chacune correspond à
un niveau de priorité;
 La pile noyau :
 un processus s’exécutant en mode utilisateur a une priorité
 la pile utilisé par le processus lorsqu’il s’exécute en mode positive;
noyau.
 un processus s’exécutant en mode noyau a une priorité
négative;
 seuls les processus en mémoire et prêts à l’exécution sont
placés dans ces files (un processus bloqué sera enlevé de sa file);

2009/2010 Systèmes d'Exploitation Evolués 91 2009/2010 Systèmes d'Exploitation Evolués 92

23
11. Implémentation des processus sous Linux (7) 11. Implémentation des processus sous Linux (8)

L’ordonnancement sous Linux L’ordonnancement sous Linux


 L’algorithme de haut niveau (suite) :  L’algorithme de bas niveau :
 un processus sélectionné sera exécuté pendant au plus un
quantum ou se bloquer avant.  sélectionne le processus à exécuter dans l’ensemble des
processus en mémoire et prêts à l’exécution;
 dans le premier cas, il est replacé en fin de file et
l’ordonnanceur recommence.  quand il s’exécute, il consulte les files en partant de la plus
prioritaire jusqu’à en trouver une non vide;
 les processus de même classe de priorité partagent la CPU
suivant un algorithme de type tourniquet (Round Robin);  le premier processus de cette file est sélectionné et
démarre
 quand un processus utilise son quantum, il sera déplacé
vers la fin de sa file;
 chaque seconde, la priorité de chaque processus est mise à
jour à l’aide de la formule :
priorité = CPU-usage + nice + base

2009/2010 Systèmes d'Exploitation Evolués 93 2009/2010 Systèmes d'Exploitation Evolués 94

12. La gestion de la mémoire sous Linux (1) 12. La gestion de la mémoire sous Linux (2)

Tout processus Linux est associé à un espace d’adressage en  Pour partager un programme (éditeur de texte) entre
trois zones : plusieurs utilisateurs, quelques version Linux ont la notion de
segment de texte partagé (shared text segment)
 Le segment de texte : instructions exécutables du
programme (lecture seule)  Data (Le segment de données ) et stack ne sont jamais
partagées
 Le segment de données (initialisées ou non initialisées
BBS) : variables, vecteurs, etc. peut être changé, peut
changer de taille (appel bib. C : malloc)

 La pile (stack): contient a début de l’exécution du


 Version avant 3BSD (Berkley Software Distribution) : Swapping
programme toutes les variables de l’environnement (shell)
et la commande tapée pour lancer le programme  Version après 3BSD : Paging

2009/2010 Systèmes d'Exploitation Evolués 95 2009/2010 Systèmes d'Exploitation Evolués 96

24
12. La gestion de la mémoire sous Linux (3) 12. La gestion de la mémoire sous Linux (4)

Fonctionnement du Swapper Fonctionnement du Swapper

Swap out quand manque d’espace dans la mémoire


Swap in : toutes les 4-5 secondes
 fork, brk, ou débordement de pile
 Swapper cherche un processus prêt sur le disque
 choix d’une victime :
1. ∃processus bloqués : critère C = prio + temps résidence  critère de choix : temps le plus long sur le disque
victime = le plus grand C
 éventuellement swap out d’un autre processus
2. sinon : parmi les non bloqués, victime = plus grand C
2009/2010 Systèmes d'Exploitation Evolués 97 2009/2010 Systèmes d'Exploitation Evolués 98

12. La gestion de la mémoire sous Linux (5) 12. La gestion de la mémoire sous Linux (6)

Fonctionnement du Swapper
Fonction de pagination

 Swapper : swap in (toutes les 4-5 secs) + swap out (à la  Toutes les 250 msec. le daemon (démon) est activé
demande)
 Algorithme :
 Changement de comportement quand :
 nombre de cadres libres ≥ lotsfree? (paramètre du système,
 plus de processus swappés typiquement le ¼ de la mémoire)

 si oui : sleep
 trop de processus en mémoire (Thrashing : S'il y a trop de
défauts de page, un processus peut passer plus de temps en attente de pagination
 sinon : transférer des pages sur le disque
qu'en exécution )
but : avoir des pages libres constamment
min. de 2 sec. en mémoire avant de swapper un processus
 Algorithme de traitement de défaut basé : sur “seconde
chance” (ou “Clock Algorithm”)

2009/2010 Systèmes d'Exploitation Evolués 99 2009/2010 Systèmes d'Exploitation Evolués 100

25
12. La gestion de la mémoire sous Linux (7) 12. La gestion de la mémoire sous Linux (8)

Clock Algorithm classique Two-Handed Clock Algorithm

 garde 2 aiguilles,
 les 2 passes prennent trop de temps
 au début, met à 0 le bit d’usage du cadre pointé par l’aiguille en avant,
Les cadres sont examinés selon une liste circulaire (contour de l’horloge) :  puis vérifie le bit d’usager du cadre pointée par l’aiguille en arrière,
 passage 1 : lorsqu’une page est pointée par l’aiguille de l’horloge, son bit  avance les deux aiguilles
d’usage est mis à 0 (cleared)
 passage 2 : une page non accédée aura toujours son bit d’usage 0 et donc
sera libérée (mise sur la liste des cadres libres sans être effacée)

2009/2010 Systèmes d'Exploitation Evolués 101 2009/2010 Systèmes d'Exploitation Evolués 102

12. La gestion de la mémoire sous Linux (10) 12. La gestion de la mémoire sous Linux (11)

Two-Handed Clock Algorithm Thrashing


 Chaque fois que le démon est réveillé, les 2 aiguilles sont Si le taux de défaut de pages est très grand : appel au
avancées moins d’un tour de l’horloge (selon le nombre de swapper
cadre à libérer pour atteindre lotsfree),
 si ∃ des processus idle depuis >= 20sec.
 Si les 2 aiguilles sont gardées proches l’une de l’autre,
uniquement les pages les plus utilisées auront la chance swap out le moins actif récemment (max. idle time)
d’être accédées entre le passage de l’aiguille avant et de  sinon parmi les 4 plus gros processus (taille mémoire)
l’aiguille arrière,
swap out le plus vieux (en mémoire)
 Si les deux aiguilles sont gardées à 359°à part, on r etrouve
le Clock Algorithm classique  si nécessaire plusieurs processus peuvent être
swappés

2009/2010 Systèmes d'Exploitation Evolués 103 2009/2010 Systèmes d'Exploitation Evolués 104

26
13. Entrées/Sorties dans Linux (1)

 Intégrées en tant que fichiers spéciaux (special files) dans le


répertoire de fichiers (file system)
 Ayant un chemin et accédés comme tout autre fichier ( /dev/tty1,
/dev/fd0, /dev/hda1, etc.)
 Deux types de périphériques (fichiers spéciaux) :
 périphériques blocs: séquence de blocs à accès aléatoires
(les disques et les bandes)

 périphériques caractère : séquences de caractères


(terminaux, imprimantes)
 Chaque fichier est décrit par un inode et est accessible
indifféremment des autre à travers l’interface du SGF.

2009/2010 Systèmes d'Exploitation Evolués 105

27

Vous aimerez peut-être aussi