3IS - Système d'exploitationperso-etis.ensea.fr/~picard/pluxml/data/documents/os/cours_1.pdf ·...
Transcript of 3IS - Système d'exploitationperso-etis.ensea.fr/~picard/pluxml/data/documents/os/cours_1.pdf ·...
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
3IS - Système d'exploitation
2010 – David PicardContributions de : Arnaud Revel, Mickaël Maillard
É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
● Un processeur
CPU
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Un ordinateur très simple
● Un processeur
● De la mémoire
CPU
Mémoire
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Un ordinateur très simple
● Un processeur
● De la mémoire
● Quelques périphériques variés
CPU
Mémoire
Périphériques(disque dur)
Périphériques(clavier)
Périphériques(écran)
Périphériques(autres)
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
● Mémoire :– Programmes
programmes
Mémoire CPU Périphériques
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
● Mémoire :– Programmes– Données
programmes données
Mémoire CPU Périphériques
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
● Mémoire :– Programmes– Données
● Périphériques :– Données– Interaction avec l'utilisateur (données prioritaires)
programmes données
Mémoire CPU Périphériques
données,interactions
É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
Mémoire
données
instructions
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Exécution d'un programme
● Lecture de l'instruction contenue à l'adresse du registre EIP dans la mémoire
CPU
EIP
…0xAD00 : instruction 10x1D04 : instruction 20xAD08 : instruction 30xAD0C : instruction 4...
Mémoire
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Exécution d'un programme
● Lecture de l'instruction contenue à l'adresse du registre EIP dans la mémoire
● Exécution
CPU
EIP
…0xAD00 : instruction 10x1D04 : instruction 20xAD08 : instruction 30xAD0C : instruction 4...
Mémoire
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Exécution d'un programme
● Lecture de l'instruction contenue à l'adresse du registre EIP dans la mémoire
● Exécution● Incrémentation EIP
CPU
EIP++
…0xAD00 : instruction 10x1D04 : instruction 20xAD08 : instruction 30xAD0C : instruction 4...
Mémoire
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
Exécution d'un programme
● Lecture de l'instruction contenue à l'adresse du registre EIP dans la mémoire
● Exécution● Incrémentation EIP● Itération suivante...
CPU
EIP
…0xAD00 : instruction 10x1D04 : instruction 20xAD08 : instruction 30xAD0C : instruction 4...
Mémoire
É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– 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
● Gérer la mémoire– 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
GestionDes
Processus
GestionDe la
Mémoire
GestionDu
MatérielNo
yau
libc toolkit
hardware
applications
Sys
tèm
e d'
exp
loita
tion
É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 :– Plusieurs programmes peuvent s'exécuter en même
temps
● Multi-utilisateurs : – 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– Gestionnaire de paquets *.deb
– Debian : serveur, Ubuntu : desktop
● RPM : RedHat, SuSE, Mandriva, et dérivée– Gestionnaire de paquets *.rpm
– RedHat : serveur, Mandriva : desktop
● Slackware– 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
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
● Le système passe en mode privilégié et exécute alors le code du noyau prévu pour cette interruption
– Lors d'une anomalie● 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
● Elle peut survenir à n'importe quel moment● Le code permettant de traiter l'interruption est appelé pilote
– Par une demande logicielle● 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 Programme 1
Routine du noyau
Appel système
Retourd'interruption
Programme 2
Routine du noyau
interruption horloge
Retourd'interruption
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS
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