Changes between Version 13 and Version 14 of DevloperManuel


Ignore:
Timestamp:
Dec 15, 2007, 12:56:29 PM (17 years ago)
Author:
Ghassan Almaless
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DevloperManuel

    v13 v14  
    55[[Image(modalisation_mutekp.png, nolink)]][[BR]]
    66Les bibliothèques constituant le système sont :
    7  *  pthread : contient l’implémentation d’un sous-ensemble des thread POSIX.
     7 *  pthread : contient l’implémentation d’un sous-ensemble des Thread POSIX.
    88 *  libc : contient l’implémentation des services système tel que malloc, printf, read, memcpy ..etc.
    99 *  mwmr : contient l’implémentation du protocole MWMR.
     
    1515
    1616== II. Introduction au noyau MUTEKP ==
    17 === II.1 Le concept d’un thread dans le système ===
     17=== II.1 Le concept d’un Thread dans le système ===
    1818[[Image(Application.PNG, nolink)]][[BR]][[BR]]
    1919Un Thread est un fil d’exécution d’un programme. [[BR]]
     
    2828 * Création et gestion plus rapide (vs processus).
    2929 * Partage des ressources par défaut.
    30  * Communication entre les threads plus simple via la mémoire (les variables globales).
     30 * Communication entre les Threads plus simple via la mémoire (les variables globales).
    3131 * Déploiement plus efficace de l’application sur des architectures multi-processeurs.
    3232
    33 === II.2 États d’un thread ===
     33=== II.2 États d’un Thread ===
    3434[[Image(Thread_states.PNG, nolink)]][[BR]][[BR]]
    3535La duré de vie d’un Thread peut être divisée en un ensemble d’états.[[BR]]
    3636Les différents états d’un Thread sont :
    3737 * Run : quand le Thread s’exécute sur le processeur en faisant son calcul.
    38  * Kernel : quand le thread « tombe » dans le noyau suite à un appel aux services noyau ou une interruption matérielle.
    39  * Wait : lors que le thread demande une ressource qui n’est pas disponible.
    40  * Ready : quand le thread est en attente de gagner le processeur pour poursuivre son exécution.
    41  * Zombie : quand le thread se termine en attendant que un autre thread pren acte de sa terminaison.
     38 * Kernel : quand le Thread « tombe » dans le noyau suite à un appel aux services noyau ou une interruption matérielle.
     39 * Wait : lors que le Thread demande une ressource qui n’est pas disponible.
     40 * Ready : quand le Thread est en attente de gagner le processeur pour poursuivre son exécution.
     41 * Zombie : quand le Thread se termine en attendant que un autre thread pren acte de sa terminaison.
    4242 * Create : état spécial dans le quel le Thread vient d’être crée. Il n’a pas encore été chargé sur un processeur et attend de le gainer pour la première fois.
    43  * Dead : état spécial dans le quel le Thread est déclarer définitivement mort. Toute tentative de joindre un Thread dans cet état échouera.
    44 === II.3 Ordonnancement des threads ===
     43 * Dead : état spécial dans le quel le Thread est déclaré définitivement mort. Toute tentative de joindre un Thread dans cet état échouera.
     44=== II.3 Ordonnancement des Threads ===
     45Le système partitionne l’ensemble des threads de l’application en sous-ensembles dans le but de les ordonnancer.[[BR]]
     46Le nombre de ces sous-ensembles est en bijection avec le nombre des processeurs disponibles dans la plate-forme matérielle.[[BR]]
     47Il existe une structure d’ordonnancement, pour chaque sous-ensemble, responsable de l’ordonnancement de ses Threads selon sa propre politique d’ordonnancement.[[BR]]
     48Une fois un Thread est crée, il est affecté à un seul processeur tout au long de sa vie, le noyau Mutek''P'' n’implémente pas la migration des tâches, ou la répartition dynamique de la charge du système.[[BR]]
     49Supposant que le nombre des processeurs dans la plate-forme est égal à N alors :
     50 * Le système partitionne l’ensemble des Threads de l’application en N sous-ensembles.
     51 * Le système dispose de N structures d’ordonnancement pour ordonnancer ces N sous-ensembles.
     52 * En régime permanant (lors que chaque processeur est entrain d’exécuter un Thread), il existe N Threads s’exécute en parallèle, tandis que les autres Threads de chaque sous-ensemble s’exécute en pseudo parallèle grâce au temps partagé (changement de contexte à chaque fin de quantum suite à une interruption horloge).
     53Ainsi le noyau Mutek''P'' dispose d’un mécanisme d’ordonnancement distribué à taches affectées.[[BR]]
     54Dans le cas où l’Ordonnanceur d’un processeur ne trouve aucun Thread à l’état Ready. Il charge un Thread particulier nommé Thread Idle.
     55Cette situation peut se produire notamment au démarrage du système et avant la création des Threads de l’application, aucun Thread n’est disponible pour être charger sur un processeur (exception du Thread main). Ou encore lors que touts les Threads d’un processeur sont en attente sur des ressources non disponibles.[[BR]]
     56L’utilité de ce Thread Idle est double :
     57 * Pour ne pas bloquer le processeur vis-à-vis des interruptions et de pouvoir ainsi exécuter leurs ISR.
     58 * Peut être programmé pour exécuter un code spécial de débugage ou d’observation de l’état du système.
    4559=== II.4 Organisation et gestion de la mémoire ===
    4660==== II.4.1 L’organisation mémoire ====