Pr BELKHIR ABDELKADER

publicité
UNIX
Pr BELKHIR ABDELKADER
Module Système d’Exploitation
Dpt Informatique
USTHB
Master Sécurité des Systèmes Informatiques
1. INTRODUCTION :
Les travaux menés par principalement Ken Thompson et Dennis Ritchie pour la mise eu point d’un système de
fichiers ont été vite détournés pour la réalisation d’une première version du système de fichiers UNIX.
Après plusieurs tentatives de mise au point d’un système d’exploitation sur l’ordinateur GE645, ils implantent
leur système sur la machine GECOS avec support de fichiers le PDP7 en intégrant une première version du
système de fichiers UNIX : le sous système de processus et un petit ensemble de programmes utilisateurs. Ils se
sont vite rendus compte qu’ils pouvaient se dispenser du système GECOS comme environnement de
développement. Alors leur nouveau système a été baptisé UNIX. Il y a eu par la suite le développement de
plusieurs versions du système UNIX à travers différents projets. En 1971, le système UNIX est porté sur PDP11,
en 1973 l’ensemble du système UNIX est écrit en langage C
UNIX a été écrit à 95% en langage C, ce qui permet sa portabilité. De plus, sa conception modulaire avec des
interfaces bien définies a contribué à sa popularité.
1.1 Portabilité :
Un logiciel est portable lorsqu’il peut fonctionner sur des machines différentes. Il faut considérer deux sortes de
portabilités : celle du système lui-même et celle des utilitaires. Le noyau du système UNIX ainsi que ses
utilitaires sont écrits dans un langage portable qu’est le langage C.
1.2 Capacité multi-utilisateurs :
Le système UNIX donne la possibilité à plusieurs utilisateurs d’accéder aux ressources du système.
1.3 Capacité multi-tâches :
UNIX offre à l’utilisateur la possibilité d’accomplir plus d’une tâche à la fois.
1.4 Système de fichiers :
Le système de fichiers UNIX permet une structure hiérarchique. Il permet un contrôle souple de l’accès aux
données utilisateurs, à un groupe d’utilisateurs ou l’ensemble des utilisateurs.
1.5 Programmes modulaires :
Le système est composé d’utilitaires dont chacun est destiné à une tâche précise.
1.6 Interface utilisateur :
Il est essentiellement orienté commandes. Cependant, il y a eu le développement d’interface graphique avec Xwindows. L’interface utilisateur sous UNIX est appelé shell (sh, csh, ksh,…). Il joue le rôle d’interprêteur de
commandes et celui d’un langage de programmation.
2. ARCHITECTURE D’UNIX :
Le système UNIX se caractérise par deux concepts principaux : le système de fichiers occupe de la place et les
processus ont une vie. Ces deux composants constituent les deux sous systèmes dominants du système.
La structure d’UNIX est constituée de quatre couches concentriques :
1. Le noyau central : contient les fonctions de base de gestion de processus ; c’est un automate d’affectation de
type temps partagé.
2. Le noyau complet : contient les conducteurs d’interfaces d’entrée/sortie
3. La coquille (shell) : est l’interprêteur de commandes par lequel l’utilisateur interagit avec UNIX.
4. La dernière couche contient les outils et les applications : l’ensemble des programmes et utilitaires qui ont
été écrits pour améliorer le système.
utilitaires
shell
noyau
hardware
Pr BELKHIR A
2
Module Système d’Exploitation
Dpt Informatique
USTHB
Master Sécurité des Systèmes Informatiques
2.1 L’interprêteur de commandes :
L’interprêteur de commandes UNIX est appelé shell, son fonctionnement obéit à l’algorithme suivant :
Lecture de la commande suivante
(par défaut, sur le clavier)
analyse de la syntaxe
oui
<erreur>
non
écrire un message sur la console
non
< commande interne ?>
fourche (« fork »)
oui
création d’un
processus fils
exécuter le code correspondant
à la commande interne
exécuter le programme
à la commande externe
attendre la fin
du processus fils
signaler la fin du
processus
2.2 Structure du noyau :
Il partitionne l’ensemble des appels systèmes en deux groupes, ceux qui interagissent avec le sous système de
contrôle de processus et ceux qui interagissent avec le sous système de fichiers.
 Le sous système de fichiers gère les fichiers, alloue de l’espace fichier, récupère l’espace libre et contrôle
l’accès aux fichiers et récupère les données pour les utilisateurs.
 Le sous système de processus interagit avec le sous système de fichiers à travers un ensemble spécifique
d’appels systèmes tels que : open (ouverture), close (fermeture), read (lire), write (écriture)…
Le sous système de contrôle de processus est responsable de la synchronisation, communication de processus, de
la gestion de la mémoire et du scheduling de processus. Certains appels systèmes de contrôle de processus sont
fork (création d’un nouveau processus), exec (surcharge d’image d’un processus), wait (synchronise l’exécution
du processus avec la fin de processus déjà crées par fork).
Pr BELKHIR A
3
Module Système d’Exploitation
Dpt Informatique
USTHB
Master Sécurité des Systèmes Informatiques
Programmes utilisateurs
bibliothèques
Interface appel système
Niveau utilisateur
Niveau noyau
Communication
Interprocessus
Sous système
de fichiers
Sous système
De contrôle
De processus
Scheduler
Buffer cache
Caractère
Gestionnaire
De la
mémoire
bloc
driver
Contrôle hardware
Niveau noyau
Niveau hardware
Hardware
Diagramme du noyau du système
2.2.1 La gestion de processus et ordonnancement :
Un programme est un fichier exécutable, un processus est une instance du programme lors de son exécution.
Plusieurs processus peuvent s’exécuter simultanément sur le système UNIX, et plusieurs instances du
programme peuvent coexister simultanément.
2.2.1.1 Implantation des processus :
Un processus UNIX est représenté par 3 zones mémoires :
1. Segment texte
2. Segment de données utilisateur
3. Segment de données système
1.
Segment texte : (User Text Segment) c’est le code du programme qui s’exécute. Ce segment est accessible
en lecture seule. Lorsque plusieurs processus exécutent le même programme au même instant, le système les
fait partager une seule copie de code en mémoire par l’intermédiaire d’une table supplémentaire gérée par le
système : la table des textes.
2.
Segment de données utilisateur : (User Data Segment) il contient les données modifiées par le programme.
Le système n’utilise pas ce segment pour stocker ses propres données ; en particulier il n’y met pas de
tampons d’entrée/sortie.
Pr BELKHIR A
4
Module Système d’Exploitation
Dpt Informatique
USTHB
3.
Master Sécurité des Systèmes Informatiques
Segment de données système : (System Data Segment) il contient toutes les données dont le système a
besoin quand le processus est actif (contexte, fichiers ouverts, facturation,….)
Table des
processus
Segment
De données
systèmes
Table des textes
Structures résidant
en mémoire
Segment
données
processus
Structures pouvant être
mises sur disque
Segment
texte
Espace disque
La durée de vie d’un processus peut être conceptuellement divisée en un ensemble d’états qui décrivent le
processus.
1.
2.
3.
4.
5.
6.
7.
8.
9.
Le processus est en exécution en mode utilisateur
Le processus est en exécution en mode noyau
Le processus n’est pas en exécution mais est prêt à l’exécution dès qu’il sera élu
Le processus est endormi et réside en mémoire principale
Le processus est prêt pour s’exécuter, mais le swapper doit swapper le processus en mémoire principale
avant que le noyau l’élise
Le processus est endormi, le swapper a le processus en mémoire secondaire afin de laisser place dans la
mémoire principale.
Le processus retourne du mode noyau au mode utilisateur
Le processus est crée, le processus existe, mais n’est pas prêt pour exécution et non endormi. Cet état est
l’état de départ de tous les processus (sauf swapper : processus 0)
Le processus exécute l’appel système « exit » et se trouve dans l’état zombie. Le processus n’existe plus,
mais il reste un enregistrement contenant le code de sortie et certaines valeurs statistiques pour ses processus
parents.
Chaque processus est associé un certain nombre d’informations. Ces informations contribuent à l’identification
et la gestion du processus. On dénote :
- numéro de processus PID (Process Identifier)
- numéro d’utilisateur UID (User IDentifier)
- numéro de groupe GID (Group IDentifier)
- durée de traitement utilisée (temps cpu) et priorité du processus
- référence au répertoire de travail courant
- table de référence des fichiers ouverts
PID (Process Identifier) : le système étant multi-tâche, le PID est moyen d’identifier tout processus dans le
système. Chaque processus peut créer lui-même des processus ; ces nouveaux processus sont alors appelés
processus fils. Ces derniers connaissent leur origine par l’intermédiaire de PPID (PID du père)
Pr BELKHIR A
5
Module Système d’Exploitation
Dpt Informatique
USTHB
Master Sécurité des Systèmes Informatiques
Mode utilisateur
1
zombie
9
Mode noyau
2
Endormi en
mémoire
7
préemption
Prêt en
mémoire
4
3
crée
8
6
Endormi en mémoire
secondaire
5
Prêt en mémoire
secondaire
Diagramme de transition d’état d’un processus
UID et GID : Chaque processus dispose des numéros UID et GID à sa création. Ce qui lui permettra d’avoir les
autorisations d’accès aux fichiers.
Durée de traitement et priorité : La stratégie de scheduling est une variante de Roud Robbin basée sur les
priorités. Ce qui permettra de partager le temps CPU entre les processus.
Répertoire courant du processus : il indique le répertoire courant de travail et d’accès aux fichiers.
Table des fichiers ouverts : elle permet l’accès aux fichiers en lecture et écriture. Les trois premières entrées sont
prédéfinies : stdin (clavier), stdout (écran) et stderr (écran pour erreur).
2.2.1.2 Ordonnancement des processus :
L’ordonnancement utilise la stratégie Round Robbin avec plusieurs files rétroactives. Le schéduler alloue le CPU
à un processus, le désalloue dès qu’il termine son quantum et le met dans l’une des files de priorité.
Le scheduler utilise des priorités variables ; plus un processus a utilisé l’unité centrale pendant le dernier
intervalle, plus le système lui donne une faible priorité. Toutes les priorités sont réaffectées à la fin de chaque
intervalle. La fonction de scheduling utilise le temps relatif d’exécution comme paramètre afin de déterminer le
prochain processus à élire. Chaque processus actif dispose d’une priorité de scheduling. Le noyau recalcule la
priorité du processus en exécution quand il passe du mode noyau au mode utilisateur et réajuste périodiquement
la priorité de chaque processus.
queue
CPU
2.2.2 Gestion des entrées/sorties :
Le système d’entrée/sortie est séparé en deux sous-systèmes indépendants : les entrées/sorties structurées (par
blocs) et les entrées :sorties non structurées (par caractère).
Chaque périphérique est identifié par deux numéro et une classe (bloc ou caractère).
Pr BELKHIR A
6
Module Système d’Exploitation
Dpt Informatique
USTHB
Master Sécurité des Systèmes Informatiques
2.2.2.1 Imprimante :
Le service d’impression est de type spool, il sert d’intermédiaire entre les utilisateurs et les imprimantes. Le
service d’impression appelé service LP, assure le stockage des requêtes, leur mise en forme et leur
acheminement.
a) Fonctionnement
L’utilisateur achemine ses requêtes vers une destination qui peut être soit le nom logique d’une imprimante soit
le nom d’une classe. Une classe est une liste ordonnée de noms logiques d’imprimantes. lorsqu’une requête est
envoyée à une classe ; le choix est effectué par le gestionnaire en fonctions des disponibilités.
Une fois le service d’impression configuré et initialisé, une impression de fichier se déroule en trois étapes :
- l’utilisateur exécute la commande lp qui transmet une requête, elle sera stockée sur le répertoire /usr/spool
- le gestionnaire (lpsched) analyse et met en forme la requête et l’achemine vers un programme d’interface
- le programme d’interface activé par le gestionnaire, assure l’impression
b) commande utilisateur
La commande lp permet l’envoi d’une requête de demande d’impression d’une liste de fichiers. La commande
cancel permet de supprimer des requêtes en instance. Toute requête en cours d’impression dont la suppression
est demandée par cancel est interrompue et annulée. La commande lpstat permet de connaître la configuration du
service ainsi que l’état des requêtes en instance.
2.2.3 Gestion de la mémoire :
La gestion de la mémoire influe sur l’ordonnancement des processus. En effet, au moins une partie du processus
doit être en mémoire pour l’exécuter. le CPU ne peut pas exécuter un processus qui est entièrement en mémoire
secondaire. Historiquement, le système UNIX transférait tout le processus de la mémoire centrale vers la
mémoire secondaire. Ensuite, il y a eu la stratégie « pagination à la demande » qui consiste à transférer des pages
mémoires entre la mémoire centrale et la mémoire secondaire ; le système V utilise cette stratégie. En général, la
gestion de la mémoire obéit à la gestion de la mémoire virtuelle (pagination à la demande).
2.2.4 Gestion des fichiers :
Les système de gestion de fichiers est hiérarchisé selon la structure d’arbre. Il contient trois types de fichiers :
 Fichiers ordinaires
 Fichiers catalogues
 Fichiers spéciaux
2.2.5 La structure d’un disque :
Un disque est vu par le système comme un tableau de blocs de 512 octets accessibles de façon aléatoire. Le
système de gestion découpe le disque en quatre régions.
Bloc0
Bloc1
Liste -i
Zone de stockage
Bloc0 : il est réservé pour la mise en route du système
Bloc1 : est appelé le super bloc ; il contient entre autres, le nom du disque (label), la taille du disque et les
frontières des autres zones.
Liste-i : elle contient la liste des définitions des fichiers. Chaque définition est une structure de 64 octets appelée
un nœud-i (i-node). Le numéro d’un nœud-i dans la liste-i n’est autre que le nombre-i qui identifie de faàon
unique un fichier.
Zone de stockage : elle s’étend de la fin de la liste jusqu’à la fin du disque. L’espace libre sur le disque est repéré
par une liste chaînée, chaque bloc libre contient un pointeur sur le bloc suivant de la liste.
Un nœud-i contient 13 adresses su le disque sous forme de 13 numéros de blocs. Les 10 premières adresses sont
celles des 10 premiers blocs du fichier. Si le fichier contient plus de 10 blocs, la onzième adresse pointe sur un
bloc qui contient les adresses des 128 blocs suivants dans le fichier. Si le fichier est plus grand que 138 blocs, la
douzième adresse pointe sur un bloc dont chacune des 128 adresses pointe sur un bloc de 128 adresses de 128
blocs de fichiers. Pour un fichier encore plus grand que 8 mégaoctets, la treizième adresses utilise un schéma à
trois niveaux d’indirection ; ce qui porte la taille maximum d’un fichier à plus de 1 gigaoctet.
Pr BELKHIR A
7
Module Système d’Exploitation
Dpt Informatique
USTHB
Master Sécurité des Systèmes Informatiques
Noeud i
1
2
Bloc 11
.
.
Bloc 12
Bloc 2
Bloc 10
11
12
13
128
Bloc 138
Bloc 1
1
2
3
.
.
.
10
1ere s /liste
de premier niveau
1
2
1
2
.
.
.
.
128
128
Liste de second
niveau
2eme s /liste
de premier niveau
2eme s /liste
1
de premier niveau
1
2
2
.
.
.
.
3eme s /liste de
second niveau
1
2
Bloc
128
Bloc
128
128
s/liste de second
niveau
.
.
s/liste de
3eme niveau
Pr BELKHIR A
8
Téléchargement