50
< >

Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Programmation Système

Yves Caniou <[email protected]>

Module M2OP1 � Master 2 SIR de l'UCBL

2005-2006(version du 1er février 2006)

Présentation du module

Contenu et objectifs du moduleI Un cours assez général sur les Systèmes d'Exploitation (OS)

I Des concepts UnixI ... détaillés pour Linux

I Dans les TPsI Simulateurs : QEMU, BOCHS... ?I Modules noyau LinuxI ... avec gestion de la mémoire, des périphériquesI ... et des threads, des interruptions

Prérequis : C pour les TPsÉvaluation

I Des rapports de TPs... .. ... .. ...concis et précisI Un examen sur table (date et modalités à préciser)

Yves Caniou Programmation Système (05/06) Présentation du module M2OP1 (2/299)

Quelques références pour faire ce cours

LivresI William Stallings : Operating Systems, Internals and Design Principles,

International Edition (5eédition)I Maurice J. Bach : The Design of the UNIX Operating System, Prentice HallI Rubini & Corbet : Linux Device Drivers, O'Reilly, (2eédition)→ accessible à l'URL http://www.xml.com/ldd/chapter/book/index.html

Les docs du noyau Linux et les URLI Dans /usr/src/linux/DocumentationI Pour des infos sur Linux

I Linux Kernel Module Programming Guide http://www.tldp.org/LDP/lkmpg/I http://www.kernelnewbies.orgI http://lxr.linux.no

Yves Caniou Programmation Système (05/06) Présentation du module M2OP1 (3/299)

Quelques références pour faire ce cours

Des cours en ligneI Supports de Brice Goglin sur lesquels repose ce cours (merci !)

http://perso.ens-lyon.fr/brice.goglin/I Cours de Martin Quinson, à qui j'ai emprunté le style et qqs slides (merci)

http://www.loria.fr/~quinson

Les magazines : Linux Mag' (les articles sur la conception d'un OS)

URL et les di�érentes informations relatives au coursI http://graal.ens-lyon.fr/~ycaniou/teaching/0506.html

Yves Caniou Programmation Système (05/06) Présentation du module M2OP1 (4/299)

Bibliographie

LivresI Tanenbaum : Modern Operating Systems, Prentice Hall, (2eédition)I Silbershcatz et Gavin : Principes des systèmes d'exploitation, Addison-Wesley,I Cegielski : Conception des systèmes d'exploitation : le cas Linux, EyrollesI Bovet & Cesati : Understanding the Linux Kernel, O'Reilly, (2eédition)I Robert Love, Linux Kernel Development, Paperback

Des cours en lignesI page de S. Krakowiak à l'URL http://sardes.inrialpes.fr/~krakowia/

Informations plus généralesI Le site http://commentcamarche.net

Yves Caniou Programmation Système (05/06) Présentation du module M2OP1 (5/299)

Plan du cours :

1 MatérielArchitecture générale des ordinateurs, Généralités sur les processeurs et l'exécutionde code, Interruptions, Hiérarchie mémoire, Communication avec les périphériques etAchitecture complexes

2 Concepts Généraux des systèmes d'exploitationObjectifs et historique ; Concepts généraux ; Structure du système d'exploitation ;Avancées récentes ; Exemples

3 ProcessusConcepts ; Description ; Exécution ; Création et terminaison ; Changement decontexte ; Exécution du noyau ; Processus et thread ; Parallélisme ; Détails de Linux

Yves Caniou Programmation Système (05/06) Présentation du module M2OP1 (6/299)

Page 2: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Première partie

Matériel

Architecture générale des ordinateurs

Généralités sur les processeurs et l'exécution de codeLes processeursExécution

Interruptions

Hiérarchie mémoire

Communication avec les périphériques

Architecture complexes

Description générale

I Processeur : traite les instructions→ Cherche les instructions enmémoire et les exécute∼ opérations élém. sur données ouadresses mémoire (registres)

I Mémoire : stocke les données et lesprogrammes

I Bus mémoire : gère les accèsmémoire

I Bus I/O : gère les communicationsavec les périphériques

I Périphériques : Entrées/Sorties(stockage, interaction)

I BIOS : système minimal pour booter

Mémoire

Processeur

Périphériques

Bus mémoire

Bus I/O Cmdes/Data

Instruct./Data

Yves Caniou Programmation Système (05/06) Partie I : Matériel (8/299)

Première partie

Matériel

Architecture générale des ordinateurs

Généralités sur les processeurs et l'exécution de codeLes processeursExécution

Interruptions

Hiérarchie mémoire

Communication avec les périphériques

Architecture complexes

Les processeurs

I Idées des années 40I Révolution du transistor et des semi-conducteursI Loi de Moore : � La puissance des ordi. double tous les 18 mois. �I Actuellement : 4 GHz, 0.06 µm + hyperthreading

I Dissipation de chaleur devient trop contraignanteI Multiplication des �les d'exécution

I Limite quantique ?

Yves Caniou Programmation Système (05/06) Partie I : Matériel (10/299)

Première partie

Matériel

Architecture générale des ordinateurs

Généralités sur les processeurs et l'exécution de codeLes processeursExécution

Interruptions

Hiérarchie mémoire

Communication avec les périphériques

Architecture complexes

Registres

Registres utilisateurI DonnéesI Adresses (segment, pile, ...)

Registres de statut et de contrôleI Program Counter (PC)I Status arithmétique

Yves Caniou Programmation Système (05/06) Partie I : Matériel (12/299)

Page 3: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Pile et appel de procédure - 1/2

PileI Bloc de données réservées en

mémoireI Une base : Stack Base

I Une limite : Stack Limit

I Pointeur Courant : Stack Pointer

I Liste LIFO : Push, PopI La Pile grandit des adresses hautes

vers les adresses basses

Stack Pointer

Utilisé

Libre

Stack Base

Stack Limit

MémoirePrincipale

Blocs

Pilepour la

réservés

Yves Caniou Programmation Système (05/06) Partie I : Matériel (13/299)

Pile et appel de procédure - 2/2

Appels de procéduresI Conserver l'adresse de retour et la frame précédenteI Paramètres→ Utilisation des registres, mémoire ou empiler les données locales

I Registres de pile pour la procédure couranteI Stack PointerI Frame Pointer

Yves Caniou Programmation Système (05/06) Partie I : Matériel (14/299)

Exécution

I Code opération + localisation des donnéesI Opération de type entier, �ottant ou mémoireI CISC (Complex Instruction Set Computer) ou

RISC (Reduced Instruction Set)I Contrôle par horlogeI Traitement multiple SISD, SIMD, MISD, MIMDI Di�érents modes d'exécution

I ProtégéI Réel..

Yves Caniou Programmation Système (05/06) Partie I : Matériel (15/299)

Pipeline

Plus grande vitesse d'exécution des instructions en parallélisant des étapes

I Augmentation de la fréquence par découpage du traitement des instructionsI Chargement, décodage, exécution

I Pipeline de plus en plus longI Branches cassent le pipeline

I Optimisation par prédiction, exploration

Yves Caniou Programmation Système (05/06) Partie I : Matériel (16/299)

Première partie

Matériel

Architecture générale des ordinateurs

Généralités sur les processeurs et l'exécution de codeLes processeursExécution

Interruptions

Hiérarchie mémoire

Communication avec les périphériques

Architecture complexes

Interruptions

InterruptionsI Programme : générée par over�ow arithmétique, division par zéro, tentative

d'exécuter une instruction illégale, ou encore d'atteinte d'unespace mémoireen dehors de la zone permise pour l'utilisateur

I Timer : générée par un timer dans le processeur dans le but de lui permettred'e�ectuer des tâches de façon pseudo-périodique

I I/O : générée par un contrôleur I/O, dans le but de signaler la terminaisond'un évènement ou di�érentes anomalies/erreurs

I Matérielle : générée par la panne (courant ou erreur de parité mémoire)

Yves Caniou Programmation Système (05/06) Partie I : Matériel (18/299)

Page 4: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Interruptions et exécution

I Requêtes d'un périphérique vers le processeurI Un numéro permet de repérer le périphérique

I Suspension du programme en coursI Déroutement vers un code de traitement

I handler �xé par le système d'exploitation

I Retour au code initial

Yves Caniou Programmation Système (05/06) Partie I : Matériel (19/299)

Exceptions

I En cas de problèmeI Erreur arithmétique, accès erroné à la mémoire

I Déroutement vers code de traitement

I Exception spéciale pour appels systèmeI Changement de mode d'exécution

Yves Caniou Programmation Système (05/06) Partie I : Matériel (20/299)

Première partie

Matériel

Architecture générale des ordinateurs

Généralités sur les processeurs et l'exécution de codeLes processeursExécution

Interruptions

Hiérarchie mémoire

Communication avec les périphériques

Architecture complexes

Hiérarchie mémoire

I Registres du processeurI Mémoire centrale

I Stockage volatile (disparaît au reboot)I Adressage en 32 ou 64 bitsI Relativement lent

I Disque, bande, ...I Stockage persistantI Très lent

Pri

x

+

Yves Caniou Programmation Système (05/06) Partie I : Matériel (22/299)

Cache

de motsTransfert Transfert

de blocs

CPU Cache Mémoire principale

I Zone de stockage intermédiaireI Plus petite mais plus rapide !I Répond au problème de la di�érence de célérité processeur et

mémoire

I Conserve zones récemment accédéesI Précharge zones proches qui pourraient être accédées bientôtI Algorithme de remplacement LRU (Least recently used)

Yves Caniou Programmation Système (05/06) Partie I : Matériel (23/299)

Exemple de caches

I Mémoire cache jusqu'à 3 niveauI Placée entre processeur et mémoireI Très rapideI Utilisée de manière transparenteI Invalidation logicielle possible

I Cache dans les contrôleurs disquesI Espace swap géré par OSI Cache disque géré par OS

Yves Caniou Programmation Système (05/06) Partie I : Matériel (24/299)

Page 5: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Première partie

Matériel

Architecture générale des ordinateurs

Généralités sur les processeurs et l'exécution de codeLes processeursExécution

Interruptions

Hiérarchie mémoire

Communication avec les périphériques

Architecture complexes

Entrées/Sorties - 1/2

I Mapping de registre des périphériquesI Écriture de commandesI Traitement dans le périphériqueI Lecture de résultats

I Programmed I/OI Attente active du bon statut

Yves Caniou Programmation Système (05/06) Partie I : Matériel (26/299)

Entrées/Sorties - 2/2

I Interrupt-driven I/O (modèle asynchrone)I Recouvrement traitement périphérique par autre chose dans le processeurI Périphérique envoie IRQ quand terminéI Le handler du processeur récupère les informations du périphérique puis

retourne à l'exécution normale

I Direct Memory Access (DMA)I Transfert de données sans le processeur

Yves Caniou Programmation Système (05/06) Partie I : Matériel (27/299)

Ordres de grandeur

I Processeur : GHzI Mémoire cache : Mo, nsI Mémoire : Go, 10 nsI Bus mémoire : Go/sI Bus PCI : 500 Mo/s, dizaine de cyclesI Interruption : 10 µsI Disque : 100 Go, ms, 50 Mo/sI Réseau : variable

Yves Caniou Programmation Système (05/06) Partie I : Matériel (28/299)

Première partie

Matériel

Architecture générale des ordinateurs

Généralités sur les processeurs et l'exécution de codeLes processeursExécution

Interruptions

Hiérarchie mémoire

Communication avec les périphériques

Architecture complexes

SMP, Numa et systèmes distribués - 1/2

I Symmetric Multi-ProcessingI Plusieurs processeurs, une seule mémoireI Maintenir cohérence entre di�érents caches

I Non-Uniform Memory AccessI Plusieurs n÷uds avec plusieurs processeursI Un banc mémoire par n÷ud, accessible par tousI Exemple : Earth Simulator

Yves Caniou Programmation Système (05/06) Partie I : Matériel (30/299)

Page 6: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

SMP, Numa et systèmes distribués - 2/2

I Distributed SystemsI Un banc mémoire par n÷ud, le seul accessibleI Exemple : icluster2

Yves Caniou Programmation Système (05/06) Partie I : Matériel (31/299)

Deuxième partie

Concepts Généraux des systèmes d'exploitationObjectifs et historiqueConcepts générauxProcessusGestion de la mémoireProtection des données et sécuritéOrdonnancement et gestion des ressourcesStructure du système d'exploitationStructure du système d'exploitationModularité du noyauAvancées récentesMultithreadingSMP et NUMAEntrées/Sorties asynchronesSystèmes distribuésExemplesWindowsUnixLinux

Objectifs des systèmes d'exploitation

I Rendre le système plus facile à utiliserI Abstraction des périphériques

I Améliorer l'e�cacité du systèmeI Mettre les ressources à disposition e�cacement

I Facilité d'évolutionI Protection des di�érents programmesI Sécurité vis-à-vis des autres utilisateurs

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (33/299)

Interface entre utilisateurs et machines - 1/2

I Interface uniforme d'accès aux périphériquesI Détails techniques cachés

I Exécution de programmesI Accès contrôlés aux �chiers

I Montrer le contenu structuré des périphériques de stockageI Fournir des fonctions d'édition, de développement, ...

Les couches d'un OS et d'où les voir

SystemDesigner

Programmer

End User

Utilities

Operating

Application

OS

Computer Hardware

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (34/299)

Interface entre utilisateurs et machines - 2/2

I Gérer les erreurs proprementI Signaler aux programmes les erreurs matériellesI Réagir en cas d'erreur logicielle

I Fournir des statistiques d'utilisation et de fonctionnementI Permet à l'utilisateur de mieux adapter la con�guration du

systèmeI De mettre au point la con�guration du systèmeI Sur Système multi-utilsateurs, permet de charger en fonction

des ressources consommées

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (35/299)

Évolution - 0Serial Processing : une machine, un utilisateur, un logiciel

I Pas d'OS !I Utilisateur dialogue avec le hardwareI Code asm lu sur carte perforéeI Exemples : premières machines (1950-1955)

ProblèmesI Ordonnancement

I Machines réservées sur slot de tempsI Tâches qui terminent plus tôt ⇒ temps de perdu !I Tâches qui terminent plus tard ⇒ résultat perdu !

I InitialisationI L'exécution d'une tâche peut demander le chargements de plusieurs autres

prog. en mémoire (langage, compilateur, linkeur)I Éventuellement montage, démontage de bandes, etc.→ Perte de temps, et d'argent

→ Complexité conceptuelle réduite . . .. . . mais complexité technique accrue (on refait tout à chaque fois) ⇒ cher

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (36/299)

Page 7: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Évolution - 1

Simple Bach Systems : une machine, un utilisateur, un logicielI 1erBatch OS en 1955I Un système Batch : l'utilisateur n'a plus accès à la machineI Une pile séquentielle de programmesI Chaque prog. � rend la main � quand il quitteI Tentative de ne pas avoir d'idle time

RemarquesI Batch OS doit assurer la protection mémoireI Prévenir qu'une tâche monopolise le système (timer)I Instruction privilégées (seul OS peut exécuter, comme opérations I/O)→ Notions de user mode et kernel mode pour accéder à zone mémoire protégée

par exemple→ L'OS prend de la place mémoire et du temps machine→ Améliore l'utilisation de la machine

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (37/299)

Évolution - 2Multiprogrammed Batch Systems : une machine, plusieurs logiciels

I Problème fondamental de la précédente solution :Si le programme est bloqué (disque, réseau), si le programme fait bcpd'I/O (proc + rapide !), la machine est inutilisée ⇒ idle time !

I Solution : plusieurs processus. Si un est bloqué, on exécute un autre⇒ Demande espace libre en mémoire en plus de OS + tâches actuelles

OS

Matériel

gcc emacs

RemarquesI Fonctionnalités supplémentaires : I/O interrupts, DMAI Gestion de mémoire accrue : plusieurs programmesI Ordonnancement→ Améliore encore l'utilisation de la machine au prix d'une sophistication de l'OSYves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (38/299)

Évolution - 3Time Sharing : une machine, plusieurs logiciels, plusieurs utilisateurs

I La solution précédente est chère (en 1970) : il faut unemachine par utilisateur, et on a besoin de réactivité

I Solution : partage de la machine entre utilisateurs(les utilisateurs tapent moins vite que l'ordinateur compile)

Henri Bobgcc emacs

Matériel

OS

I Mais que se passe-t-il si les utilisateurs sont :I Trop gourmands ou trop nombreuxI Mal intentionnés

I Le système doit protéger et gérer les ressourcesYves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (39/299)

Processus

I File d'exécutionI État des registres

I Contexte mémoire propreI Exécution indépendante des autres processus

I Données privées au système d'exploitationI Pour manipuler le processus

I Exécution concurrente pour maximiser l'utilisation desressources matérielles

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (40/299)

Gestion de la mémoire

I Isolation des processusI Pas de collision entre leurs mémoires→ données et instructions propres

I Allocation et gestion transparenteI Programmes chargés dynamiquement en mémoireI Pas de contraintes pour le programmeur

I Programmation modulaireI Partage de mémoire avec protectionI Stockage en mémoire persistante

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (41/299)

Mémoire virtuelle

I Virtualisation des adresses mémoire manipulées par lesprocessus→ illusion d'être le seul processus

I Découpage en pages (et/ou segments)I Stockage par défaut sur tout le disque

I Rappel en mémoire des pages nécessairesI Partage de pages aiséI Support matériel

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (42/299)

Page 8: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Protection des données et sécurité

I DisponibilitéI Con�dentialité : contrôle des autorisations

I Accès aux données critiques du systèmeI Accès et modi�cation des données des utilisateurs

I Authenti�cation des utilisateursI Survie à un problème technique

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (43/299)

Ordonnancement et gestion des ressources

I Accès équitable aux ressourcesI En particulier pour les travaux de même � demande �

I Di�érentiation de classes de travauxI Contrôle dynamiqueI E�cacité

I Optimisation de l'utilisation du matérielI du temps de réponse des tâchesI et de sa réactivité

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (44/299)

Ordonnancement

I Round RobinI PrioritésI Priorités dynamiquesI Contraintes dates d'échéance : deadlineI Contraintes matérielles : elevator et batchI Anticipation

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (45/299)

Deuxième partie

Concepts Généraux des systèmes d'exploitationObjectifs et historiqueConcepts générauxProcessusGestion de la mémoireProtection des données et sécuritéOrdonnancement et gestion des ressourcesStructure du système d'exploitationStructure du système d'exploitationModularité du noyauAvancées récentesMultithreadingSMP et NUMAEntrées/Sorties asynchronesSystèmes distribuésExemplesWindowsUnixLinux

Généralités

I NoyauI C÷urI Pilotes de périphériquesI Interface utilisateur

I Bibliothèque utilisateur de bas niveauI Appels système

I Gestion de la mémoire au c÷ur du systèmeI ProcessusI Systèmes de �chiersI Réseau

I Systèmes de �chiers et stockageI OrdonnancementI Communication entre processusI Réseau

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (47/299)

Deuxième partie

Concepts Généraux des systèmes d'exploitationObjectifs et historiqueConcepts générauxProcessusGestion de la mémoireProtection des données et sécuritéOrdonnancement et gestion des ressourcesStructure du système d'exploitationStructure du système d'exploitationModularité du noyauAvancées récentesMultithreadingSMP et NUMAEntrées/Sorties asynchronesSystèmes distribuésExemplesWindowsUnixLinux

Page 9: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Noyaux modulaires

I Chargement/Déchargement dynamique de codeI Pilote de périphériquesI Fonctionnalités spéci�ques

I Réduction de la taille du noyau initialI Possibilité d'évolution dynamique : pas de redémarrage !

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (49/299)

Micronoyaux : idées - 1/3

I Noyaux monolithiques trop grosI Pas organisés, même avec des couchesI Sécurité di�cile à assurer car trop d'interactionsI Di�ciles à maintenir et à faire évoluer

I MicronoyauxI Embarque uniquement le strict nécessaireI Tout le reste dans des processus serveurs dédiés

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (50/299)

Micronoyaux : design - 2/3

I Un serveur pour chaque tâcheI Processus, gestion mémoire, ordonnancement, réseau,

systèmes de �chiersI Passage de messages entre applications et serveurs, validés

par le micronoyauI Interfaces simples et uniformesI Extensible, �exible, portableI Fiable

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (51/299)

Micronoyaux : performance - 3/3

I Passage de messages plus lent qu'appel direct de procédureau noyau ?

I Trop d'interactions critiques entre les di�érentes parties dusystème d'exploitation ?

I Par exemple : mémoire et systèmes de �chiersI Di�cile de comparer avec noyaux monolithiques

I Pas de vrais OS fonctionnel fondé sur un micronoyau

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (52/299)

Deuxième partie

Concepts Généraux des systèmes d'exploitationObjectifs et historiqueConcepts générauxProcessusGestion de la mémoireProtection des données et sécuritéOrdonnancement et gestion des ressourcesStructure du système d'exploitationStructure du système d'exploitationModularité du noyauAvancées récentesMultithreadingSMP et NUMAEntrées/Sorties asynchronesSystèmes distribuésExemplesWindowsUnixLinux

Multithreading

I Exécution simultanée de plusieurs threads dans le même processusI Travailler pendant qu'un thread bloque sur une I/O

I Ressources d'exécution propresI Contexte processeur (PC et pointeur de pile)I Son propre espace mémoire pour la pile (gestion appel de sous-routine)

I Espace mémoire partagé

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (54/299)

Page 10: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

SMP et NUMA

I Nouvelles contraintes sur l'ordonnancementI Plusieurs processeurs

I ...qui peuvent e�ectuer les mêmes opérationsI Accès concurrents (mémoire, I/O...)I A�nité pour un processeur (cache, TLB, ...)I A�nité des threads d'un même processus

I Contraintes NUMAI A�nité pour certaines zones mémoire

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (55/299)

Entrées/Sorties asynchrones

I Matériel naturellement asynchroneI Soumission de commandesI Attente active de statut ou passive d'IRQ

I Remontée de l'asynchronisme jusqu'à l'applicationI Pas besoin de threads pour recouvrir les I/O

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (56/299)

Systèmes distribués

I Clusters et grappes d'ordinateursI Systèmes à image uniqueI Coopération de di�érents n÷uds

I Avec ou sans maîtreI Mémoire partagée distribuée

I Ping-Pong de pagesI Problème de synchronisation

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (57/299)

Deuxième partie

Concepts Généraux des systèmes d'exploitationObjectifs et historiqueConcepts générauxProcessusGestion de la mémoireProtection des données et sécuritéOrdonnancement et gestion des ressourcesStructure du système d'exploitationStructure du système d'exploitationModularité du noyauAvancées récentesMultithreadingSMP et NUMAEntrées/Sorties asynchronesSystèmes distribuésExemplesWindowsUnixLinux

Windows - 1/2

I Un seul utilisateurs, plusieurs tâchesI Pseudo-micronoyau

I Beaucoup d'autres fonctions du système en mode noyau→ Performance en évitant les chgs de modes, mémoire add...

I Très modulaireI Executive : base de l'OS, ensemble de gestionnaires

I I/O, Cache, Object, PnP, Power, Security, VM, Process, ...I Noyau qui contient l'ordo, gestion interrupt. et except...→ N'est pas en thread, donc pas préemptible, ni � pageable �

I HAL : Couche d'abstraction des périphériques, des controllers

I DMA, Interrupt. et except. controller, system timer..I Pilotes de périphériquesI Fenêtrage et graphisme

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (59/299)

Windows - 2/2

I Local Procedure CallsI Échange de messages entre applications et managersI Modèle Client-Server

I Support SMP, threads et communications entre processusI Design orienté objet

I Polymorphisme

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (60/299)

Page 11: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Deuxième partie

Concepts Généraux des systèmes d'exploitationObjectifs et historiqueConcepts générauxProcessusGestion de la mémoireProtection des données et sécuritéOrdonnancement et gestion des ressourcesStructure du système d'exploitationStructure du système d'exploitationModularité du noyauAvancées récentesMultithreadingSMP et NUMAEntrées/Sorties asynchronesSystèmes distribuésExemplesWindowsUnixLinux

Unix - 1/3

I Crée à la �n des années 60I Design pour serveur et réseauI Portable car rapidement écrit en C (au lieu d'asm)I Tout est �chierI Noyau (kernel) + Ensemble de bibliothèques et applications

I Appels système (System Call Interface)

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (62/299)

Unix - 2/3

I Noyau monolithiqueI Fonctionnalités communesI Gestionnaire mémoireI Périphériques blocI Périphériques caractèreI OrdonnanceurI Interface Vnode/VFS

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (63/299)

Unix - 3/3

I System V Release 4I Académique et commercial (AT&T et Sun)

I SolarisI Distribution commerciale (Sun) fondée sur SVR4I Maintenant sous GPL !

I Berkeley Software DistributionI Très répandu dans le mode académiqueI Base de MacOS X (bien modi�é depuis)

I Beaucoup d'autres...

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (64/299)

Deuxième partie

Concepts Généraux des systèmes d'exploitationObjectifs et historiqueConcepts générauxProcessusGestion de la mémoireProtection des données et sécuritéOrdonnancement et gestion des ressourcesStructure du système d'exploitationStructure du système d'exploitationModularité du noyauAvancées récentesMultithreadingSMP et NUMAEntrées/Sorties asynchronesSystèmes distribuésExemplesWindowsUnixLinux

Linux - 1/4

I Apparu en 1991I Fondé sur Minix de Tanenbaum

I Pas trop cher pour usage personnel

I Libre ! + appuis de FSF (et des progs...)I Développement collaboratif via InternetI Supporte de nombreuses architecturesI Supporte de nombreux périphériques matériel

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (66/299)

Page 12: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Linux - 2/4

I Chargement/Déchargement dynamique de modules noyauI Chargement automatique selon les besoins des applicationsI Hiérarchie fondée sur des dépendances de symboles

I Structure monolithique particulièreI Seules certaines fonctions sont accessibles aux autres modulesI Pas d'interface �xée

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (67/299)

Linux - 3/4

Processeurs

Exceptions

Périphériquebloc

Périphériqueréseau

Protocolesréseau

Systèmesde fichiersOrdonnanceurs

Processus &

Appels Système

IRQ

Signaux

virtuelleMémoire

caractèrePériphérique

Mémoire Terminaux Disques Réseau

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (68/299)

Linux - 4/4

I module_init, module_exitI module_param

I insmod, rmmod, modprobeI EXPORT_SYMBOL

Yves Caniou Programmation Système (05/06) Partie II :Concepts Généraux des systèmes d'exploitation (69/299)

Troisième partie

Processus

Concepts

Description

Exécution

Création et terminaison

Changement de contexte

Exécution du noyau

Processus et thread

Parallélisme

Détails de Linux

Buts

I Ressources disponibles pour de multiples applicationsI Toutes les applications semblent progresser simulanément

I Les processeurs physiques les exécutent en alternanceI Le processeur et les périphériques sont utilisés e�cacement

Yves Caniou Programmation Système (05/06) Partie III : Processus (71/299)

Dé�nitions du Processus

I Programme en exécutionI Instance d'un programme s'exécutant sur un ordinateurI Entité pouvant être assignée et exécutée sur un processeurI Unité d'activité caractérisée par

I L'exécution d'une suite d'instructionsI Un état courantI Un ensemble de ressources système

I 2 éléments : le code du programme, le jeu de données

Yves Caniou Programmation Système (05/06) Partie III : Processus (72/299)

Page 13: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Processus UNIX

I Processus = exécution d'un programmeI Commande (du langage de commande)I Application

I Un processus comprend :I Une mémoire qui lui est propre (mémoire virtuelle)I Contexte d'exécution (pile, registres du processeur)

I Les processus sont identi�és par leur pidI Commande ps : liste des processusI Commande top : montre l'actività c© du processeurI Primitive getpid() : renvoie le pid du processus courant (réservé)

Tas

globales

Adresses basses

(cf. malloc)Données

Code

d'adressagel'espaceTrou dans

d'exécutionPileAdresses hautes

Yves Caniou Programmation Système (05/06) Partie III : Processus (73/299)

Troisième partie

Processus

Concepts

Description

Exécution

Création et terminaison

Changement de contexte

Exécution du noyau

Processus et thread

Parallélisme

Détails de Linux

Caractérisation du processus

I À l'initialisationI Code du programmeI Ensemble de données

I Durant l'exécutionI Un identi�antI Un état (running,..)I Une prioritéI PCI Pointeurs mémoireI Contexte de donnéeI I/O status informationI Accounting information→ Bloc de contrôle géré par l'OS

Yves Caniou Programmation Système (05/06) Partie III : Processus (75/299)

État des processus

I RunningI ReadyI BlockedI NewI ExitI Suspend

Yves Caniou Programmation Système (05/06) Partie III : Processus (76/299)

Ressources système

I Tables mémoireI Tables de périphériqueI Tables des �chiersI Tables des processus

Yves Caniou Programmation Système (05/06) Partie III : Processus (77/299)

Ressources des processus

I Localisation mémoireI Données utilisateurI ProgrammeI Pile systèmeI Bloc de contrôle

I AttributsI Identi�antI Informations d'état du processus→ PC, code condition, status info, stack pointers

I Données de contrôle

Yves Caniou Programmation Système (05/06) Partie III : Processus (78/299)

Page 14: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Identi�cation d'un processus

I Identi�ants généralement numériquesI Processus cibleI ParentI Utilisateur

Yves Caniou Programmation Système (05/06) Partie III : Processus (79/299)

Données de contrôle d'un processus

I État et ordonnancementI Gestion de la mémoireI Ressources attribuées et/ou utiliséesI Communications inter-processusI PrivilègesI Données de structure

Yves Caniou Programmation Système (05/06) Partie III : Processus (80/299)

Troisième partie

Processus

Concepts

Description

Exécution

Création et terminaison

Changement de contexte

Exécution du noyau

Processus et thread

Parallélisme

Détails de Linux

État du processeur

I Registres utilisateurI Registres de statut et contrôleI Pointeurs de pile

Yves Caniou Programmation Système (05/06) Partie III : Processus (82/299)

Modes d'exécution - 1/2

I Plusieurs niveaux de privilèges dans le processeurI Accès aux registres de contrôle (comme PSW)I Instructions d'entrées/sorties de bas niveauI Gestion mémoire→ Tables de pages

I Accès à certaines zones mémoire→ Limitées par les structures pointées par certains registres

Yves Caniou Programmation Système (05/06) Partie III : Processus (83/299)

Modes d'exécution - 2/2

I Le noyau peut tout faire (mode réel)I L'utilisateur est limité (mode protégé)

I Pas d'accès à la mémoire noyau→ Non visible dans les tables de pages

I Pas d'accès bas niveau au matérielI Autre mode généralement pas/peu utilisésI Interruption/exception provoque passage en mode privilégié

Yves Caniou Programmation Système (05/06) Partie III : Processus (84/299)

Page 15: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Troisième partie

Processus

Concepts

Description

Exécution

Création et terminaison

Changement de contexte

Exécution du noyau

Processus et thread

Parallélisme

Détails de Linux

Création d'un processus - 1/2

I Obtenir un identi�ant disponibleI Allouer de l'espace pour le processusI Initialiser le bloc de contrôleI Initialiser les structures de données

Yves Caniou Programmation Système (05/06) Partie III : Processus (86/299)

Création d'un processus - 2/2

I Duplication (fork)I Partages des structures principales du processus courant→ Espace d'adressage, �chiers, signaux, ...

I Création d'un copie des structures uniquesI 2 processus identiques pour l'utilisateur

I Valeur de retour di�érente

Yves Caniou Programmation Système (05/06) Partie III : Processus (87/299)

Transformation d'un processus

I Exécution (exec)I Remplacement du programme courantI Lancement d'un nouveau programmeI Espace d'adressage complètement réinitialisé

Yves Caniou Programmation Système (05/06) Partie III : Processus (88/299)

Copy-on-write

I Partage des données le plus longtemps possibleI Création d'une copie à la première modi�cation par un des

processusI Duplication rapide (vfork)

I Copie du strict minimumI Père bloqué tant que le �ls ne s'est pas transformé

Yves Caniou Programmation Système (05/06) Partie III : Processus (89/299)

Terminaison d'un processus

I Relâchement des ressourcesI Passage d'un code de retour au pèreI Père peut attendre terminaison d'un �ls (wait)I Que faire des orphelins ?

Yves Caniou Programmation Système (05/06) Partie III : Processus (90/299)

Page 16: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Troisième partie

Processus

Concepts

Description

Exécution

Création et terminaison

Changement de contexte

Exécution du noyau

Processus et thread

Parallélisme

Détails de Linux

Changement de contexte - 1/3

I Nécessaire siI Blocage sur une I/OI Interruption (timer)I Erreur d'accès mémoire→ avec une trap, OS sait si fatal

I Appel superviseur par un prog. user→ pour l'ouverture d'un �chier par exple

I Recommandé pourI ÉquitabilitéI Réactivité

Yves Caniou Programmation Système (05/06) Partie III : Processus (92/299)

Changement de contexte - 2/3

I Véri�cations régulières que le processus courant n'abuse pasdu processeur

I Interruptions d'horlogeI Retour de traitement d'interruptionI Retour d'appel système

Yves Caniou Programmation Système (05/06) Partie III : Processus (93/299)

Changement de contexte - 3/3

FonctionnementI di�érent de Mode Switching

I À chaque cycle d'instruction, test si signal en attente→ Oui ⇒ @handler in PC + switch user mode en kernelmode

I Le context du processus est sauvé dans control blockI Déroulement

I Sauvegarde du contexte du processeur (dont PC et registres)I Mise à jour du bloc de contrôle du processus 1

I Changement de son état en particulierI Mettre le bloc de contrôle dans la queue appropriée (Ready,

blocked..)I Choisir un nouveau processus 2I Mise à jour du bloc de contrôle de 2→ Changement de son état en Running entre autre

I Mise à jour des structures d'accès à la mémoireI Restauration du contexte du processeur avant le switch du 2

Yves Caniou Programmation Système (05/06) Partie III : Processus (94/299)

Troisième partie

Processus

Concepts

Description

Exécution

Création et terminaison

Changement de contexte

Exécution du noyau

Processus et thread

Parallélisme

Détails de Linux

Exécution du noyau

OS est logicielI Doit avoir le contrôle de tout le resteI Dépend du processeur pour lui redonner ce contrôle

Plusieurs approchesI Approche traditionnelle : fonctions kernel extérieures aux processus

I Passage des processus en mode réel (noyau)I Traitement de leurs appels systèmeI Traitement des interruptions

I Changement de contexteI Changement des privilègesI Utilisation d'une pile spécialeI Sauvegarde et restauration des registres

Yves Caniou Programmation Système (05/06) Partie III : Processus (96/299)

Page 17: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Micronoyaux

I Appels système minimauxI Passage de messages

I Traitement réel du système d'exploitation en dehors du noyauI Dans les processus des serveurs dédiés

Yves Caniou Programmation Système (05/06) Partie III : Processus (97/299)

Threads noyau

I Noyaux monolithiques ont besoin de traitementssupplémentaires

I Appels système imprévisibles et pas adaptésI Handlers d'interruption trop limités

I Utilisation des threads dédiés (kernel thread)I Toujours en mode noyauI Traitent les travaux périodiques ou programmés→ Traitement lourd post-interruption

Yves Caniou Programmation Système (05/06) Partie III : Processus (98/299)

Troisième partie

Processus

Concepts

Description

Exécution

Création et terminaison

Changement de contexte

Exécution du noyau

Processus et thread

Parallélisme

Détails de Linux

Processus et threads

2 concepts indépendantsI Proprio de la ressource : processus ou tâche

I processus inclue virtual address pour le process image (prog,data, stack, attributs dé�nis dans bloc de contrôle)

I L'exécution : le threadI la trace le long de un ou plusieurs progs en particulier

Pourquoi ?I Plusieurs processus partageant des ressources

I Utilisation mémoire partagéeI Initialisation complexeI Pas forcément su�sant

I Plusieurs tâches dans un même processusI Recouvrement des blocages sur I/O

Yves Caniou Programmation Système (05/06) Partie III : Processus (100/299)

Dé�nitions

ProcessusI Unité d'allocation ressource et de protection→ Adresse virtuelle pour l'image process→ Accès protégés aux processeurs, les autres proces (comm)mais aussi �chiers, I/O...

ThreadI Un étatI Un contexte sauvegardé quand NOT RUNNING→ Une sorte de PC indép dans le processus

I Piles et contextes d'exécution distinctsI Stockage statique par thread pour variableI Accès à la mém. et ress. partagées avec autres threads du même processus

I Espace d'adressageI Fichiers ouvertsI SignauxI Identi�ants de processus

I Clônage du thread courant (clone)Yves Caniou Programmation Système (05/06) Partie III : Processus (101/299)

Threads en espace utilisateur

I Ordonnancement des threads par l'applicationI Changement de contexte, création, ... rapides

I Noyau n'a aucune connaissance des threadsI Un seul processus noyau, une seule �le d'exécution

I Besoin d'assistance du système d'exploitationI Blocage de tous les threads si un thread bloque→ Scheduler Activation

I Temps processeur pas équitable

Yves Caniou Programmation Système (05/06) Partie III : Processus (102/299)

Page 18: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Modèle 1-on-1

I Un processus système par threadI Le noyau maintient les infos contexte du process

+ infos pour thread du processI Opérations quasi-normales

I Création, terminaison, changement de contexteI Même principe que les processus→ Sauf l'espace d'adressage

I LentI pthread sur Linux 2.4

Yves Caniou Programmation Système (05/06) Partie III : Processus (103/299)

Modèle M-on-N

I N processus système pour M threads utilisateurI Avantages des deux stratégies

I Ordonnancement rapide en moyenneI Assistance du noyau pour les cas di�ciles

I NPTL sur Linux 2.6I Migration

Yves Caniou Programmation Système (05/06) Partie III : Processus (104/299)

LightWeight Processes

I 1 ou plusieurs LWP par processusI 1 thread noyau par LWPI Threads utilisateurs liés à 1 ou plusieurs LWPI Permet aux applications de contrôler leur degré de

parallélismeI thr sur Solaris

Yves Caniou Programmation Système (05/06) Partie III : Processus (105/299)

Troisième partie

Processus

Concepts

Description

Exécution

Création et terminaison

Changement de contexte

Exécution du noyau

Processus et thread

Parallélisme

Détails de Linux

Architectures parallèles

I SIMD (Single Instruction Multiple Data Stream)I MIMD (Multiple Instruction Multiple Data Stream)

I Mémoire partagée (fortement couplée)I Modèle maître/esclaveI SMP (Symmetric MultiProcessing)→ Homogène ou non

I Mémoire distribuée (faiblement couplée)→ grappes et clusters

Yves Caniou Programmation Système (05/06) Partie III : Processus (107/299)

SMP et NUMA, migration

I Exécution simultanée de plusieurs tâchesI Plusieurs processusI Plusieurs threads d'un même processus

I Contraintes matérielles sur leur placementI Éviter le partage de structures→ Défauts de lignes de cache

I Migration des tâches entre n÷udsI Avec leurs données

Yves Caniou Programmation Système (05/06) Partie III : Processus (108/299)

Page 19: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Troisième partie

Processus

Concepts

Description

Exécution

Création et terminaison

Changement de contexte

Exécution du noyau

Processus et thread

Parallélisme

Détails de Linux

Hiérarchie

I initI Threads noyauxI Services→ Dæmons

I Concoles texteI Gestionnaire de sessions graphiques

I Applications graphiques→ Terminaux

Yves Caniou Programmation Système (05/06) Partie III : Processus (110/299)

Routines principales (2.4 et 2.6)

I do_fork(�ag,stack,regs,...)I kernel_thread(func,arg,�ags)I do_exit(code)I do_execve(�le,args,envs,...)I sys_wait4(pid,&stat,options,...)

I wait_task_zombie(pid,&stat,...)

Yves Caniou Programmation Système (05/06) Partie III : Processus (111/299)

Structures noyau

I File d'exécution (struct task_struct)I Espace d'adressage (struct mm_struct)

I struct vm_area_struct et leur méthodesI /proc/<pid>/maps

I PID et table de hashage

Yves Caniou Programmation Système (05/06) Partie III : Processus (112/299)

Descripteur

I struct task_structI 4 ou 8 koI Ressources attribuéesI PID et TGIDI Liens vers père et �ls→ vers init pour les orphelins

I Pile noyau

Yves Caniou Programmation Système (05/06) Partie III : Processus (113/299)

État des processus

I TASK_RUNNINGI TASK_INTERRUPTIBLEI TASK_UNINTERRUPTIBLEI TASK_STOPPEDI TASK_ZOMBIE

Yves Caniou Programmation Système (05/06) Partie III : Processus (114/299)

Page 20: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Ordonnancement et évènements

I scheduleI schedule_timeout

I set_current_stateI wait_queue_t et wait_head_t

I add/remove_wait_queueI struct completion

I wait_for_completionI complete/complete_and_exit

Yves Caniou Programmation Système (05/06) Partie III : Processus (115/299)

Quatrième partie

Concurrence

Principes de la concurrence

Détails de Linux

Principe de l'exclusion mutuelle

Exemple : deux banques modi�ent un compte en mêeme tempsAgence Nancy1. courant = get_account(1867A)2. nouveau = courant + 10003. update_account (1867A, nouveau)

Agence Karlsruhe1. aktuelles = get_account(1867A)2. neue = aktuelles - 10003. update_account(1867A, neue)

I variables locales + exéecutions parallèles entremêelées ⇒ di�érents réesultats :I N.1 ; N.2 ; N.3 ; K.1 ; K.2 ; K.3 →I N.1 ; K.1 ; N.2 ; K.2 ; N.3 ; K.3 →I K.1 ; N.1 ; K.2 ; N.2 ; K.3 ; N.3 →

C'est une condition de compétition (race condition)

I Solution : opérations atomiques ; pas d'exécutions entremêléesI On dit que cette opération est une section critiqueI Elle doit s'exécuter en exclusion mutuelle→ la protéger par la prise d'un verrou

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (117/299)

Coopération

I Coopération par partageI Pas de connaissance explicite des autresI Modi�cations doivent conserver l'intégrité→ Sections critiques

I Accès en lecture non problématiquesI Coopération par communication

I Connaissance explicite des autresI Synchronisation via les communications

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (118/299)

Compétition

I Accès concurrents à une même ressourceI Aucune connaissance des autresI Support nécessaire dans le système d'exploitation

I Attribution de ressources à un acteur uniqueI Les autres acteurs attendent qu'il les relâche

I Nécessité de rendre la ressource dans un état intègre

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (119/299)

Interblocage (deadlock)

Exemple : carrefour lyonnais un vendredi à 18h

1

24

3

Conditions d'apparitionI Exclusion mutuelleI Un acteur possède une ressource et en attend une autreI Attente circulaireI Pas de préemption

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (120/299)

Page 21: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Comment prévenir l'interblocage ?

Solution 1 : réservation globaleI Demandes en bloc de toutes les ressources nécessairesI Inconvénient : réduit les possibilités de parallélismeI Analogie du carrefour : mettre des feux tricolores (et les respecter)

Solution 2 : requêtes ordonnéesI Tous les processus demandent les ressources dans le même ordreI Interblocage alors impossibleI Analogie du carrefour : construire un rond-point ici, avec verroux exclusifs

v-excl (f1)v-excl (f2)accès à f1 et f2dev (f2)dev (f1)

v-excl (f1)v-excl (f2)accès à f1 et f2dev (f2)dev (f1)

Solution 3 : modi�cation de l'algorithmeI Modi�er code utilisateur pour rendre impossible l'interblocageI Analogie du carrefour : on ne s'engage que si on peut sortir du carrefourYves Caniou Programmation Système (05/06) Partie IV : Concurrence (121/299)

Famine (starvation)

I Exclusion mutuelleI Acteurs en attente d'une ressource

I Privation d'un acteur au pro�t des autresI Respecter l'ordre d'arrivée des acteurs en attente

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (122/299)

Support matériel

I Désactivation des interruptionsI Instructions spéciales pour sérialiser les accès mémoireI Instructions atomiques

I test_and_setI exchange

I Attente activeI Pas de protections contre interblocage et famine

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (123/299)

Solution logicielle

Algo de Dijkstra en 1965I Pour une machine avec n

proc.I Shared memoryI Avant les sémaphoresI Attente active

→ Présentation algo au tableau

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (124/299)

Sémaphores

I Compteur initialisé strict. positifI SemWait décrémente le compteur et bloque s'il devient

négatifI SemSignal incrémente le compteur et réveille les SemWait

bloquésI Exclusion mutuelle si initialisé à 1I Attente d'évènement si initialisé à 0

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (125/299)

Moniteurs

I Objet dont des données locales sont accessibles uniquementpar ses méthodes

I Entrées dans le moniteur par une méthodeI Un seul acteur à la foisI CondWait pour suspendre l'acteur dans le moniteur en le

relâchant, jusqu'à une conditionI CondSignal pour reprendre l'exécution d'un acteur dans le

moniteur

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (126/299)

Page 22: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Schémas de synchronisationSituations usuelles se retrouvant lors de coopérations inter-processusI Exclusion mutuelle : ressource accessible par une seule entitée à la fois

I Compte bancaire ; Carte sonI Problème de cohorte : ressource partagée par au plus N utilisateurs

I Un parking souterrain peut accueillir 500 voitures (pas une de plus)I Un serveur doom peut accueillir 2000 joueurs

I Rendez-vous : des processus collaborant doivent s'attendre mutuellementI Roméo et Juliette ne peuvent se prendre la main que s'ils se rencontrentI Le GIGN doit entrer en même temps par le toit, la porte et la fenêtreI Processus devant échanger des informations entre les étapes de l'algorithme

I Producteurs/Consommateurs : un processus doit attendre la �n d'un autreI Une Formule 1 ne repart que quand tous les mécaniciens ont le bras levéI Réception de données sur le réseau puis traitement

I Lecteurs/Rédacteurs : notion d'accès exclusif entre catégories d'utilisateursI Sur une section de voie unique, tous les trains doivent rouler dans le même sensI Un �chier pouvant être lu par plusieurs, si personne ne le modi�eI Tâches de maintenance (défragmentation) quand pas de tâches interactivesComment résoudre ces problèmes avec les sémaphores ?

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (127/299)

Une instance du problème des lecteurs/rédacteurs

I Plusieurs lecteurs simultanémentI Un seul rédacteurI Éviter les famines pour les écrivainsI Éviter les ping-pong entre caches de di�érents processeurs

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (128/299)

Passage de messages

I Synchronisation naturelle car réception après envoiI Adressage du destinataire et/ou de l'émetteur

I Broadcast, ReduceI Ordonnancement FIFO ou avec prioritésI Exclusion mutuelle par l'envoi d'un message à l'unique acteur

autorisé à entrer en section critique

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (129/299)

Mécanismes de concurrence dans Unix

I Communication entre processusI TubesI MessagesI Mémoire partagée

I Déclenchement selon actions des autres processusI SémaphoresI Signaux

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (130/299)

Quatrième partie

Concurrence

Principes de la concurrence

Détails de Linux

Concurrence et synchronisation dans le noyau Linux

I Communication et synchronisation entre processus utilisateurI Mécanismes IPC (InterProcess Communication)I Mutex et sémaphores pour la synchronisation des pthreads

I Mémoire explicitement partagée dans le noyauI Beaucoup de stratégies pour la synchronisation dans le noyau

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (132/299)

Page 23: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Synchronisation dans le noyau Linux

I Performance (notamment si contention)I Support SMP (avec passage à l'échelle)I Accès plutôt en lecture ou plutôt en écritureI Minimisation des contraintes sur les di�érentes parties du

systèmeI Ne pas trop désactiver les interruptionsI Ne pas trop faire attendre les tâches déferrées

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (133/299)

Opérations atomiques

I atomic_t pour opérations entièresI void atomic_add(int i, atomic_t *v) ajoute i à vI atomic_inc_and_test(int i, atomic_t *v) teste en + si result 0

I atomic_t pour opérations sur bitsI void set_bit(int nr, void* addr) set bit nr in bitmap pointed by addr

I cmpxchgI Implantation en assembleur

I Utilisation directe des instructions atomiques quand elles sont disponiblesI Instructions CISC su�sent à peu prèsI Émulation via plusieurs instructions sur les RISC

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (134/299)

Spinlocks - 1/2

I Attente active (spin)I Utilisation d'un spinlock_t

I void spin_lock_init(spinlock_t *lock)I void spin_lock_irq(spinlock_t *lock)I Exemple

spin_lock(& lock)/* Section Critique */spin_unlock(& lock)

I rw_lock_t pour autoriser plusieurs lecteursI Big Reader Lock (br_lock_t) pour éviter ping-pong antre

les tâchesI Partage des parties nécessaires à l'accès en lecture

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (135/299)

Spinlocks - 2/2

I Ne pas dormir en tenant en lockI Désactivation de la préemptionI Pas de fonction bloquante

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (136/299)

Sémaphores

I Sommeil jusqu'à disponibilité d'une ressourceI struct semaphore

I void sema_init(struct semaphore *sem, int count)I up, downI down_interruptibleI down_trylock

I struct rw_semaphore pour autoriser plusieurs lecteurs

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (137/299)

Conditions

I Sommeil dans une queue par wait_eventI Variantes interruptibles par des signaux, avec un timeout, ...I sleep_on risqué car ne véri�e pas la condition avant de

dormirI Réveil d'une queue par wake_up

I Variantes pour réveiller plusieurs tâches

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (138/299)

Page 24: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Big Kernel Lock

I Verrou global (spinlock)I De moins en moins utilisé

I Restreint fortement la concurrenceI lock_kernel, unlock_kernel

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (139/299)

Réactivité et préemption

I Ne pas bloquer les autres en gardant un verrouI Ne pas perdre la main en tenant un verrou

I Les spinlocks désactivent la préemptionI Désactivation des interruptions

I local_irq_save/restoreI spin_lock_irqsaveI disable_irq

Yves Caniou Programmation Système (05/06) Partie IV : Concurrence (140/299)

Cinquième partie

Mémoire

Gestion de la mémoireBesoinsPartitionnement mémoireChargement et édition de lien

Mémoire virtuelleIntérêts et avantagesSupport matérielSupport logiciel

ExemplesSVR4 et SolarisWindowsDétails de Linux

Gestion de la mémoire

I Mémoire système et mémoire utilisateurI Division de la mémoire utilisateur entre les di�érents

programmesI Maximiser le nombre de processus pour maximiser l'utilisation

du matériel

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (142/299)

Cinquième partie

Mémoire

Gestion de la mémoireBesoinsPartitionnement mémoireChargement et édition de lien

Mémoire virtuelleIntérêts et avantagesSupport matérielSupport logiciel

ExemplesSVR4 et SolarisWindowsDétails de Linux

Relocalisation - 1/2

I Pas de contraintes sur le programmeurI Localisation quelconque du programme en mémoire

I Ne pas dépendre des autres programmes résidants enmémoire

I Pouvoir être évincé sur le disque puis ramené en mémoire àun endroit di�érent

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (144/299)

Page 25: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Relocalisation - 2/2

I Ajuster les références internes au programmeI DonnéesI Branchement

I Ajuster les références dans le systèmeI Facile si le système gère lui-même la relocalisation

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (145/299)

Protection

I Pas d'accès aux données des autres processus ou du systèmeI Intentionnel ou par erreur

I Détection à l'avance di�cileI Relocalisation imprévisibleI Langages autorisent calcul dynamique d'adresses

I Détection dynamique coûteuse logiciellementI Support matériel

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (146/299)

Partage

I Protection con�gurableI Partage de zones mémoire possible

I Pas de duplication de codeI Partage explicite de donnéesI Support logiciel trop coûteux

I Support matériel

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (147/299)

Organisation logique

I Mémoire linéaireI Programmes modulaires

I Protections di�érentes dans di�érents modulesI Écriture et compilation indépendantes des di�érents modules→ Références ajustées dynamiquement

I Partage de modules parmi di�érents programmesI Segmentation

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (148/299)

Organisation physique

I Structure hiérarchique de la mémoireI Mémoire principale assez rapide, mais limitée et volatileI Mémoire secondaire lente mais grande et persistante

I Ne pas contraindre le programmeurI Quels modules seront en mémoire principale ?I Si plein d'autres programmes ?

I Responsabilité du système d'exploitation

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (149/299)

Cinquième partie

Mémoire

Gestion de la mémoireBesoinsPartitionnement mémoireChargement et édition de lien

Mémoire virtuelleIntérêts et avantagesSupport matérielSupport logiciel

ExemplesSVR4 et SolarisWindowsDétails de Linux

Page 26: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Partitionnement �xe - 1/3

I Mémoire physique divisée statiquement en partitions �xesI Programme chargé dans une zone su�samment grandeI Facile à implanter, peu coûteuxI Gaspillage mémoire (fragmentation mémoire)I Nombre limité de programmes

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (151/299)

Partitionnement mémoire : taille des partitions - 2/2

I Tailles identiquesI Taille du programme ou nombre très limité de programmesI Gros gaspillage pour les petits programmes

I Tailles croissantesI Moins de fragmentation interneI Quand même relativement limité

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (152/299)

Partitionnement mémoire : algo de placement - 3/3

I Placement dans la partition la plus petite qui peut contenir leprogramme

I Utiliser une plus grande si aucune petite partition disponibleI Suspendre les processus su aucune partition disponible

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (153/299)

Partitionnement dynamique - 1/2

I Création de partition de taille optimale à la voléeI Fragmentation externe augmenteI Compactage pour réduire fragmentation

I Gaspillage de temps processeur

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (154/299)

Partitionnement dynamique : algo de placement - 2/2

I Premier espace disponible (�srt-�t)I Simple et rapideI Un peu de fragmentation

I Meilleur espace disponible (best-�t)I CoûteuxI Beaucoup de petites fragmentations

I Nouveau placement quand programme revient du disque versla mémoire principale

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (155/299)

Buddy System

I Avantages partitionnements �xes et dynamiquesI Pas trop coûteuxI Peu de fragmentation

I Listes de blocs libres de taille 1 à 2nI Allocation d'une partition dans le plus petit bloc adaptéI La partie gaspillée est convertie en petits blocsI Fusion des petits blocs à la désallocation

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (156/299)

Page 27: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Pagination

I Découpage en petits cadres physiques (frames) de taille �xeI Chaque page du processus va dans un cadre

I Pas de fragmentation externeI Fragmentation interne faibleI Table des pages pour chaque processus

I Associations page-cadreI Adresses logiques transparentes page+o�set

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (157/299)

Segmentation

I Similaire à partitionnement dynamiqueI Plusieurs segments par processus

I Fragmentation externe moindreI Pagination non transparente

I Utilisé pour séparer zones de types di�érents→ Code, données, ...

I Table des segments, avec leurs longueurs

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (158/299)

Cinquième partie

Mémoire

Gestion de la mémoireBesoinsPartitionnement mémoireChargement et édition de lien

Mémoire virtuelleIntérêts et avantagesSupport matérielSupport logiciel

ExemplesSVR4 et SolarisWindowsDétails de Linux

Chargement des programmes

I Assemblage des modules et bibliothèquesI Calcul des di�érentes adresses mémoire

I Chargement absolu→ Par le programmeur, à la compilation ou à l'assemblage

I Chargement relocalisable→ Adresses relatives au début du module

I Chargement dynamique→ Adresses relatives calculées au moment de l'exécution

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (160/299)

Édition de liens

I Utilisation de symboles pour référencer les adressesI Adresses relatives au début du moduleI Références non résolues provoquent chargement de modules

supplémentairesI Mise à jour des modules sans changer les applicationsI Partage de code facile

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (161/299)

Détails de Linux

I Le compilateur précise l'interpréteurI Le noyau lancer l'interprêteur du programme (ls.so)I Emplcement des bibliothèques : ld.so.conf et ldconfigI Emplacement des bibliothèques alternatives :

LD_LIBRARY_PATHI Bibliothèque de surcharge : LD_PRELOAD

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (162/299)

Page 28: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Cinquième partie

Mémoire

Gestion de la mémoireBesoinsPartitionnement mémoireChargement et édition de lien

Mémoire virtuelleIntérêts et avantagesSupport matérielSupport logiciel

ExemplesSVR4 et SolarisWindowsDétails de Linux

Intérêts

I Pagination et segmentation avantageuxI Usage combiné dans les systèmes modernesI Ne pas les imposer au programmeur

I Mémoire virtuelle complexeI Relation entre support matériel et logicielI Besoins logiciels très grands→ Sécurité et protection→ Flexibilité→ E�cacité

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (164/299)

Pagination et segmentation

I Les références mémoire d'un processus sont logiquesI Traduire à la volée en adresses physiquesI Support de la relocation après évinçage

I Les processus peuvent être découpés en parties non contiguësen mémoire physique

I Pages ou segments

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (165/299)

Résidence mémoire

I Un processus peut s'exécuter sans que toutes ses partiessoient en mémoire

I Le système charge les parties nécessaires au fur et à mesureI Exception dans le processeur en cas de défaut de pageI I/O pour charger les pages en mémoire→ Processus en attente, un autre peut s'exécuter pdt I/O→ Processus en Ready State qd I/O terminée

I Localité mémoire pour le code et les donnéesI Béné�ces attirantsI Éviter le TrashingI Faisabilité de la solution théorique ?

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (166/299)

Autres avantages

I Les processus utilisent moins de mémoire physiqueI Plus de processus peuvent être chargés simultanément

I Meilleure utilisation du processeurI Un processus peut utiliser plus de mémoire virtuelle qu'il n'y

a de mémoire physiqueI Pas de contraintes sur le programmeur

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (167/299)

Cinquième partie

Mémoire

Gestion de la mémoireBesoinsPartitionnement mémoireChargement et édition de lien

Mémoire virtuelleIntérêts et avantagesSupport matérielSupport logiciel

ExemplesSVR4 et SolarisWindowsDétails de Linux

Page 29: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Table des pages - 1/2

I Ensemble d'associations page + cadre physiqueI Page Table EntryI Ensemble de bits décrivant les propriétés→ Present, Modi�ed, ...

I Début de la table dans un registre spécialI Table stockée en mémoire

I Virtuelle pour ne pas monopoliser trop de physique

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (169/299)

Table des pages - 2/2

I Traduction par parcours de di�érents niveaux (entre 1 et 4)I Exemple avec adresse virtuelle 32 bits

I 10 bits pour 1erniveau de la tableI 10 bits pour 2eniveauI 12 bits d'o�set

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (170/299)

Table des pages inversée

I Table des pages normale trop grandeI Une entrée par cadre physique

I Identi�ant du processus propriétaireI Page du processusI Bits de contrôleI Données de chaînage→ Pour les pages partagées

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (171/299)

Translation Lookaside Bu�er

I Une référence mém. virtuelle peut causer deux accès mém.physique

I Au moins un pour lire l'entrée de la table de pagesI Un pour lire la donnée

I Cache matériel pour l'éviterI Mapping associatif pour recherche rapideI TLB dans la Memory Management Unit

I MMU dans le processeurI Placés entre caches de niveau 1 et 2

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (172/299)

Taille des pages - 1/2

I Si trop petitI Trop de pages, tables trop grandesI Moins de localité→ Plus de défauts de page

I TLB moins e�cace→ Taille matérielle limitée

I Si trop grandI Trop de fragmentationI Moins d'impact de la localité→ Plus de défaut de page

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (173/299)

Taille des pages - 2/2

I Taille idéale dépendI Mémoire physique disponibleI Taille des programmesI Techniques modernes de programmation→ Orienté objet, multithreadé, ...

I Tailles multiplesI Grandes zones contiguës peuvent être mappées avec petit nb

de grandes pagesI Supporté par beaucoup d'architectures→ Peu de support dans les systèmes d'exploitation

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (174/299)

Page 30: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Segmentation

I Partitions de taille variable et dynamiqueI Table des segments

I Adresse de base dans un registreI Recherche associative tenant compte de la longueurI Un seul niveau

I Bits similaires à ceux des tables de pagesI Segments visibles pour le programmeur

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (175/299)

Combiner Paging et Segmentation

I Ensemble de segments découpés en pagesI Une table des segments et plusieurs tables des pagesI Adresse logique segment + page + o�setI Support par la plupart des architectures

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (176/299)

Protection et partage

I Protection par les segmentsI Accès invalide si en dehors

I Partage explicite par partage de segments entre processusI Partage de pages invisible pour le programmeurI Utilisation d'anneaux privilégiés pour dé�nir les autorisations

d'accès à certaines zones

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (177/299)

Cinquième partie

Mémoire

Gestion de la mémoireBesoinsPartitionnement mémoireChargement et édition de lien

Mémoire virtuelleIntérêts et avantagesSupport matérielSupport logiciel

ExemplesSVR4 et SolarisWindowsDétails de Linux

Clés du design

I La gestion de la mémoire dans un système d'exploitationdépend de

I L'utilisation de la mémoire virtuelle→ Support matériel nécessaire

I L'utilisation de la pagination et/ou de la segmentation→ Support matériel nécessaire

I Les di�érents algorithmes utilisés→ Prendre des décisions en faveur de l'e�cacité du système...(très di�cile)

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (179/299)

Politique de chargement

I Quand charger une page en mémoire ?I À la demande (demand paging)

I Beaucoup de défauts de pages au débutI Localité réduit les défauts de pages par la suite

I À l'avance (pre-paging)I Exploitation du matériel (disque)→ Lecture de plusieurs blocs contigus plus e�cace

I E�cace au début du programmeI Peut-être nuisible par la suite

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (180/299)

Page 31: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Politique de placement

I Important pour la segmentationI Inutile si paginationI Critique sur NUMA

I Placer les pages à côté des processeurs qui en ont besoinI Problème si allocation et utilisation à des endroits di�érents→ Allocation fainéante

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (181/299)

Politique de remplacement - 1/2

I Si la mémoire est pleineI Libérer des pages pour en charger des nouvelles

I Gestion des pages résidentesI Combien de pages de chaque processus peuvent résider en

mémoire ?I Supprimer n'importe quelle page ? Ou bien une du processus

qui veut charger une page ?

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (182/299)

Politique de remplacement - 2/2

I Quelle page supprimer ?I Celle qui a le moins de chances d'être utilisée dans un futur

proche ?I Localité tend à ce que ce soit la page la moins récemment

utiliséeI Support matériel nécessaire

I VerrouillageI Pages importantes ne peuvent pas être évincées

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (183/299)

Algorithmes pour le remplacement - 1/2

I OptimalI Évincer la page qui sera utilisée le plus tardivementI Impossible car nécessite de connaître l'avenir

I Last Recently UsedI Algorithme naturel d'après le principe de localitéI Semble bon d'après expérienceI Di�cile à implanter dans le matériel→ Marquer les pages

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (184/299)

Algorithmes pour le remplacement - 2/2

I First-In-First-OutI Pages évincées en Round-Robin dans un tampon circulaireI Simple à implanter dans le matérielI Pas e�cace

I Politique de l'horlogeI FIFOI Semble bon d'après expérienceI Di�cile à implanter dans le matériel→ Marquer les pages

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (185/299)

Page Bu�ering

I Les pages non-utilisées sont placées dans une liste spécialemais pas e�acées

I Liste des pages modi�ées ou pas modi�éesI En cas de défaut de page, on regarde d'abord si la page est

dans la listeI Optimisations en lien avec le cache

I Éviter les défauts de cache quand une page est évincée

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (186/299)

Page 32: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Politique de nettoyage

I Quand écrire sur le disque une page modi�ée ?I À la demande (Demand Cleaning)

I Quand elle est évincéeI Défaut de page plus lent

I À l'avance (Pre-cleaning)I Permet de regrouper les écriture (Batch)I Dommage si modi�ée juste après

I Combinaison avec Page Bu�eringI Écriture régulière et passage en état non-modi�é

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (187/299)

Degré de multiprogrammation

I Si peu de processusI Matériel pas bien utilisé

I Si trop de processusI Trop de défaut de pages

I Adapter la fréquence des défauts à leur coûtsI Suspendre des programmes

I Ceux dont la probabilité de faute est trop grande

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (188/299)

Cinquième partie

Mémoire

Gestion de la mémoireBesoinsPartitionnement mémoireChargement et édition de lien

Mémoire virtuelleIntérêts et avantagesSupport matérielSupport logiciel

ExemplesSVR4 et SolarisWindowsDétails de Linux

Pagination dans SVR4 et Solaris

I Pagination pour les processus et blocs disqueI Pages décrites par

I Table de pagesI Descripteurs de bloc disqueI Table des cadres physiquesI Table d'utilisation du swap

I Remplacement par horloge

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (190/299)

Kernel Memory Allocator de SVR4 et Solaris

I Allocation des petites zonesI Moins d'une pageI Toutes les structures internes au noyau

I Lazy Buddy AlgorithmI Fusion des blocs pas immédiate→ Dépassement d'un seuil→ Quand vraiment nécessaire

I Remplacement par horloge

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (191/299)

Cinquième partie

Mémoire

Gestion de la mémoireBesoinsPartitionnement mémoireChargement et édition de lien

Mémoire virtuelleIntérêts et avantagesSupport matérielSupport logiciel

ExemplesSVR4 et SolarisWindowsDétails de Linux

Page 33: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Adressage dans Windows

I Espace utilisateur privé pour chaque processusI Espace paginéI Entre 0 et 2 Go→ Zones spéciales autour pour détecter les débordements

I Espace système partagéI Entre 2 et 4 Go→ Micronoyau→ Executive→ Pilotes de périphériques

I Remplacement par horloge

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (193/299)

Cinquième partie

Mémoire

Gestion de la mémoireBesoinsPartitionnement mémoireChargement et édition de lien

Mémoire virtuelleIntérêts et avantagesSupport matérielSupport logiciel

ExemplesSVR4 et SolarisWindowsDétails de Linux

Généralités sur la mémoire dabs dans Linux

I Surtout de la paginationI Un peu de segmentation quand l'architecture le nécessite

I Toute la mémoire pour le noyauI La mémoire utilisateur pour les processusI Quelques segments spéciaux

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (195/299)

Espace d'adressage

I Espace utilisateur privéI Entre 0 et PAGE_OFFSET (3 Go sur IA32)I Divisé en di�érentes zonesI swappable

I Espace noyau partagéI Au dessus de PAGE_OFFSETI Accessible uniquement en mode réel (privilégié)I Pas swappable

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (196/299)

Structures mémoire

I Espace d'adressage (struct mm_struct)I Zones utilisateur (struct vm_area_struct)→ Sauf pour les threads noyaux

I Table de pages (pgd_t,pmd_t,pte_t)I Cadre physique (struct page)

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (197/299)

Espace utilisateur - 1/2

I Espace divisé en di�érentes zonesI struct vm_area_structI Caractérisée par localisation, protection, verrouillageI Méthodes décrivant comment les manipuler→ Par exemple en cas de défaut de page

I Détaillé dans /proc/<pid>/mapsI Code en lecture seuleI Données en lecture et écriture

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (198/299)

Page 34: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Espace utilisateur - 2/2

I Code placé en basI Tas juste au dessus

I Données globalesI malloc() utilise sbrk() pour l'agrandir→ Modi�cation de la VMA du tas dans do_brk()

I Pile tout en hautI S'agrandit automatiquement

I Grand espace libre entre les deux

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (199/299)

Mapping en espace utilisateur

I VMA correspond au mapping d'un �chierI Mapping anonyme pour les données normales→ Pile et tas

I Mapping du programme→ En lecture seule pour le code→ En lecture et écriture pour les données

I Mapping des bibliothèques→ En lecture seule pour le code→ En lecture et écriture pour les données

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (200/299)

Modi�cations de l'espace utilisateur

I Mapping explicite d'un �chier par l'utilisateurI Appels système mmap(), mremap(), munremap()

I Routines noyau pour manipuler les VMAI do_mmap(), do_mremap(), do_munmap()I Fichiers mappés sous la pile→ Avec les bibliothèques

I Utilisé par malloc() pour les grandes allocationsI Permet de partager de la mémoire

I Les mapping peuvent être privés ou partagés

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (201/299)

Accès aux données utilisateur

I Espace d'adressage réellement divisé entre parties utilisateuret noyau

I Cas particuliers 4Go/4GoI Pas accès à la mémoire noyau en mode utilisateurI Accès à la mémoire utilisateur en mode noyau

I Adresses non déférençablesI get/put_user(addr,lentgh)I copy_from/to_user(to,from,length)I Mapping des pages cibles

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (202/299)

Cadres physiques dans Linux

I Grand tableau linéaire de struct page décrivant tous lescadres physiques

I Indexé par Page Frame NumberI Stockés après mem_map

I Pas de pointeurs vers la page virtuelle dans la plupart des casI Car le cadre peut être partagé

I Bits de protectionsI Pointés par la table de pages

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (203/299)

Tables de pages - 1/2

I 3 (ou 4) niveaux selon les noyauxI Niveaux réels dépendant de l'architecture

I Page Global DirectoryI pgd=pgd_offset(mm,address)

I Page Middle DirectoryI pmd=pmd_offset(pgd,address)

I Page Table EntryI pte=pte_offset(pmd,address)

I Cadre physiqueI page=pte_page(pte), pfn=pte_pfn(pte)

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (204/299)

Page 35: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Tables de pages - 2/2

I pgd=pgd_offset(mm,address)I pmd=pmd_offset(pgd,address)I pte=pte_offset(pmd,address)

I pte_offset_map(pmd,address)I page=pte_page(pte)I Véri�cation des di�érentes étapes

I Existence : pgd/pmd/pte_none()I Présence en mémoire : pgd/pmd/pte_present()I Validité : pgd/pmd_bad()

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (205/299)

Espace mémoire du noyau

I Mapping linéraire de la mémoire physiqueI virt_to_phys() et phys_to_virt() valides→ Translation de PAGE_OFFSET

I Physiquement contiguI Limité à 896 Mo sur IA32→ Toute la mémoire physique n'y est pas

I Espace vmallocI Mapping �xes

I Mémoire des périphériques et High Memory

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (206/299)

High Memory

I Cadres physiques non mappés dans l'espace linéraire du noyauI N'importe quel cadre physique peut être mappé

temporairementI addr=kmap(page) et kunmap(page)I addr=kmap_atomic(page,type) et

kunmap_atomic(page,type)→ Visible sur un seul processeur→ Ne doit pas durer longtemp

I Nombre illimité

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (207/299)

Mapping de pages utilisateur dans le noyau

I Manipulation intense de pages utilisateur dans le noyauI get_user_pages() donne les cadres physiques (struct

page)I Mapping dans le noyau par kmapI Possibilité de déréférencer comme n'importe quelle structure

noyauI Démapper (kunmap) puis relâcher les pages

I page_cache_release(page)

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (208/299)

Mapping linéaire de la mémoire

I Code tout en basI Ensemble de pages disponibles

I Peuvent être allouées dans le noyau→ alloc_pages et free_pages

I Peuvent être utilisées pour les espaces utilisateurI Ensemble de Slab Caches utilisant pages du mapping linéraire

I Ensemble de zones de tailles �xes préallouéesI Buddy Algorithm

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (209/299)

Allocation mémoire dans le noyau - 1/2

I Allocation d'une structure de type précisI kmem_cache_alloc(cache,flags) etI kmem_cache_free(cache,ptr)

I Création d'un cacheI kmem_cache_create et kmem_cache_destroy

I Allocation d'une structure de taille préciseI kmalloc(taille,flags) et kfree(ptr)I Implanté par un cache de taille 2n supérieure→ de 32 octets à 128 ko

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (210/299)

Page 36: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Allocation mémoire dans le noyau - 2/2

I Di�érents �ags pour décrire ce que le Slab Allocator peuttenter pour allouer la mémoire

I Exemples de �ags internes→ __GFP_WAIT si on peut bloquer→ __GFP_IO si on peut faire des entrées/sorties→ __GFS_HIGHMEM si on peut prendre des pages HighMem

I Exemples de �ags manipulés par le programmeurs→ __GFP_KERNEL pour les allocations normales→ __GFP_ATOMIC dans un contexte risqué→ __GFS_NOFS dans un contexte d'accès aux �chiers

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (211/299)

Zones de mémoires non-contiguës

I Slab Allocator limité aux zones assez petitesI Zones physiquement contiguës pas toujours utilesI ptr=vmalloc(size) et vfree(ptr)

I Alloue des pages quelconques→ alloc_pages et __GFP_HIGHMEM

I Les mappe contigument dans l'espace Vmalloc→ Dans l'espace du noyau

I Utilisé pour charger les modules

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (212/299)

Le Swap - 1/2

I Pages transférées sur une partition de swapI Zones anonymes des processusI Mapping privés dans les processus

I Partition divisée en slots de la taille d'une pageI Mapping partagés et cache de �chiers écrits sur leur partition

d'origineI Libération des pages non récemment utilisées

I Listes de pages actives et inactives

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (213/299)

Le Swap - 2/2

I Quand swapper ?I Quand une allocation est impossibleI kswapd véri�e régulièrement qu'il y a su�samment de pages

libresI try_to_free_pages()I shrink_caches()

I Réduire les Slab Caches

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (214/299)

Laziness

I Ne rien faire avant que ce ne soit nécessaireI Allouer réellement les pages→ Attente d'un défaut de page

I Libérer les pages inutiles→ Attente qu'il n'y ait plus de mémoire libre→ Linux utilise souvent toute la mémoire disponible

I Dupliquer les pages partagées→ Attente de la première modi�cation concurrente

I Moins d'utilisation processeur et mémoire

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (215/299)

Exceptions et défauts de page

I handle_mm_fault(mm,vma,addr,wr)I handle_pte_fault()

I Page pas encore réellement allouéeI do_no_page()

I Page d'un �chier pas encore réellement mappéeI do_file_page()

I Page swappéesI do_swap_page()

I Page partagée mais encore privéeI do_wp_page()

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (216/299)

Page 37: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Copy-on-Write

I Pages dupliquées au dernier momentI À la première modi�cation

I Permet un partage de code facileI Bibliothèques systèmeI Après un fork()

I Utilisé pour allouer des pages initialisées à 0

Yves Caniou Programmation Système (05/06) Partie V : Mémoire (217/299)

Sixième partie

Entrées/Sorties

Périphériques

Fonctionnalités pour les entrées/sorties

Conception des entrées/sorties dans un système d'exploitation

ExemplesSVR4WindowsDétails de Linux

Types de périphériques

I Interaction avec l'hommeI Entrée : clavier, souris, scanner, etc.I Sortie : écran, imprimante, retour de force, etc.

I Interaction interne à la machineI Stockage, senseurs, contrôleurs, etc.

I Interaction entre machinesI Carte réseau, modem, etc.

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (219/299)

Caractéristiques des périphériques

I Taux de transfertI ApplicationI Complexité du contrôleI Unité de transfertI Représentation des donnéesI Gestion des erreurs

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (220/299)

Taux de transfert

I Clavier et souris : 100 bits/sI Modem : 56 kb/sI Disquette, imprimante, scanner : 1 Mb/sI Disque optique, Ethernet : 10 Mb/sI Mémoire : 10 Gb/s

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (221/299)

Sixième partie

Entrées/Sorties

Périphériques

Fonctionnalités pour les entrées/sorties

Conception des entrées/sorties dans un système d'exploitation

ExemplesSVR4WindowsDétails de Linux

Page 38: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Évolution des entrées/sorties

I Le processeur contrôle toutI Les contrôleurs de périphériques peuvent traiter les

commandesI Les contrôleurs peuvent interrompre le processeurI Les contrôleurs peuvent accéder directement à la mémoire

centraleI Les contrôleurs deviennent programmables

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (223/299)

Programmed I/O

I Processeur émet une commande à un périphériqueI Le périphérique traite la requêteI Le processeur attend de manière active le changement d'un

registre de statut du périphériqueI Le périphérique change le registre quand il a terminé et

indique le succès ou une erreur

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (224/299)

Interrupt-driven I/O

I Processeur émet une commandeI Le périphérique traite la requêteI Le processeur continue son exécutionI Le périphérique émet une interruption quand il a terminéI Le processeur s'interrompt et interroge le périphérique pour

savoir si la requête a été traitée avec succès

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (225/299)

Direct Memory Access - 1/2

I Un moteur DMA gère la transfert de données entre lamémoire principale et un périphérique

I Le processeur envoie une requête de transfert à un moteurDMA

I Le moteur DMA interrompt le processeur lorsque le transfertest terminé

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (226/299)

Direct Memory Access - 2/2

I RequêteI Lecture ou écriture ?I Adresse du périphériqueI Adresse en mémoire centraleI Longueur

I Moteurs DMA placés sur les périphériques ou sur le busd'entrées/sorties

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (227/299)

Quelle stratégie utiliser ?

I Si le traitement par le périphérique est longI Interruption→ Pas d'attente active

I Si la quantité de données à transférer est grandeI DMA→ Pas de gaspillage du temps processeur

I Si la requête est simple à traiterI PIO

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (228/299)

Page 39: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Sixième partie

Entrées/Sorties

Périphériques

Fonctionnalités pour les entrées/sorties

Conception des entrées/sorties dans un système d'exploitation

ExemplesSVR4WindowsDétails de Linux

Objectifs

I E�cacitéI Les I/O sont le maillon faibleI Multiprocessus pour maximiser l'utilisationI Swap pour augmenter le nombre processus actifs→ C'est une I/O de plus

I GénéralitéI Voir les périphériques de manière uniformeI Organisation hiérarchique et modulaire

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (230/299)

Structure logique - 1/2

I I/O logiquesI Périphériques logiques (virtuels)→ Systèmes de �chiers→ Protocoles réseau→ Terminaux

I Accessibles aux processus utilisateurI I/O physique

I Périphériques physiquesI Accessibles surtout à travers des I/O logiques→ Structure organisée exposée par les I/O logiques

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (231/299)

Structure logique, exemple - 2/2

I Accès aux �chiers depuis un processusI I/O logique

I Conversion du chemin d'accès en identi�ant de �chierI Conversion du contenu du �chier en blocs d'un périphérique

I I/O physiqueI Conversion en blocs physiques sur un disqueI Passage de commandes IDE de bas de niveau

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (232/299)

Entrées/sorties bu�erisées 1/3

I Pages mises en jeu ne peuvent pas être évincéesI Zones mises en jeu par forcément alignéesI I/O réelles e�ectuées par le système

I Copie temporaire dans/depuis le systèmeI Éviter des I/O en gardant les données dans le systèmeI Regrouper les I/O dans le systèmeI Réduire le blocage des applications→ Seul le système attend à la �n de l'I/O réelle

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (233/299)

Entrées/sorties bu�erisées 2/3

I I/O orientées blocI Disque dur, CDCROM, bande, etc.I Le système manipule des blocsI L'application utilise une granularité quelconque

I I/O orientées caractèreI Terminaux, réseau, imprimante, souris, clavier, etc.I Le système stocke les données en attente dans le �ux

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (234/299)

Page 40: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Entrées/sorties bu�erisées 3/3

I Bu�er uniqueI Un bu�er par I/O demandée par l'application

I Bu�er multiple ou circulaireI Un bu�er en copié pendant que l'autre subit I/O

I Cache généralI Partagé entre les applicationsI Multiplexage des �ux par caractère

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (235/299)

Entrées/Sorties asynchrones

I Utilisé dans le système si Interrupt-drivenI Nécessaire dans le système pour multiplexage

I Ne pas bloquer le système pendant une I/OI Peu habituel dans les applications

I Interface standard bloquanteI Interfaces modernes deviennent asynchrones

I Recouvrir les I/O sans utiliser des threadsI Soumission de requêtesI Récupération de noti�cation de complétion plus tard

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (236/299)

Cache disque

I Ensemble de bu�ers système partagés entre les applicationsI Pages disque conservées en mémoire

I Évincées par algorithme de type LRU→ Gérées comme les pages des processus

I Préchargement des pages suivantesI Principe de localité

I Écritures disque déferrées et regroupées

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (237/299)

Sixième partie

Entrées/Sorties

Périphériques

Fonctionnalités pour les entrées/sorties

Conception des entrées/sorties dans un système d'exploitation

ExemplesSVR4WindowsDétails de Linux

Entrées/sorties dans Unix SVR4

I Chaque périphérique est un �chier spécialI Accès uniforme aux périphériques et aux �chiers

I Bu�er CacheI Organisé en table de hachage

I Character QueueI Modèle producteur/consommateur→ Un seul lecteur possible

I I/O non bu�erisées possibles

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (239/299)

Sixième partie

Entrées/Sorties

Périphériques

Fonctionnalités pour les entrées/sorties

Conception des entrées/sorties dans un système d'exploitation

ExemplesSVR4WindowsDétails de Linux

Page 41: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Entrées/sorties dans Windows

I I/O managerI Cache managerI Pilotes de systèmes de �chiersI Pilotes réseauI Pilotes de périphériques matériel

I I/O synchrones ou asynchronesI 4 techniques de noti�cation

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (241/299)

Sixième partie

Entrées/Sorties

Périphériques

Fonctionnalités pour les entrées/sorties

Conception des entrées/sorties dans un système d'exploitation

ExemplesSVR4WindowsDétails de Linux

Accès utilisateur aux périph. en mode char - 1/2

I Fichier spécialI mknod /dev/mychr c <major> <minor>I Correspond à un périphérique réel ou non→ Peut être un simple point d'entrée dans le noyau

I Manipulé comme n'importe quel �chierI register_chrdev(major,name, fops)

I major identi�e le fonctionnement du périphérique→ /proc/devices

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (243/299)

Accès utilisateur aux périph. en mode char - 2/2

I Comportement du �chier spécial con�gurable par ses structfile_operations

I open, release, read, write, mmap, fsync, etc.I Fichier stocké dans un struct inode

I Champ i_rdev donne les major et minor→ minor est un paramètre

I Instance du �chier ouvert dans un struct fileI Champ private_data pour stocker des données

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (244/299)

Accès utilisateur aux périph. en mode bloc - 1/2

I Fichier spécialI mknod /dev/myblk b <major> <minor>I Correspond à un disque réel ou virtuel

I register_blkdev(major,name)I /proc/devices

I Comportement normal du �chier spécialI Comme tous les disques

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (245/299)

Accès utilisateur aux périph. en mode bloc - 2/2

I Chaque disque est décrit par struct gen_diskI Enregistré par add_disk()

I Quelques opérations spéci�ques con�gurablesI struct block_device_operations

I Déclaration d'une fonction de traitement des requêtesd'entrées/sorties

I blk_init_queue(request_queue_t*queue,request_fn_proc *request)

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (246/299)

Page 42: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Les IOCTL : Input Output ConTroL

I Permet de dé�nir un ensemble de commandesI Spéci�que à un périphérique (logique ou physique)I Évite de dé�nir de nouveaux appels systèmeI Appel système ioctl(fd,cmd,arg)I Champ ioctl des file_operations et des

block_device_operationsI Échange de données avec l'espace utilisateur

I Utilisation du champ arg pour passer un pointeur

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (247/299)

Détection des périphériques PCI

I Reconnus par struct pci_device_idI vendor, device, etc.→ Peuvent être PCI_ANY_ID

I class et class_maskI Données spéci�que au pilote

I Dans struct pci_driverI Liste des périphériques gérés par le driverI Avec le nom du piloteI Et les fonctions d'initialisation (probe) et arrêt (remove) du

périphérique

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (248/299)

Initialisation des périphériques PCI

I int pci_register_driver(struct pci_driver *drv)I Initialise tous les périphériques reconnus→ Sauf ceux déjà gérés par un pilote

I Crée un struct pci_dev décrivant le périphérique→ Ressources disponibles, ligne d'interruption, etc.

I Appel de la fonction probe du piloteI pci_enable_device active le périphériqueI pci_read_config_byte donne des infos

I PCI_REVISION_ID

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (249/299)

Accès aux ressources des périphériques PCI

I struct pci_dev listées par lspci -vvI ou /proc/pci

I Ressources spéci�ques disponiblesI pci_ressource_flags donne le type→ Mémoire ou ports I/O, avec des caractéristiques

I pci_ressource_start/end/len donnent les adressesI pci_request_region pour réserver ces ressources

I Même principe pour les autres types de bus

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (250/299)

Accès aux ports I/O

I Ensemble de registres de contrôle et statut rendus (CSR)accessibles par les périphériques

I Organisés par le BIOSI /proc/ioports

I Utilisés pour les PIOI Lecture parint/inw/inl(port)I Écriture par outb/outw/outl(val,port)I Su�xe _P pour forcer des pauses

I Mapping pas forcément linéraire

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (251/299)

Accès à la mémoire des périphériques - 1/2

I Ensemble de zones mémoire rendues disponibles par lespériphériques

I Organisées par le BIOSI /proc/iomem

I Espace mémoire I/O pas toujours identique à l'espacemémoire normal du processeur

I Remapper la mémoire I/O dans la table des pages duprocesseur

I Mapping pas forcément linéraire

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (252/299)

Page 43: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Accès à la mémoire des périphériques - 2/2

I ioremap/ioremap_nocache(addr,size)I Similaire à vmalloc

I Pas forcément déférençableI Lecture par readb/readw/readl(addr)I Écriture par writeb/writew/writel(val,addr)

I Barrières mémoires pour éviter réordonnancementmb/rmb/wmb()

I iounmap(addr)

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (253/299)

Accès utilisateur à la mémoire des périphériques

I Mapping d'un chrdev spéci�queI Con�gurations de son opération mmap

I Remapping de PTE dans une autre VMAI remap_page_range(vma,vaddr,paddr,size,prot)→ remap_pfn_range(vma,vaddr,pfn,size,prot)

I Utilisation des PTE créées par ioremap

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (254/299)

DMA et adresses de bus

I Pas forcément les mêmes adresses pour les périphériquesI Adresses de bus dma_addr_t

I Adresses ISA identiques aux adresses physiquesI Adresses PCI pas nécessairement identiques

I IOMMU sur certaines architecturesI virt_to_bus/bus_to_virt dans la mapping linéraire du

noyau, sur certaines architecturesI Mapping PCI spéci�que des pages concernées

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (255/299)

DMA et mapping PCI

I pci_dma_supported(pci_dev,mask)I pci_set_dma_mask(pci_dev,mask)

I Mapping persistant (consistent)I dma=pci_map_single(pd_dev,vaddr,size,direction)→ PCI_DMA_BIDIRECTIONAL, PCI_DMA_TODEVICE, etc.

I pci_map_page et pci_map_sg

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (256/299)

Programmation d'un traitant d'interruption

I Déclaration de l'interfaceI request_irq(irq,func,flags,name,data)I Numéro de la ligne d'interruptionI Fonction chargée de traiter l'interruption→ irqreturn_t func(irq,data,regs)

I SA_SHIRQ pour accepter de partager la ligne avec d'autrespériphériques

I Nom du périphériqueI Donnée spéci�que du pilote

I /proc/interrupts

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (257/299)

Traitement des interruptions - 1/1

I Le noyau appelle le traitant programmé pour chaquepériphérique de la ligne d'interruption

I Véri�cation du statut du périphériqueI IRQ_NONE si le périphérique n'est pas concerné

I Traitement de l'interruptionI Stockage des informationsI Programmation du traitement lourd

I Mise à jour du statut du périphériqueI Renvoi de IRQ_HANDLED

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (258/299)

Page 44: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Traitement des interruptions - 2/2

I Interruptions traitées dans contexte très spécialI Ne s'exécute pas dans le contexte d'un processus→ Ne peut accéder à l'espace utilisateur

I Ne peut pas passer la main→ Ne pas dormir (sleep_on() ou wait_event())→ kmalloc avec GFP_ATOMIC uniquement→ Pas d'accès aux pages swappables

I Certaines interruptions sont désactivées→ Ne pas nuire à la réactivité trop longtemps

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (259/299)

Travaux déferrés

I Le traitant d'interruption est très limité (Top Half)I Le vrai travail est programmé et e�ectué plus tard dans un

contexte normal (Bottom Half)I S'exécute avec les interruptions activées→ Meilleure réactivité du système→ Latence légèrement supérieure en moyenne

I Moins de blocage en cas d'interruptions en rafaleI Implantatable dans un thread noyauI Interface noyau dédiée

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (260/299)

Bottom Halves

I Plusieurs stratégies disponibles dans le noyauI BH et Task Queues supprimés depuis 2.5I Soft IRQ→ Réservé aux tâches critiques

I Tasklet→ Plus souple

I Pas exécuté dans le contexte d'un processusI Ne peut pas dormirI Ne peut appeler schedule()

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (261/299)

Soft IRQ

I 32 alloués statiquement à la compilationI Classés par priorité

I Initialisé pas open_sofirqI Exécuté régulièrement par do_softirqI Un thread noyau dédié par processeur ksoftirqd/<cpu>

I Exécution concurrente

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (262/299)

Tasklets

I Création et destruction dynamiquesI Implantation au dessus d'un Soft IRQ spécialI Pas d'exécution concurrente d'un même TaskletI DECLARE_TASKLET(name,func,data)I tasklet_schedule

I Exécution dans un futur procheI tasklet_disable/enable

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (263/299)

Synchro. des di�. contextes en jeu dans les I/O

I Traitant d'interruption contre Bottom HalfI Verrou et interdiction d'être interrompu par un traitant→ spin_lock_irqsave/spin_unlock_irq restore

I Bottom Half contre contexte de processusI Verrou→ spin_lock/spin_unlock

I Interdiction d'être préempté par un Bottom HalfI local_bh_disable/enable

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (264/299)

Page 45: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Work queues

I Travail déferré qui peut dormirI S'exécute dans un thread noyau evnts/<cpu>→ Ou dans un thread noyau spéci�que

I Allocation mémoire, sémaphore, etc.I DECLARE_WORK(name,func,data)I schedule_workI flush_scheduled_workI schedule/cancel_delayed_work

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (265/299)

Attente d'évènement avec un �chier en mode caractère

I Les appels systèmes poll et select attendent sur unensemble de descripteurs

I Processus placé dans les wait_queue par l'opération polldes descripteurs

I unsigned int my_poll(file,poll_table)→ Utilise souvent pdl_wait→ Renvoie les évènements

I Les pilotes concernés réveillent la wait_queue en casd'évènement

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (266/299)

Rqs : Interruptions

I 16 interruptions matériellesavec Programmable InterruptController (PIC)

I Jusqu'à 256 avec l'APIC

Maître Esclave UtilisationIRQ0 TimerIRQ1 ClavierIRQ2 Connexion avec esclave

IRQ9 RéservéIRQ10 RéservéIRQ11 RéservéIRQ12 RéservéIRQ13 Copro arithm.IRQ14 Contrôl. disqueIRQ15 Réservé

IRQ3 Port série 2IRQ4 Port série 1IRQ5 Port // 2IRQ6 Contrôl. D7IRQ7 Port // 1

Yves Caniou Programmation Système (05/06) Partie VI : Entrées/Sorties (267/299)

Septième partie

Ordonnancement

Objectifs de l'ordonnancement

Fonctionnement

Ordonnancement des entrées/sorties

ExempleOrdonnancement des processus dans UnixOrdonnancement des processus dans Linux

Types d'ordonnancement

I À long termeI Quels processus vont être exécutés ?

I À moyen termeI Quels processus sont résidents en mémoire ?

I À court termeI Quel processus est exécuté par le processeur ?

I Entrées/sortiesI Quelles I/O de quel processus sont traitées par un

périphérique disponible ?

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (269/299)

Ordonnancement à long terme

I Degré de multiprogrammation avec des batchsI Maximiser l'utilisation du matériel→ Processeurs et périphériques

I Éviter trop de défauts de pageI Peut utiliser di�érents critères

I Priorités, temps d'exécution prévu, besoins en I/OI Optimiser l'utilisation des di�érentes ressources

I Exécuté au lancement des processusI Doit être contourné pour les processus interactifs

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (270/299)

Page 46: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Ordonnancement à moyen terme

I Consiste essentiellement à évincer ou rappeler en mémoiredes processus

I Également lié au degré de multiprogrammationI Exécuté assez régulièrement

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (271/299)

Ordonnancement à court terme

I Exécuté très régulièrementI Quand un évènement risque de bloquer un processus

I I/OI Quand il est bon de favoriser un autre processus

I Interruption d'horlogeI Signaux

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (272/299)

Septième partie

Ordonnancement

Objectifs de l'ordonnancement

Fonctionnement

Ordonnancement des entrées/sorties

ExempleOrdonnancement des processus dans UnixOrdonnancement des processus dans Linux

Critères pour l'utilisateur

I Critères relatifs à la performanceI Rapidité d'exécution des processusI Temps de réponseI Deadlines

I Autres critèresI Prédictabilité

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (274/299)

Critères pour le système

I Critères relatifs à la performanceI Quantité de travail e�ectuéI Utilisation des processeurs→ et des périphériques

I Autres critèresI EquitéI Respect des prioritésI Gestion des ressources

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (275/299)

Préemption

I Un processus ne rend jamais la mainI Sauf en cas d'I/O

I Le système prend la main de forceI Léger surcoûtI Bien meilleur temps de réponse→ Interactivité

I Quand préempter ?

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (276/299)

Page 47: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Algorithmes classiques

I FIFOI Round-Robin

I Exécution pendant de petites périodes (timeslices)I Short Process Next et Short Remaining Next

I Demande de prévoir la durée d'exécutionI Feedback

I Pénalité pour les processus trop gourmands→ Ajuste la priorité initiale des processus

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (277/299)

Multiprocesseurs - 1/2

I Load SharingI File générale de processus

I Gang SchedulingI Threads reliés ordonnancés simultanément sur un ensemble

de processeursI Assignation d'un processeur dédié

I Processeur inaccessible jusqu'à la �n d'exécutionI Ordonnancement dynamique

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (278/299)

Multiprocesseurs - 2/2

I Concurrence réelle entre les �les d'exécution sur di�érentsprocesseurs

I Pas seulement en cas de préemptionI Synchronisation critique

I E�ets de cache entre threadsI Localisation mémoire sur NUMA

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (279/299)

Besoins du temps réel

I DéterminismeI RéactivitéI FiabilitéI Contrôle utilisateur

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (280/299)

Caractéristiques des ordonnanceurs temps réel

I Changement de contexte rapideI Taille et fonctionnalités réduitesI Réaction rapide aux interruptions

I Minimisation des désactivationsI Ordonnancement préemptif fondé sur prioritésI Primitives de retardement et pause de tâchesI Alarmes et timeouts dédiés

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (281/299)

Septième partie

Ordonnancement

Objectifs de l'ordonnancement

Fonctionnement

Ordonnancement des entrées/sorties

ExempleOrdonnancement des processus dans UnixOrdonnancement des processus dans Linux

Page 48: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Accès disque - 1/2

I Temps d'accèsI Recherche du cylindre + rotation jusqu'au secteurI De l'ordre de 10 ms

I DébitI De l'ordre de 50 Mo/s

I Optimiser les accès pour augmenter le débit réelI Regrouper les accès proches

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (283/299)

Accès disque - 2/2

I FIFO, avec prioritéI Élevator

I Réduire les déplacements de la tête de lectureI Deadline

I Lectures privilégiéesI Anticipatory

I Petite pause pour attendre des requêtes consécutivesI Completely Fair Queuing

I Accès aux périphériques par Timeslice

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (284/299)

Accès réseau

I Quality of ServiceI Queuing Disciplines

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (285/299)

Septième partie

Ordonnancement

Objectifs de l'ordonnancement

Fonctionnement

Ordonnancement des entrées/sorties

ExempleOrdonnancement des processus dans UnixOrdonnancement des processus dans Linux

Ordonnancement traditionnel dans Unix

I Priorité de base dynamiqueI Feedback

I Facteur ajustable par l'utilisateur (nice)I Swapping très prioritaireI Priorité croissante des applications aux périphériques réels

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (287/299)

Septième partie

Ordonnancement

Objectifs de l'ordonnancement

Fonctionnement

Ordonnancement des entrées/sorties

ExempleOrdonnancement des processus dans UnixOrdonnancement des processus dans Linux

Page 49: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Le Scheduler de Linux

I Ordonnanceur Unix traditionnelI Bonne interactivité et équitéI Priorité e�ective ajustée selon bonus/pénalités

I Crédit d'interactivité quand la tâche dortI Beaucoup d'optimisations locales

I Tâche créée sans CLONE_VM préempte père→ Évite coût du Copy-on-Write

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (289/299)

Les Timeslices

I Temps divisé en cycles d'ordonnancementI Chaque processus prêt reçoit un timeslice par cycle

I Timeslice entre 5 et 800 ms (100 par défaut)I Priorité de 19 à -20 (0 par défaut)

I Peut-être consommé en plusieurs foisI Si préempté pendant

I Partage du Timeslice entre père et �ls

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (290/299)

Le O(1)-Scheduler - 1/2

I Supporte beaucoup de processus et de processeursI Optimisation des structures pour performance

I runqueues indépendantes sur chaque processeurI Chaque processus RUNNING placé dans une des runqueues

I Tableau de priorités→ Actif ou expiré

I Processus non prêts dans �les d'attente externes

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (291/299)

Le O(1)-Scheduler - 2/2

I Permutation des tableaux expirés et actifs à la �n de chaquecycle

I Prochain timeslice calculé à l'expiration du timesliceprécédent

I A�nités pour les processeursI Champs cpus_allowed de task_struct→ sched_set/getaffinity()

I Migration uniquement en cas de déséquilibre→ Load Balancer

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (292/299)

Préemption

I Si un processus prioritaire arriveI Bit NEED_RESCHED de la tâche couranteI Véri�é régulièrement par le scheduler

I Préemption possible lors du retour en espace utilisateurI Fin d'appel systèmeI Fin d'interruption→ Interruption d'horloge

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (293/299)

Préemption dans le noyau

I Préemption dans le noyau depuis 2.6I Compteur preempt_count dans task_structI Augmenté pendant les opérations où la préemption doit être

désactivéeI Tenue d'un spin_lockI Possession d'un mapping atomique (kmap_atomic)I À la main preempt_disable/enable()

I need_resched testé quand compteur nul

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (294/299)

Page 50: Présentation du module - ens-lyon.frgraal.ens-lyon.fr/~ycaniou/OldPage/teaching/M2OP1/M2OP1...I Timer : générée par un timer dans le processeur dans le but de lui permettre d'e

Qui préempte qui ? - 1/2

I Les interruptions sont prioritairesI Sauf si désactivéesI Exécution dans un contexte spécial→ Un contexte dédié par processeur (irq_ctx hard_irq)

I Interruptions peuvent être désactivées pendant traitantI Bottom Halves au retour du traitant d'interruption

I Exécution dans un contexte spécial→ Un contexte dédié par processeur (irq_ctx soft_irq)

I Peut être préempté par une interruption

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (295/299)

Qui préempte qui ? - 2/2

I Les threads noyaux sont préemptés parI Les interruptions puis les Bottom HalvesI Les tâches prioritaires à certains endroits→ sauf si preempt_count > 0

I Les processus utilisateur sont préemptés dans le noyaucomme les threads noyaux

I et avant leur retour en espace utilisateur→ Interruptions (horloge), signaux et appels-système

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (296/299)

Changement de contexte

I schedule() appelé par un processusI E�ectue lui-même les tests du scheduler

I switch_mm() permute les espace d'adressageI switch_to() permute les contextes d'exécution

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (297/299)

sched_yield

I Demande explicite de passage de mainI Déplace la tâche dans le tableau expiréI Le timeslice est perdu !

I Comportement di�érent entre 2.4 et 2.6I Le timeslice n'était pas perdu dans le 2.4I Incompatibilités entre applications pour 2.4 et 2.6

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (298/299)

Temps réel

I Politiques plus prioritaires que SCHED_OTHERI SCHED_FIFO

I Garde le processeur jusqu'à le rendre explicitementI SCHED_RR

I Timeslice prédé�niI Pas de garantie sur l'e�cacité

I Satisfaisant dans les cas simplesI Gros impact sur les autres tâches

Yves Caniou Programmation Système (05/06) Partie VII : Ordonnancement (299/299)