Vous êtes sur la page 1sur 36

Université Abdelmalek Essaadi

Ecole Nationale des Sciences Appliquées Al Hoceima

Mohamed CHERRADI
Ingénieur d’Etat en Informatique
Email: mcherradi.ensah@gmail.com

Année Universitaire 2023 / 2024


2

Introduction aux système d’exploitation Linux


Plan
3
Introduction
4

Description du système d'exploitation:

 Un système d'exploitation, abrégé parfois SE, (ou Operating System


en anglais, que l'on rencontre souvent sous l'abréviation OS) représente
l'ensemble des programmes qui pilote les différents composants (disque
dur, écran, processeur, mémoire etc...) de l'appareil informatique et lui
permet donc de fonctionner.

 Il permet donc de faire l'interface entre l'utilisateur et le matériel


informatique, il est d'ailleurs chargé en premier lors du démarrage de
l'appareil.
Introduction
5

Composantes du système d'exploitation


 Le système d'exploitation est composé d'un ensemble d'applications permettant de gérer les
interactions avec le matériel.

 Parmi cet ensemble de logiciels on distingue généralement les éléments suivants :


 Le noyau (kernel) représentant les fonctions fondamentales du système d'exploitation
telles que la gestion de la mémoire, des processus, des fichiers, des entrées-sorties
principales, et des fonctionnalités de communication.

 L'interpréteur de commande (shell - coquille par opposition au noyau) permettant la


communication avec le système d'exploitation par l'intermédiaire d'un langage de
commandes, afin de permettre à l'utilisateur de piloter les périphériques en ignorant tout des
caractéristiques du matériel qu'il utilise, de la gestion des adresses physiques, etc.

 Le système de fichiers (file system) permet d'enregistrer les fichiers dans une arborescence.
Introduction
6
Introduction
7

 Quelques OS...
Introduction
8

 Origine des systèmes d'exploitation


Présentation du GNU/LINUX
9

 Qu'est-ce que Linux (ou GNU/Linux)?


 Linux est fondé sur le système d'exploitation Unix

 On a l'habitude de dire que Linux est un système d'exploitation. En


réalité, Linux, c'est uniquement le cœur (on dit le "noyau") du système
d'exploitation GNU/Linux.

 Le noyau s'occupe : la gestion de la mémoire, l'accès aux périphériques


(disque dur, lecteur de CD-Rom, clavier, souris, carte graphique...), la
gestion du réseau, le partage du temps microprocesseur entre les
programmes (multi-tâche), etc.
 GNU/Linux :
 GNU : projet GNU

 Linux : noyau Linux


Présentation du GNU/LINUX
10

 Un peu d’histoire
 Le projet GNU:
 GNU est l’acronyme de GNU's Not Unix.
 Initié par Richard Stallman en 1984.
 Objectif: Créer un nouveau système d'exploitation fonctionnant
comme Unix
(les commandes restant les mêmes).
 Etat 90: Le projet GNU possède une version utilisable de tous les
éléments nécessaires à la construction d'un système d'exploitation à
l’exception de la composante la plus central : le noyau.

Richard Stallman, fondateur du projet GNU


Présentation du GNU/LINUX
11

 Un peu d’histoire
 Noyau Linux :
 initié par Linus Torvalds en 1991.
 De Freax à Linux
 Initialement appelé Freax = free + freak + Unix (par Linus
Torvalds)
 Nom définitif : Linux = Linus + Unix (grâce à Ari Lenk)
Présentation du GNU/LINUX
12

 Un peu d’histoire
 Richard Stallman créait les programmes de base:
o programme de copie de fichier, de suppression de fichier, éditeur de texte, …

 Linus s'était lancé dans la création du « cœur » d'un système d'exploitation : le


noyau.

 Le projet GNU (programmes libres) et Linux (noyau d'OS) ont fusionné pour
créer GNU/Linux.
Présentation du GNU/LINUX
13

 Logiciel libre
 La principale originalité de GNU/Linux par rapport à d'autres est d'être constitué d'un noyau
libre et de logiciels libres.
 L'expression « Logiciel Libre » fait référence à la liberté et non pas au prix. C’est à dire la «
liberté d'expression », pas à « l'entrée libre ».

 L'expression « Logiciel Libre » fait référence à la liberté pour les utilisateurs d'exécuter, de
copier, de distribuer, d'étudier, de modifier et d'améliorer le logiciel

 « Logiciel libre » ne signifie pas « non commercial ». Un logiciel libre doit permettre
l'usage commercial, le développement commercial et la distribution commerciale

 Un logiciel libre est un logiciel qui est distribué selon une licence libre

 Le code est d’ailleurs disponible sur le site de Linux Kernel Archives:


https://www.kernel.org/
Présentation du GNU/LINUX
14
 Distributions GNU / Linux
 Pour l'utilisateur final, GNU/Linux se présente sous la forme d'une distribution
 Une distribution Linux est donc un ensemble cohérent de logiciels (libres pour la plupart)
assemblés autour du noyau Linux commun à toutes.
 On appelle Distribution GNU/Linux une solution prête à être installée par l'utilisateur final.

 Il existe une très grande variété de distribution, ayant chacune des objectifs et une philosophie
particulière.

 Les éléments différenciant les distributions sont :


 la facilité de mise en œuvre,
 nombre de logiciels disponibles,
 la notoriété et la communauté
 l'environnement de bureau utilisé (GNOME, KDE, ...),
 le gestionnaire de paquet utilisé pour distribuer un logiciel (deb, RPM, …)
 le mainteneur de la distribution (généralement une entreprise ou une communauté).
Présentation du GNU/LINUX
15

 Distributions GNU / Linux


Présentation du GNU/LINUX
16

Distributions GNU / Linux


Distributions commerciales: incluent de l'assistance technique. Le code
source est libre, mais les binaires ne sont pas libres d'accès.
 Red Hat: La plus populaire. Fiable, sûre, conviviale et facile à installer,
prise en charge par tous les fournisseurs de logiciel et de matériel.
 Suse (Novell): L'alternative principale. Face à installer, conviviale et
stable. Obtiens le support des fournisseurs de logiciel et de matériel..
 Mandriva (anciennement Mandrake): Conviviale, facile à installer,
plus innovante, mais moins stable. Cible principalement les utilisateurs
individuels. Peu pris en charge par les fournisseurs de logiciel et de
matériel.
Présentation du GNU/LINUX
17

Distributions GNU / Linux


Distributions communautaires: sources et binaires sont librement disponibles. Fourni
sans assistance technique obligatoire.
 Fedora Core: Stable, sûre, conviviale, facile à installer. Sortie fréquente de
nouvelles versions complètes.
 Ubuntu Linux: La distribution communautaire qui progresse le plus. Basé sur
Debian mais avec une version stable tout les 6 mois.
Conviviale pour les utilisateurs. Bonne pour les débutants.
 Debian: Très stable et sûre, mais plus difficile à configurer et à installer. Conviviale
pour les développeurs mais pas encore pour les utilisateurs. Version stables pas
assez fréquentes (tous les 2 ou 3 ans). La meilleure pour les serveurs, mais pas pour
les débutants.
 Mandriva Community: Facile à installer, sûre, conviviale, sortie fréquente de
versions complètes, mais moins stable (pas assez de tests et de prise en compte des
retours des utilisateurs et testeurs).
Présentation du GNU/LINUX
18

 $ uname (signifie: unix name ) est une commande Unix qui affiche les
informations systèmes sur la machine sur laquelle elle est exécutée.
 $ uname -a affiche toutes les informations disponibles sur la version

du système d’exploitation et le type de la machine.

Linux proxysvr 2.6.18-128.el5 #1 SMP Wed Dec 17 11:41:38 EST


2008 x86_64 x86_64 x86_64

GNU/Linux (nom du serveur, version et date du noyau, type de
plateforme, type de système)
Présentation du GNU/LINUX
19

Licences – General Public License


 La licence GPL fixe les conditions légales de distribution des logiciels libres du
projet GNU.
 Richard Stallman et Eben Moglen en sont les auteurs.
 L'objectif de la licence GNU GPL est de garantir à l'utilisateur les droits suivants
sur un programme :
 La liberté d'exécuter le logiciel, pour n'importe quel usage.
 La liberté d'étudier le fonctionnement d'un programme et de l'adapter à
ses besoins, ce qui passe par l'accès aux codes sources.
 La liberté de redistribuer des copies.
 La liberté d'améliorer le programme et l'obligation de rendre publiques
les modifications afin que l'ensemble de la communauté en bénéficie.
Présentation du GNU/LINUX
20

Licences – General Public License


 La licence GPL requiert que les modifications et les travaux
dérivés soient aussi placés sous licence GPL.
 Ne s’applique qu’aux logiciels distribués (donc pas utilisés en
interne, en cours de développement, en phase de test, etc.)
 Intégrer du code d’un programme GPL dans un autre implique de
placer ce programme sous GPL.
 Tout programme utilisant du code GPL (lié statiquement ou
dynamiquement) est considéré comme une extension de ce code
et donc placé sous GPL.
Présentation du GNU/LINUX
21

 Un système informatique bien structuré met en œuvre trois concepts clefs:

 les utilisateurs, qui identifient de manière non ambigüe les acteurs qui
peuvent utiliser le système, leurs droits et ce que le système peut faire en leur
nom.
 les fichiers, qui sauvegardent de manière fiable à la fois les données, les
programmes qui les manipulent et les paramètres qui déterminent les
comportements du système et de ses services.
 les processus, qui sont les programmes en train de « tourner » sur la machine à
un moment donné.
Les utilisateurs
22

 GNU/Linux est un systeme Multi-Utilisateurs


 Chaque personne accédant au système est identifiée par un nom d’utilisateur
(i.e. login) et un mot de passe (i.e. password).
 Chaque utilisateur bénéficie de permissions : exécution de certains
programmes, lecture de certaines données, écriture de fichiers dans une limite
de taille et dans seulement certains répertoires.
 Chaque utilisateur bénéficie d’un espace de travail réservé sur le disque. Cet
espace de travail est un répertoire de l’arborescence dans lequel l’utilisateur a
tous les droits : il peut y créer des sous-répertoires, y écrire des fichiers, y
installer des programmes et applications. Toutes ses données et préférences
personnelles y sont regroupées. Ce répertoire est appel´e ”Répertoire
Personnel” ou ”Home Directory”. Il est en général placé dans un répertoire
qui s’appelle /home/ et porte le nom de l’utilisateur : /home/nom utilisateur/
Les utilisateurs
23

 Superutilisateur – Root

 Certains utilisateurs ont des permissions étendues pour administrer


le système et effectuer des opérations interdites `a l’utilisateur
normal.

 L’utilisateur root a tous les droits dans le système (ex. : il peut


changer les permissions de n’importe quel fichier, il fixe les noms
d’utilisateur et les mots de passe, il peut installer des programmes et
librairies dans les répertoires système, . . .)
Système de fichiers
24

Presque tous dans GNU/Linux est un fichier!

 Fichiers ordinaires Les fichiers texte (.txt,.doc,.odt…), les


programmes.
 Répertoires Les répertoires ne sont juste que des fichiers listant
plusieurs fichiers.
 Liens symboliques Fichiers faisant référence au nom d'un autre
fichier.
 Périphériques et dispositifs La lecture et l'écriture à partir d'un
dispositif se fait comme un fichier.
 Pipes Utiliser pour mettre en cascade plusieurs programmes

 Sockets Communication inter processus.


Système de fichiers
25

 La commande file permet de savoir quel est le type d’un fichier.

 Le nom de fichier est souvent choisi pour indiquer son type via sont
suffixe (par exemple « .txt » pour du texte, « .mp3 » pour du son,
etc). Mais cette indication n’est pas toujours fiable puisqu’on peut
sans problème renommer un fichier à sa guise. La commande $ file,
en revanche, analyse le contenu du fichier qu’on lui donne en
argument pour déterminer son type.
Système de fichiers
26

 Exemple :

$ file /home
/home: directory

$file /etc/passwd
/ etc/ passwd: ASCII text

$ file /dev/audio
/dev/audio: character special
Système de fichiers
27

Noms de fichiers:
Depuis le début d'Unix, les noms de fichiers ont les
caractéristiques suivantes:
 Sensibles aux majuscules / minuscules.

 Pas de longueur limite évidente.


 Peuvent contenir tous caractères (incluant l'espace, à
l'exception de /).
 Les extensions d'un nom de fichier n'ont pas besoin et ne sont
pas interprétés. Ils sont justes utilisés pour les utilisateurs .
Outils de développement et d’exécution de programme
28

 L’interpréteur de commandes (shell) : permet d’accéder aux


fonctions du système à l’aide d’un langage de commande.

 Les compilateurs : sont chargés de traduire des programmes


écrits dans des langages de haut niveau en une suite
d’instructions en langage machine.

 Les éditeurs de textes : permettent de saisir et modifier du


texte (par exemple des programmes)
Outils de développement et d’exécution de programme
29

Interpréteurs de commandes
Interpréteurs de commandes: outils pour exécuter des commandes tapées
par un utilisateur.
 Appelés “shells” (coquilles) parce qu’elles masquent sous leur surface les
détails du système d’exploitation sous-jacent .
Les commandes sont tapées dans un terminal en mode texte, constitué soit
par une fenêtre dans un environnement graphique, soit par une console sur
un écran en texte seul.
Les résultats sont aussi affichés sur le terminal. Aucun graphique n’est
nécessaire.
Les interpréteurs de commandes peuvent être programmables: ils
fournissent toutes les ressources nécessaires pour l’écriture de programmes
complexes (variables, conditions, boucles...)
Outils de développement et d’exécution de programme
30

Interpréteurs de commandes
Interpréteurs de commandes les plus connus et les plus populaires
 sh: Le Bourne shell (obsolète)

- Le shell de base qu’on trouve traditionnellement dans les systèmes


Unix, par Steve Bourne.
 csh: Le C shell (obsolète)
- Shell avec une syntaxe baseé sur le language C.
 tcsh: Le TC shell (toujours très populaire)
- Une implémentation compatible avec le C shell, avec des
fonctionnalités avancées (complète les noms de commandes, rappel de
commandes antérieures et bien d’autres...)
 bash: Le Bourne Again shell (le plus populaire)
- Une version améliorée de sh avec de nombreuses fonctions nouvelles
Outils de développement et d’exécution de programme
31

Les Compilateurs
 GCC est le compilateur standard sous Linux

 GCC fut le premier compilateur portableANSI C avec optimisation


 GCC a été étendu à d'autres langages que le C ou le C++ (Fortran,ADA, Java,
Objective-C, Lisp, Smalltalk, ...)
 L'acronyme GCC réfère maintenant à "GNU Compiler Collection"

 GCC est écrit en C et peut se compiler lui-même

 Pour les programmes C et C++, GCC est une suite d'outils composée
(essentiellement) de :
 Préprocesseur (cpp)
 Assembleur (gas)
 Editeur de lien ou linker (ld)
 La commande gcc se charge d'invoquer le préprocesseur, l'assembler et le linker
Outils de développement et d’exécution de programme
32

Les Compilateurs
 make est un utilitaire permettant d'invoquer des commandes
générant des fichiers, mais seulement si elles sont nécessaires
 Pour chaque commande, on spécifie quels sont les fichiers dont
elle dépend
 La commande n'est exécutée que si un ou plusieurs de ces fichiers
est plus récent que le fichier généré
 make sert principalement à faciliter la compilation et l'édition de
liens puisque le résultat final dépend d'opérations précédentes
 Les règles sont enregistrées dans un fichier Makefile

 Une règle peut dépendre d'une autre

 Il est possible de définir et d'utiliser des variables


Outils de développement et d’exécution de programme
33

Les éditeurs de textes:


 Nano
 Vim
 Nedit
 Vi
 Emacs
 Xemac
 etc
Les processus
34
 Lesprocessussont la base du multitâche sousLinux
 Lorsqu'un programme s’exécute, le système va créer un processus qui lui est associé en plaçant les données et le code du
programme en mémoire et en créant une pile d'exécution. De ce fait unprocessus est une instance (dynamique) d'un programme
auquel estassocié unenvironnement processeur(CO,PSW,registres) et un environnement mémoire.
 Au sein des systèmes UNIX, les processussont identifiés par leur PID (ou Process Identifiant, un identifiant
unique) et y sont organisés de façon hiérarchique.
 Il existe une relation père / fils entre les processus, unprocessus fils est le résultat de l'appel système de la primitive fork() par
le processus père qui duplique son propre code pour créer un fils. Le PID du fils est renvoyé au processus père pour qu'il
puisse dialoguer avec.
 Chaque fils possède l'identifiant de son père, le PPID (ou Parent ProcessIdentifiant).
 Unprocessusest composé de :
 Environnement processeur (registres)
 Code programme exécuté
 Variableset pile mémoire
 Descripteurs de fichiers ouverts
 Variablesd'environnement
 Un ou plusieurs threads
 Typiquement, code et librairiessystèmessont partagésentre processus
Les processus
35

 PID 1 est lancé par le noyau au boot (typiquement init)


 Chaque processus s'exécute sous l'identité d'un utilisateur (UID) et d'un
groupe (GID)
 UID et GID réels : utilisateur ayant lancé le programme
 UID et GID effectifs : privilèges (droits) accordés au processus
 Chaque processus a un répertoire de travail (origine de l'interprétation des
chemins relatifs)
 Chaque processus a sa date et heure de création (en secondes depuis l’epoch)
 Le noyau garde les temps CPU consommés par un processus (en mode
utilisateur et en mode noyau)
 Le noyau utilise d'autres structures internes pour chaque processus (table des
descripteurs de fichiers ouverts par exemple)
Les processus
36

 Le système partitionne les processus en sessions


 Un processus appartient à une (seule) session
 Par défaut, la session d'un processus est celle de son père
 Un processus qui créé une session est le leader de cette session
 Une session est identifiée par le PID du processus leader
 Une session est typiquement liée à un (pseudo)-terminal
 Une session peut être partitionnée en groupes de processus
 Un processus appartient à un (seul) groupe
 Dans une session, un groupe de processus est en avant-plan (reçoit les
données du clavier et affiche sur le terminal)
 Les autres groupes sont en arrière plan (ne peuvent accéder au terminal)
 Ces groupes permettent l'envoi de signaux à un ensemble de processus
 Un groupe est identifié par le PID du processus leader

Vous aimerez peut-être aussi