Cours #1 Introduction OS multitâches



Documents pareils
Cours Programmation Système

Temps Réel. Jérôme Pouiller Septembre 2011

Département de génie électrique. ELE784 - Ordinateurs et programmation système. Laboratoire #1

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Introduction aux Systèmes et aux Réseaux

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Systèmes d exploitation

Exécutif temps réel Pierre-Yves Duval (cppm)

Cours de Systèmes d Exploitation

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Initiation au HPC - Généralités

Les avantages de la virtualisation sont multiples. On peut citer:

DAns un système multi-utilisateurs à temps partagé, plusieurs processus

FICHE PRODUIT PRELIMINAIRE

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Support de cours système d exploitation

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

Ordinateurs, Structure et Applications

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

HP 600PD TWR i G 4.0G 39 PC

SnapMusic Studio 715 Guide d Installation

Cours A7 : Temps Réel

Linux embarqué Retour d expérience et temps réel. Denis Coupvent-Desgraviers

Fiche produit Fujitsu LIFEBOOK AH502 Ordinateur portable

Synchro et Threads Java TM

Virtualisation sous Linux L'age de raison. Daniel Veillard

Partie 7 : Gestion de la mémoire

IV- Comment fonctionne un ordinateur?

Session 8: Android File System

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Manuel de l utilitaire Computer Setup (F10) HP Compaq Business Desktops Modèles d220 et d230

Équilibrage de charge pour systèmes temps-réel asymétriques sur multi-processeurs

Chapitre 4 : Outils de communication centralisés entre processus

Ordinateur portable Latitude E5410

SQL Server 2008 et YourSqlDba

emachines de la gamme G720/G520 Guide rapide

Programmation système en C/C++

Manuel d utilisation de ndv 4

Le Programme SYGADE SYGADE 5.2. Besoins en équipement, logiciels et formation. UNCTAD/GID/DMFAS/Misc.6/Rev.7

Métriques de performance pour les algorithmes et programmes parallèles

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Modules du DUT Informatique proposés pour des DCCE en 2014/2015

SRS DAY: Problématique liée à la virtualisation

KoinKoin. Système d exploitation à architecture basée micro-noyau. Antoine Castaing Nicolas Clermont Damien Laniel

Portable Dell Alienware M18X

Ordinateurs, Structure et Applications

Utilisation de matériels industriels avec des outils de virtualisation open source. Open Source dans le monde industriel

Introduction à la programmation concurrente

Fiche produit Fujitsu LIFEBOOK A531 Ordinateur portable

Les processus légers : threads. Système L3, /31

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

On appelle variable condition une var qui peut être testée et

Qu'est-ce qu'un processus: Définitions

ST50 Projet de fin d études Noyau Linux et multi-processeur pour une plateforme embarquée

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

Cahier des Clauses Techniques Particulières

Le Network File System de Sun (NFS)

Chapitre I Notions de base et outils de travail

Introduction aux systèmes temps réel. Iulian Ober IRIT

Modélisation des interfaces matériel/logiciel

Spécifications détaillées

StruxureWare Power Monitoring v7.0. La nouvelle génération en matière de logiciel de gestion complète d énergie

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Personnalisez votre Mac.

Systèmes informatiques

Rappels d architecture

SQL2005, la migration Atelier 316

Administration Centrale : Opérations

Manuel de System Monitor

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

Le système GNU/Linux IUP NTIC /11/05

FICHE PRODUIT 360 SPEECHMAGIC SDK

LA RECONNAISSANCE VOCALE INTEGREE

Concept de machine virtuelle

Systèmes d exploitation Gestion de processus

Introduction à la Programmation Parallèle: MPI

1 Mesure de la performance d un système temps réel : la gigue

Démarrer et quitter... 13

Vers du matériel libre

LOG4430 : Architecture et conception avancée

<Insert Picture Here> Solaris pour la base de donnés Oracle

µrv : Realité Virtuelle

UE Programmation Impérative Licence 2ème Année

F7495. Guide Windows 8 pour ordinateurs portables ASUS

Exigences système Edition & Imprimeries de labeur

Tout savoir sur le matériel informatique

CAHIER. DES CLAUSES TECHNIQUES PARTICULIERES N du 16 avril 2007 ORDINATEURS. C.I.E.P 1, Avenue Léon JOURNAULT SEVRES

Introduction : les processus. Introduction : les threads. Plan

Matériel & Logiciels (Hardware & Software)

Tsoft et Groupe Eyrolles, 2005, ISBN :

Virtualisation open source État de l'art

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

NFC EMV MODÈLE : TABLETTE ELO PRIX DE LISTE DE BASE (USD) : $

Architecture des ordinateurs

Transcription:

ELE-784 Ordinateurs et programmation système Cours #1 Introduction OS multitâches Bruno De Kelper Site internet : http://www.ele.etsmtl.ca/academique/ele784/ Cours # 1 ELE784 - Ordinateurs et programmation système 1 Plan d aujourd hui 1. Introduction au cours 1. Objectifs 2. Contenu du cours 3. Livres de références 2. Introduction au lab 1. Matériels et installation du lab 2. Le projet en 3 phases 3. 1. Survol du système d exploitation Linux 2. Espaces usager, noyau et interruption 3. Appels système, interruptions matériel et logiciel 4. Notions de processus, fil d exécution et de tranche de temps 5. Notions de préemption et de changement de contexte Cours # 1 ELE784 - Ordinateurs et programmation système 2 Cours # 1 ELE784 - Ordinateurs et programmation système 1

1.1 - Objectifs du cours Introduction au cours - Comprendre les systèmes d exploitation (OS) multitâches modernes, tel que Linux. - Concevoir et réaliser des pilotes d interfaces dans le contexte des OS modernes. - Utiliser la synchronisation des tâches et les interruptions du matériel. - Évaluer et mesurer la performance d un programme ou un morceau de programme. - Optimiser le code d un programme en lien avec les capacités du processeur et de la mémoire. - Comprendre et utiliser à bon escient la mémoire cache et le pipeline du système. Cours # 1 ELE784 - Ordinateurs et programmation système 3 1.2 - Contenu du cours Partie OS : Introduction au cours 1) Introduction OS multitâches 2) Synchronisation dans un OS multitâches Partie Pilote : 3) Introduction aux pilotes d interfaces 4) Notions plus avancées de pilote 5) Communication avec le matériel 6) Le traitement des interruptions 7) Le pilote PCI et le pilote USB 8) Les techniques de déverminage d un pilote Partie Matériel : 9) Introduction au matériel 1) Optimisation des performances d un programme 11) Hiérarchies de mémoire Cours # 1 ELE784 - Ordinateurs et programmation système 4 Cours # 1 ELE784 - Ordinateurs et programmation système 2

1.3 - Livres de références Principal : Introduction au cours - Corbet, J., Rubini, A., Kroah-Hartman, G., Linux Device Drivers, 3ième edition, O Reilly Media, 25. Lien Internet : http://lwn.net/kernel/ldd3/ Complémentaires : - Bryant, R. E., O Hallaron, D. R., Computer Systems A Programmer s Perspective, Prentice Hall, 23. - Love, R., Linux Kernel Development, 2ième edition, Novell Press, 25. Cours # 1 ELE784 - Ordinateurs et programmation système 5 Introduction au Lab 2.1 - Matériels et installation du lab Cours # 1 ELE784 - Ordinateurs et programmation système 6 Cours # 1 ELE784 - Ordinateurs et programmation système 3

Introduction au Lab 2.1 - Matériels et installation du lab La carte SBC : - Intel Pentium III Processor à 85 MHz et 256 KB de cache L2 de 64-bit - Jusqu à 1 GB de SDRAM sur 4 DIMM - Ultra-2 SCSI LVD/SE (8 MB/s) - Support pour 1/1Base-TX Ethernet - AGP video avec 2 MB SDRAM 64-bit PCI-947 de Kontron Cours # 1 ELE784 - Ordinateurs et programmation système 7 Introduction au Lab 2.1 - Matériels et installation du lab La caméra : - Senseur de résolution Ultra-élevée de 1.3-megapixel avec technologie RightLight. - Capture Vidéo : jusqu à 96 x 72 pixels (qualité HD). - Capture d image fixe: 128 x 96 pixels. - Microphone avec technologie RightSound. - Taux de capture: jusqu à 3 images/s. - Certifié USB 2.. QuickCam Orbit MP de Logitech Cours # 1 ELE784 - Ordinateurs et programmation système 8 Cours # 1 ELE784 - Ordinateurs et programmation système 4

2.2 - Le projet en 3 phases Introduction au Lab Étape #1 : (1 à 2 séances) - Configurer et compiler le noyau Linux pour la carte SBC. Étape #2 : (5 à 6 séances) - Développer un pilote USB pour la caméra. - Développer un squelette de pilote. - Améliorer le squelette jusqu à un pilote complet. - Ajouter des fonctionnalités pour caméra (fournit). Étape #3 : (4 à 6 séances) - Développer une application entièrement optimisée. - Développer l application. - Mesurer les performances et goulot d exécution. - Déverminer et optimiser en profondeur. Cours # 1 ELE784 - Ordinateurs et programmation système 9 3.1 - Survol du système d exploitation Linux Système d exploitation (OS) : - Noyau - Pilotes - Chargeur d amorçage Noyau (Kernel) : Responsable de l utilisation de base du système et de son administration. - "Shell" de commandes et interface-usager - Système de fichiers de base - Utilitaires du système Partie centrale ou cœur de l OS. Il fournit : Il contient : - Services de base pour toutes les autres parties du système. - Gestion du matériel. - Distribution des ressources du système. - Gestionnaire d interruptions - Ordonnanceur - Gestionnaire de mémoire - Services du système : réseautage et communication interprocessus Cours # 1 ELE784 - Ordinateurs et programmation système 1 Cours # 1 ELE784 - Ordinateurs et programmation système 5

3.1 - Survol du système d exploitation Linux - OS multitâches avec "tranche de temps" calculée dynamiquement. Application 1 Application 2 Application 3 Espace Usager - OS multiprocesseur symétrique (SMP) avec "équilibreur de charge". Interface d appel au système - Noyau monolithique. - Chargement dynamique des modules du noyau. Sous-systèmes du noyau Pilotes Espace Noyau - Entièrement préemptif. - Processus Fil d exécution. Matériel Réf. : Linux Kernel Development, 2 ième éd., R. Love, Novell Press, page 5, fig. 1.1 Cours # 1 ELE784 - Ordinateurs et programmation système 11 Vue plus détaillée du noyau Réf. : Linux Device Drivers, 3 ième éd., J. Corbet, A. Rubin, G. Kroah-Hartman, O Reilly Media, page 6, fig. 1.1 Cours # 1 ELE784 - Ordinateurs et programmation système 12 Cours # 1 ELE784 - Ordinateurs et programmation système 6

3.1 - Survol du système d exploitation Linux Particularités du code du noyau : - Pas accès aux librairies standards du C. - Compilé avec le compilateur GNU C (voir http://gcc.gnu.org/). - Pas de protection de la mémoire. - Accès difficile à la représentation point-flottant. - Utilise une pile de taille fixe assez petite. - A besoin de synchronisation pour gérer la concurrence. - La portabilité du code est très importante. Cours # 1 ELE784 - Ordinateurs et programmation système 13 3.2 - Espaces usager, noyau et interruption Notion d espace : MÉMOIRE Application 1 - c est une région de la mémoire et des privilèges d accès. - c est aussi un mode d opération du système et un contexte. Espace Usager Espace mémoire Usager Application 2 Application 3 CPU Contexte Processus Mode usager Espace mémoire Noyau Processus 1 Processus 2 Espace Noyau CPU Mode superviseur Contexte Processus ou Contexte Interruption Cours # 1 ELE784 - Ordinateurs et programmation système 14 Cours # 1 ELE784 - Ordinateurs et programmation système 7

3.3 - Appels système, interruptions matériel et logiciel Module Application Périphérique Espace Usager Appel-système system_call() Module Interface d appel-système Espace Noyau Module Périphérique Matériel - La seule façon pour l espace-usager d accéder à l espace-noyau ou au matériel est au travers d un appel-système (syscall). - Cette approche fournit une couche de protection et de généralisation qui assure la stabilité du système. - Le syscall est un appel à une des fonctions de l interface d appel-système. - L appel aux fonctions "système" déclenche une interruption logiciel (exception #128) qui sera traitée par system_call(). - Les modules du noyau peuvent accéder directement au matériel. - Les échanges entre les modules du noyau et le matériel se font habituellement au travers d interruptions du matériel. Cours # 1 ELE784 - Ordinateurs et programmation système 15 3.3 - Appels système, interruptions matériel et logiciel - Les syscall sont habituellement appelés indirectement par l application au travers d un interface de programmation (API Application Programming Interface). - Cette approche permet de créer une distance supplémentaire entre l application et le système et assure la portabilité de l application sur une multitude de systèmes. Par exemple : Application Appel à printf ( ) Librairie du C (API) Syscall du noyau printf( ) de la librairie Appel à write( ) du noyau Appel à write ( ) de la librairie Interruption system_call() du noyau Interruption logicielle Cours # 1 ELE784 - Ordinateurs et programmation système 16 Cours # 1 ELE784 - Ordinateurs et programmation système 8

3.3 - Appels système, interruptions matériel et logiciel Interruption logicielle : Est déclenchée par : - Une erreur dans le programme ex. : une division par - Un comportement anormal ex. : faute de page-mémoire ou un accès illégal. Appelés "Exception" - Une instruction spéciale telle qu un syscall ex. : int $x8 appelle system_call() Appelé "Trap" - Une interruption logicielle est parfaitement synchronisée avec le processeur. - Autrement, une interruption logicielle est identique à une interruption matérielle. On peut identifier avec précision l emplacement du code où se produit l interruption. Cours # 1 ELE784 - Ordinateurs et programmation système 17 3.3 - Appels système, interruptions matériel et logiciel Interruption matérielle : Est déclenchée par : - Par un périphérique lorsque celui-ci détecte un événement. ex. : une touche du clavier a été appuyée. - Une interruption matérielle est parfaitement asynchrone par rapport au processeur. - Le processeur est avertit de l événement lorsque le périphérique lui transmet un signal spécial, appelé requête d interruption (IRQ). - Le processeur réagit à ce signal en interrompant l exécution du code actuel et en exécutant une routine d interruption (ISR). - La ISR a pour but de gérer le périphérique qui a déclenché l interruption et de traiter l événement qui s est produit. IRQ Appel Matériel CPU ISR On ne peut pas identifier avec précision l emplacement du code où se produit l interruption. Le plus rapidement possible car tout autre code est en attente (suspendu) pendant ce temps-là Cours # 1 ELE784 - Ordinateurs et programmation système 18 Cours # 1 ELE784 - Ordinateurs et programmation système 9

3.3 - Appels système, interruptions matériel et logiciel Interruption matérielle : Contexte d interruption Réponse à l événement matériel Quelques particularités importantes : - Pendant l exécution d une ISR, toutes les interruptions sont bloquées. - La ISR ne peut pas être mise en attente (sleep), c est-à-dire qu elle ne peut pas faire appel aux services de synchronisation du noyau. - La ISR ne peut pas faire appel à des fonctions du noyau qui risque d être mises en attente. - Puisque la ISR doit s exécuter le plus rapidement possible, souvent le traitement de l événement est fait en deux parties : Moitié haute (Top Halve) - Très rapide, c est la vrai ISR. - Se limite a traiter l événement matériel, tel que transférer des données du périphérique et de le réinitialiser. Moitié basse - S occupe de faire le gros du traitement. - Les interruptions sont permises ainsi que les (Bottom Halve) synchronisations. - Sont implémentés par des softirq, des tasklet ou des queues de travail (work queues). Cours # 1 ELE784 - Ordinateurs et programmation système 19 3.4 - Notions de processus, fil d exécution et de tranche de temps Processus : Fil d exécution (thread) : Le concept de "Tâche" est à la base du traitement concurrent et du vrai parallélisme C est un programme, une application qui s exécute dans son propre espace-mémoire. Une tâche, un morceau de code qui est attaché à un processus ou une autre tâche (son parent) et s exécute dans l espace-mémoire de son parent. Application Pour LINUX : - Il n y a pas de réelle différence entre un processus et un fil d exécution. - Un fil d exécution est simplement une tâche qui s exécute dans le même espace-mémoire que sa tâche "parent". - Toute tâche a un parent et ou plus d enfants. Processus Tâche = Fil d exécution Tâche Parent Tâche Tâche Tâche Enfants Cours # 1 ELE784 - Ordinateurs et programmation système 2 Cours # 1 ELE784 - Ordinateurs et programmation système 1

3.4 - Notions de processus, fil d exécution et de tranche de temps Une tâche c est : - un code d identification (PID) - un groupe d appartenance - du code d exécution - des données, de la mémoire - des ressources - un état - une priorité d exécution - des signaux - cédule de temps, un horaire (timing) - synchronisation - un parent - des enfants - Tout ça contenu dans une grosse structure struct task_struct { volatile long state; unsigned long flags; (données des signaux) (pointeurs vers la famille) (gestion de la mémoire) (identifications de la tâche) (accès aux fichiers) (données d horaire, d horloge) (données de synchronisation) (et autres informations) Cours # 1 ELE784 - Ordinateurs et programmation système 21 } 3.4 - Notions de processus, fil d exécution et de tranche de temps Création d une tâche : Une tâche est créée par son parent à l aide de la commande d appel au système clone(). int clone(int (* fn )(void *), void * child_stack, int flags, void * arg ); Pointeur vers une fonction qui contient le code de la tâche. Pointeur vers la pile qui sera attribuée à la tâche. Voir aussi : - Famille de fonctions fork() avec la famille de fonctions exec(). Drapeaux de méthode de création de la tâche : CLONE_FILES CLONE_FS CLONE_PARENT CLONE_THREAD CLONE_IDLETASK CLONE_VM Pointeur vers les arguments qui seront passés à la fonction de démarrage de la tâche. Cours # 1 ELE784 - Ordinateurs et programmation système 22 Cours # 1 ELE784 - Ordinateurs et programmation système 11

3.4 - Notions de processus, fil d exécution et de tranche de temps Création d une tâche-noyau : Cas particulier Une tâche-noyau est créée par son parent à l aide de kernel_thread(). int kernel_thread(int (* fn )(void *), void * arg, unsigned long flags); Même que clone() Seul une tâche-noyau peut créer une nouvelle tâche-noyau. Une tâche-noyau ne possède pas d espace-mémoire qui lui est propre mais s exécute dans l espace du noyau uniquement. Normalement, une tâche-noyau reste active tant et aussi longtemps que le système est actif. Même que clone(), mais : CLONE_KERNEL = CLONE_FS CLONE_FILES CLONE_SIGHAND Cours # 1 ELE784 - Ordinateurs et programmation système 23 3.4 - Notions de processus, fil d exécution et de tranche de temps Destruction d une tâche : Une tâche se détruit elle-même à l aide de exit() ou lorsqu elle arrive au bout de son code principal (main) ou encore lorsqu elle reçoit un "signal" ou une exception qu elle ne peut pas traiter. - Lorsqu une tâche est détruite, elle est placée dans un état spécial (TASK_ZOMBIE) où presque toute la mémoire qu elle occupait a été libérée sauf sa task_struct. - La tâche "parent" doit ensuite finir le travail de destruction à l aide de release_task(). - Si la tâche possède des enfants, ceux-ci sont informés de la destruction de leur parent et reçoivent un nouveau parent : - Soit le parent de la tâche qui est détruite - Soit la tâche INIT qui est la 1 ière tâche du système et qui est donc le parent de toutes les autres tâches. Cours # 1 ELE784 - Ordinateurs et programmation système 24 Cours # 1 ELE784 - Ordinateurs et programmation système 12

3.4 - Notions de processus, fil d exécution et de tranche de temps États d une tâche : Tâche parent crée une nouvelle tâche clone() ou fork() Lorsqu une tâche existe, elle est dans l un de trois états. ordonnanceur exit() TASK_ZOMBIE (détruite) TASK_RUNNING (prête) TASK_RUNNING (en exécution) préemption Tâche se réveille à la réception d un événement TASK_INTERRUPTIBLE TASK_UNINTERRUPTIBLE (en attente) Tâche s endort en attente d un événement Réf. : Linux Kernel Development, 2 ième éd., R. Love, Novell Press, page 28, fig. 3.3 Cours # 1 ELE784 - Ordinateurs et programmation système 25 3.4 - Notions de processus, fil d exécution et de tranche de temps - Linux maintient une liste des tâches actives, c est-à-dire des tâches qui sont disponibles pour l exécution. - À chacune de ces tâches, Linux attribue une période d exécution appelée Tranche de temps (Timeslice). - Chaque tâche est exécutée à tour de rôle (Round-Robin) jusqu à l expiration de sa tranche de temps ou jusqu à ce qu elle se mette ellemême en attente d un événement. - Les tranches de temps sont calculées dynamiquement pour chaque tâche. Liste des tâches prêtes (ready runqueue) CPU Tâche 1 Tâche 2 Tâche 3 Tâche 4 Tranche de temps (5 ms à 8 ms) Tâche 8 Tâche 7 Tâche 6 Tâche 5 Liste des tâches exprimées (expired runqueue) (vue simplifiée) Cours # 1 ELE784 - Ordinateurs et programmation système 26 Cours # 1 ELE784 - Ordinateurs et programmation système 13

3.5 - Notions de préemption et de changement de contexte - Linux est un OS entièrement préemptif, c est-à-dire que l ordonnancement du travail est fait selon des niveaux de priorité. - À chaque tâche est attribué dynamiquement un niveau de priorité. - Les tâches dont la priorité est élevée sont exécutées avant celles dont la priorité est plus basse. - Les tâches ayant la même priorité sont exécutées en Round-Robin, c est-à-dire à tour de rôle selon leur "tranche de temps". - Le niveau de priorité est choisit de la façon suivante : - Les tâches qui attentent souvent pour des I/O reçoivent une priorité plus élevée. - Les tâches qui manquent continuellement de temps dans leur "tranche de temps reçoivent une priorité plus basse. Ce type de tâches passent leur temps à attendre pour des accès aux I/O et doivent être exécutées souvent, mais pas pour très longtemps. Ce type de tâches font principalement du traitement et ne requièrent pas d être exécutées très souvent, mais plus longtemps. Cours # 1 ELE784 - Ordinateurs et programmation système 27 3.5 - Notions de préemption et de changement de contexte - Linux maintient un tableau de priorité ainsi qu une liste de queues de travail (runqueues) pour chaque priorité. Tableau de drapeaux 27 1 26 25 1 3 2 1 1 Priorités Tableau de queues de travail * * * Queues de travail par priorité Tâches exécutées en Round-Robin Cours # 1 ELE784 - Ordinateurs et programmation système 28 Cours # 1 ELE784 - Ordinateurs et programmation système 14

3.5 - Notions de préemption et de changement de contexte - Le changement d une tâche à une autre est décidé par l ordonnanceur (scheduler). - Lorsque décidé, un changement de contexte est effectué de façon à replacer le système dans les conditions qui permettent à la nouvelle tâche de s exécuter normalement, c est-à-dire le système récupère : - Le mappage de la mémoire virtuelle - La configuration de la pile - L état des registres du processeur - Une demande est faite à l ordonnanceur, en levant un drapeau spécial, pour qu il vérifie les tâches qui doivent être exécutées chaque fois que : - Une tâche de plus haute priorité tente de se réveiller - Une tâche est arrivée à la fin de sa tranche de temps - L ordonnanceur vérifie l état de ce drapeau et choisit une nouvelle tâche à exécuter, à chaque fois que : - Le système revient à l espace-usager après un syscall - Au retour d une interruption, telle que la fin d une tranche de temps Cours # 1 ELE784 - Ordinateurs et programmation système 29 3.5 - Notions de préemption et de changement de contexte Cas particulier : Préemption dans le noyau - La préemption d une tâche du noyau est permise seulement si cette tâche ne tient pas un verrou (lock). - En fait, l obtention d un verrou marque le début d une zone de nonpréemption. - C est-à-dire que la préemption dans le noyau peut se produire lorsque : - Au retour d une interruption. - La préemption du noyau est de nouveau permise (tous les verrous tenus par la tâche ont été libérés). - La tâche-noyau actuelle appelle l ordonnanceur de façon explicite. - La tâche-noyau bloque, par exemple lorsque : - La tâche tente de capturer un verrou. - La tâche attend pour un événement. Cours # 1 ELE784 - Ordinateurs et programmation système 3 Cours # 1 ELE784 - Ordinateurs et programmation système 15