3IS - Système d`exploitation

publicité
3IS - Système d'exploitation
2010 – David Picard
Contributions de : Arnaud Revel, Mickaël Maillard
[email protected]
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
1. Introduction
●
Fonctionnement simplifié d'un ordinateur
●
Rôle d'un système d'exploitation
–
–
Gestion du matériel
Gestion de tâches
●
Types d'OS
●
Caractéristiques
–
–
●
multitâches/multiutilisateur
portabilité
Historique d'UNIX et Linux
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Un ordinateur très simple
CPU
●
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Un processeur
Un ordinateur très simple
CPU
●
Un processeur
●
De la mémoire
Mémoire
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Un ordinateur très simple
CPU
Périphériques
(disque dur)
Périphériques
(clavier)
●
Un processeur
●
De la mémoire
●
Périphériques
(écran)
Mémoire
Périphériques
(autres)
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Quelques
périphériques variés
Mémoire
CPU
Périphériques
programmes
●
Mémoire :
–
Programmes
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Mémoire
programmes
●
CPU
Périphériques
données
Mémoire :
–
–
Programmes
Données
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Mémoire
programmes
●
données
Périphériques
données,
interactions
Mémoire :
–
–
●
CPU
Programmes
Données
Périphériques :
–
–
Données
Interaction avec l'utilisateur (données prioritaires)
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Un programme
int main(int argc char ** argv)
{
int a, b, c ;
float *A, *B ;
/* check input */
if(argc < 3)
{
printf("usage : dotprod <a> <b>\n") ;
return ­1 ;
}
/* read a from args */
a = atoi(argv[1]);
b = atoi(argv[2]) ;
...
●
Suite d'instructions
●
Ensemble de données
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Un programme
int main(int argc char ** argv)
{
int a, b, c ;
float *A, *B ;
/* check input */
if(argc < 3)
{
printf("usage : dotprod <a> <b>\n") ;
return ­1 ;
}
/* read a from args */
a = atoi(argv[1]);
b = atoi(argv[2]) ;
...
●
Suite d'instructions
●
Ensemble de données
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Mémoire
données
instructions
Exécution d'un programme
●
CPU
EIP
…
0xAD00 :
0x1D04 :
0xAD08 :
0xAD0C :
...
Lecture de
l'instruction contenue
à l'adresse du
registre EIP dans la
mémoire
instruction 1
instruction 2
instruction 3
instruction 4
Mémoire
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Exécution d'un programme
●
CPU
EIP
…
0xAD00 :
0x1D04 :
0xAD08 :
0xAD0C :
...
instruction 1
instruction 2
instruction 3
instruction 4
●
Lecture de
l'instruction contenue
à l'adresse du
registre EIP dans la
mémoire
Exécution
Mémoire
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Exécution d'un programme
●
CPU
EIP++
…
0xAD00 :
0x1D04 :
0xAD08 :
0xAD0C :
...
instruction 1
instruction 2
instruction 3
instruction 4
Lecture de
l'instruction contenue
à l'adresse du
registre EIP dans la
mémoire
●
Exécution
●
Incrémentation EIP
Mémoire
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Exécution d'un programme
●
CPU
EIP
…
0xAD00 :
0x1D04 :
0xAD08 :
0xAD0C :
...
instruction 1
instruction 2
instruction 3
instruction 4
Mémoire
Lecture de
l'instruction contenue
à l'adresse du
registre EIP dans la
mémoire
●
Exécution
●
Incrémentation EIP
●
Itération suivante...
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Interaction entre programmes,
mémoire et périphériques
●
Mémoire :
–
–
–
–
–
Lire des données en
mémoire
Écrire des données en
mémoire
En fonction des
données en mémoire,
exécuter certaines
instructions
Lancer d'autres
programmes stockés en
mémoire
...
●
Périphériques
–
–
–
–
Lire des données sur
un périphérique (ex.
clavier)
Écrire des données
sur un périphérique
(ex. écran)
Réagir lorsqu'un
périphérique est
sollicité (ex. bouton
power)
...
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Rôle d'un système d'exploitation
●
Gérer l'exécution des programmes
–
–
–
●
Gérer la mémoire
–
●
Lancement, terminaison, etc
Intégrité des programmes, sécurité des données
Servir d'interface entre les différents programmes en cours
d'exécution
Allocation, droits d'accès, etc
Gérer l'accès au matériel
–
–
Servir d'interface entre les programmes et le matériel
Répondre aux demandes du métériel (interruptions par
exemple)
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Gestion du matériel
●
Accès à une ressource matérielle
–
–
Le programme peut vouloir lire sur le disque, récupérer
ce qui est tapé au clavier, récupérer les données d'un
scanner, afficher quelque chose à l'écran, imprimer un
document ou encore communiquer avec d'autres
programmes à travers un réseau. Le système
d'exploitation se charge de réaliser les accès aux
différents périphériques en proposant une unique
interface.
Les périphériques sont variés et ont différentes
méthodologie d'utilisation. En proposant une interface, le
système d'exploitation simplifie le développement des
programmes.
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Gestion du matériel
●
Gestion des interruptions
–
Certains matériels peuvent imposer un changement de
comportement, voire la suspension, des programmes en
cours (bouton stop sur une chaîne de montage par
exemple).
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Gestion du matériel
●
Sécurisation des ressources critiques
–
Si deux programmes veulent accéder en même temps à
une ressource matérielle unique (l'imprimante, par
exemple), c'est le rôle du système d'exploitation de faire
en sorte que l'utilisation du matériel est correct et que le
résultat correspond à celui qui est attendu (on ne veut
pas que deux documents soient imprimés entremêlés sur
la même feuille par exemple).
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Gestion des tâches
●
Contexte d'exécution
–
Lorsqu'un
programme
s'exécute,
le
système
d'exploitation se charge d'assurer la bonne mise en place
de son contexte d'exécution (registre matériels comme le
pointeur de pile, mais aussi charger le code des
différentes bibliothèques utilisée, etc).
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Gestion des tâches
●
Commutation de processus
–
–
Sur certains OS, plusieurs programmes peuvent être en
cours d'exécution en même temps. Le rôle de l'OS est de
s'assurer que chaque programme peut s'exécuter
correctement (en mettant à jour son contexte, par
exemple le pointeur de pile), et que chaque programme
en cours est bien exécuté (ordonnancement)
La sécurité des données propres à chaque programme
(par exemple interdiction à un programme de modifier les
données d'un autre programme) est aussi réalisée par le
système d'exploitation.
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Gestion des tâches
●
Communication entre programmes
–
Certains programmes ont besoin de communiquer entre
eux (échange de données, attente de fin, etc). L'OS se
charge de proposer une interface unifiée de
communication (ce que l'on appelle les IPC –
InterProcess Communication).
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Anatomie d'un système
d'exploitation
libc
Noyau
Système d'exploitation
applications
Gestion
Des
Processus
toolkit
Gestion
De la
Mémoire
Gestion
Du
Matériel
hardware
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Types de systèmes d'exploitation
●
Usages :
–
–
–
Grand public : réactifs, plein de programmes variés, peu
de contraintes (matérielles et temporelles)
Temps réel : comportement prédictible, répondant à des
contraintes temporelles fixes
Embarqués : peu de programmes, connus à l'avance,
mais forte contraintes matérielles (peu de mémoire, etc)
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Types de noyaux
●
Noyau :
●
●
Monolithique : Tout est inclu dans le noyau, gestion
de processus, gestion de mémoire, pilotes de
périphériques, protocoles de communication, IPC,
etc. (ex Linux, Solaris)
Micronoyau : Le strict minimum est inclu dans le
noyau : gestion de processus, gestion de la
mémoire et IPC très complexes. Le reste est
délégué à des applications spécifiques appelées
services. (ex Mach, L4)
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Comparaison entre noyaux
monolithiques et micronoyaux
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Noyaux modulaires
●
Noyaux monolithiques mais
–
–
●
Possibilité d'ajouter et de retirer des fonctionnalités au
noyau en cours d'exécution
Plus petit (car un nombre limité de pilotes est chargé en
mémoire, les suivants pouvant être chargés à la
demande si besoin)
Ex : Linux
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Caractéristiques de Systèmes
d'exploitation
●
Multi-tâches :
–
●
Multi-utilisateurs :
–
●
Plusieurs programmes peuvent s'exécuter en même
temps
Plusieurs utilisateurs peuvent utiliser l'ordinateur en
même temps
Multi-plateforme :
–
Le système peut être installé sur des machines très
variées
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Multi-tâches
●
Plusieurs programmes peuvent s'exécuter en
même temps :
–
–
Gerer la création et la suppression de tâches
Veiller à ce que chaque tâche ait accès aux ressources
demandées en un temps raisonnable :
●
●
–
Ordonnancement
Ressources critiques
Veiller à l'intégrité des données de chaque tâches
(gestion de droits)
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Multi-utilisateur
●
Plusieurs utilisateurs sur la machine :
–
–
–
Gérer l'accès aux ressources critiques
Veiller à l'intégrité des données de chaque utilisateur
Permettre un système de communication entre les
utilisateurs
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Multi-plateforme
●
Le système peut s'installer sur différents types
d'environnements :
–
–
Offrir une interface indépendante de l'architecture
matérielle aux programmes
Gérer plusieurs architecture matérielles différentes
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Historique
●
69 : Thomson et Ritchie
●
mise au point de la première version UNIX
●
PDP7/9; noyau 16Ko; Process 8Ko, Fichier 64Ko
●
72 : Kernighan et Ritchie : langage C
●
73 : Réécriture du noyau UNIX en C
●
Gestion des processus
●
Gestion des fichiers
●
Banalisation des E/S
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Historique
●
75 : Premier portage d ’UNIX
●
76 : microprocesseurs 8/16 bits
●
77 : Thomson à l ’université de Berkeley
●
500 installations
●
79 : Portage sur VAX et IBM
●
82 : Commercialisation par ATT
●
Unix-based et Unix-like (100 000 install.)
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Historique
●
84 : Efforts de normalisation
●
DEC (Ultrix)
●
Gould (UTX)
●
HP (HP-UX)
●
85 : MINIX par A. Tanenbaum
●
88 : standard sur les stations de travail
●
SUN/BULL/IBM…
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Historique
●
89 : Premier BSD libre
●
Sept 91 : Linux 0.01 (inspiré par Minix)
●
Oct 91 : Linux 0.03 (bash et gcc)
●
●
●
Dec 91 : Linux 0.10 (premières contributions
externes)
Jan 92 : Linux 0.12 (mémoire virtuelle,
licence GPL)
Mars 92 : linux 0.95 (init/login, X)
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Historique
●
●
●
●
●
93 : NetBSD et FreeBSD
Mars 94 : Linux 1.0 (stable en production,
fournit des services comparables à UNIX)
Mars 95 : Linux 1.2 (nombreuses architectures,
modules chargeables)
Juillet 96 : Linux 2.0 (multiprocesseur, mascotte
Tux)
Janvier 99 : Linux 2.2
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Historique
●
99 : MacOSX (noyau hybride)
●
01 : Linux 2.4
●
03 : Linux 2.6 (noyau préemptible)
●
07 : Linux 2.6.23 (ordonnanceur CFS)
●
08 : Linux 2.6.26 (Kgdb)
●
21 Juillet 2011 : Linux 3.0.0 (13M lignes de
code)
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Caractéristiques de Linux
●
●
Noyau monolithique : comme la plupart des Unices
Modules : des fonctionnalités peuvent être activées ou désactivées (seuls
SVR4.2 et Solaris peuvent le faire aussi)
●
Threads du noyau : certaines fonctionnalités sont indépendantes
●
Support multithread natif
●
Noyau préemptif : un processus peut être interrompu même en mode noyau
●
Système multiprocesseur
●
Nombreux systèmes de fichiers
●
Nombreuse architectures supportées
●
Petit et compact
●
Performant
●
libre
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Distributions
●
Système d'exploitation complet basé sur Linux :
–
–
–
–
–
–
–
Le noyaux Linux
Une libc et un compilateur C (souvent gcc)
Un gestionnaire de boot pour charger le noyau (grub,
lilo, ...)
Un système d'initialisation pour lancer les processus
offrant les services standards (réseau, impression,
interface graphique, …)
Un shell (bash, dash, ksh, …)
Un gestionnaire de packages (apt, rpm, portage, …)
Un dépôt de logiciels préparés en packages (et vérifiés
pour bien fonctionner avec le reste du système)
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Familles de distributions
●
Deb : Debian, ubuntu, et dérivée
–
–
●
RPM : RedHat, SuSE, Mandriva, et dérivée
–
–
●
Gestionnaire de paquets *.rpm
RedHat : serveur, Mandriva : desktop
Slackware
–
●
Gestionnaire de paquets *.deb
Debian : serveur, Ubuntu : desktop
plus vieille distribution (paquets *.tgz)
Distributions sources : gentoo, sourcemage, ...
–
–
Recompiler tous les logiciels (paquets sources, donc)
Gentoo : gestionnaire de paquets portage très puissant
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Concepts fondamentaux
●
Modes d'utilisation :
–
Mode utilisateur : routine du programme en cours
d'exécution
●
●
●
–
Espace mémoire réservé
Contexte matériel particulier (pointeurs de pile, de programme,
etc)
Droits restreints
Mode noyau : routines du noyau
●
●
●
●
Espace mémoire total
Contexte matériel particulier
Droit d'accès totaux
On y accède par une interruption (soit matérielle, soit logicielle)
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Concepts fondamentaux
●
●
●
●
Processus : instance d'un programme en cours
d' exécution et son contexte
Fichiers : tout est fichier, les périphériques, les
documents, etc
Droits : les fichiers ont différents niveaux de
droits (user, group, other)
Réentrant : plusieurs processus peuvent
simultanément s'exécuter en mode noyau
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Contexte user/kernel
●
L'utilisation de la machine est divisée en deux
mode d'exécution :
–
–
●
Le mode noyau (kernel mode)
Le mode utilisateur (user mode)
Le mode utilisateur est le mode d'utilisation des
utilisateurs :
–
–
–
root
Les services (serveur de fichier, web, imprimante, …)
Les vrais usagers
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Droits et mode
●
La mémoire est réservée à un mode d'utilisation
–
Les applications en mode user ne peuvent pas accéder
●
●
●
●
À l'espace mémoire du mode kernel
À l'espace mémoire des autres applications
À certains périphérique
Pour gérer les droits, les processeurs dispose de
plusieurs mode d'exécution
–
–
Un mode protégé correspondant au mode user, dans lequel
tout n'est pas accessible
Un mode privilégié correspondant au mode kernel dans
lequel on peut tout modifier
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Accès au mode noyau
●
Les zones de mémoire contenant le code du
noyau sont en mode privilégié
–
–
–
–
–
On ne peut pas y accéder en mode user
On y accède par une interruption
Le système passe en mode privilégié
Le noyau traite l'interruption
Retour en mode user et poursuite du programme
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Passage en mode noyau
●
Le passage en mode noyau se fait
–
Lors d'une interruption matérielle
●
–
Lors d'une anomalie
●
–
Le système passe en mode privilégié et exécute alors le code du
noyau prévu pour cette interruption
Le système lève alors une exception, passe en mode privilégié
et exécute le code prévu pour cette exception
Lors d'une demande de service au noyau via un appel
système
●
●
Il s'agit d'un interruption logicielle voulue par l'application
appelante
Le système passe en mode privilégié et exécute le code du
noyau correspondant à l'appel système
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Interruptions
●
C'est un signal déclenché soit
–
Par un périphérique matériel
●
●
–
Par une demande logicielle
●
●
●
Elle peut survenir à n'importe quel moment
Le code permettant de traiter l'interruption est appelé pilote
Instruction spéciale déclenchant une interruption logicielle
Le code à exécuter lors du déclenchement
d'une interruption est installé à l'initialisation du
système
Ce code fait parti du noyau
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Exceptions
●
Ce sont les réponse du processeur à une
instruction incorrecte lors de l'exécution d'un
programme
–
–
–
C'est une interruption générée par le processeur
Elles permettent de signaler les erreurs dans le code
(faute de droits, par exemple)
Elles permettent la récupération des anomalie par le
noyau
●
Par exemple, allouer des ressources aux programmes qui
demandent des ressources inexistantes
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Traitement des interruptions
●
Lors d'une interruption, le processeur exécute
une routine du noyau mise en place lors de
l'initialisation du système
User mode
Kernel mode
Programme 1
Appel
système
Routine
du noyau
Programme 1
Retour
d'interruption
interruption
horloge
Routine
du noyau
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Programme 2
Retour
d'interruption
Appels systèmes
●
Ce sont des fonctions dont :
–
–
–
●
L'appel se fait dans un programme en user mode
L'exécution se fait en mode kernel
Le retour se fait dans le programme appelant en user
mode
L'appel se fait par une interruption logicielle
unique (0x80)
–
–
–
Cette interruption permet de passer en mode noyau
Les appels systèmes sont numérotés
Une table permet de faire la correspondance entre le
numéro de l'appel et la fonction du noyau à appeler
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Linux 0.01
●
Les appels systèmes sont disponibles dans la
glibc
#define _syscall0(type,name) \
type name(void) \
{ \
type __res; \
__asm__ volatile ("int $0x80" \
: "=a" (__res) \
: "0" (__NR_##name)); \
if (__res >= 0) \
return __res; \
errno = ­__res; \
return ­1; \
}
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Chemin de contrôle du noyau
●
●
Un chemin de contrôle du noyau (kernel control
path) est la séquence d'instruction exécutée par
le noyau pour répondre à une interruption
Plusieurs chemin de contrôle peuvent être
entrelacés
–
–
●
Un processus demande une ressource non disponible
immédiatement, et un autre processus est exécuté à la
place
Une interruption est levée pendant l'exécution d'un
chemin de contrôle
Noyau réentrant obligatoire
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Téléchargement