3IS - Système d'exploitationperso-etis.ensea.fr/~picard/pluxml/data/documents/os/cours_1.pdf ·...

53
ÉCOLE NATIONALE SUPÉRIEURE DE L'ÉLECTRONIQUE ET DE SES APPLICATIONS 3IS - Système d'exploitation 2010 – David Picard Contributions de : Arnaud Revel, Mickaël Maillard [email protected]

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

[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

● 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

É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