Fiche de révision : Gestion des Processus et Threads

📋 Plan du Cours

  1. Processus et identifiants
  2. État d'un processus
  3. Bloc de contrôle PCB
  4. Création processus fork()
  5. Hiérarchie des processus
  6. Concept de thread
  7. Ressources threads
  8. Multithreading
  9. Gestionnaire de threads POSIX
  10. Algorithmes d’ordonnancement
  11. Ordonnancement préemptif
  12. Critères d’ordonnancement

📖 1. Processus et identifiants

🔑 Notions clés & Définitions

  • Processus : Entité dynamique représentant l’exécution d’un programme sur un processeur. C’est l’activité résultant de l’exécution d’un programme séquentiel, avec ses données, par un processeur (MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR, 2025-2026).

  • Numéro d’identification unique (PID) : Identifiant distinct attribué à chaque processus pour le différencier dans le système d’exploitation.

  • Espace d’adressage : Ensemble des segments mémoire (code, données, piles d’exécution) alloués à un processus, permettant l’isolation et la gestion de ses ressources (MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR, 2025-2026).

  • Signaux : Messages ou interruptions que le système peut envoyer à un processus pour signaler des événements, pouvant être captés, masqués ou ignorés selon la configuration du processus.

  • Processus père, fils, groupe : Relations hiérarchiques entre processus, où un processus père peut créer un ou plusieurs processus fils, et appartenir à un groupe de processus pour la gestion collective.

📝 Points essentiels

  • Un processus est caractérisé par un PID qui lui est attribué lors de sa création, garantissant son unicité dans le système (MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR, 2025-2026).

  • L’espace d’adressage comprend le code, les données et la pile d’exécution, permettant au processus de fonctionner de manière isolée et sécurisée.

  • La gestion des signaux permet au système d’intervenir dans l’exécution d’un processus, par exemple pour l’arrêter, le suspendre ou le redémarrer.

  • Les relations hiérarchiques (père, fils, groupe) facilitent la gestion collective et la synchronisation entre processus, notamment pour la création et la terminaison.

  • Les variables d’environnement stockent des paramètres et configurations spécifiques à chaque processus, influant sur son comportement.

💡 À retenir

Un processus est une entité dynamique unique, identifiée par un PID, disposant d’un espace mémoire dédié, pouvant recevoir des signaux, et ayant des relations hiérarchiques avec d’autres processus, ce qui permet une gestion structurée et isolée de l’exécution des programmes.

📖 2. État d'un processus

🔑 Notions clés & Définitions

  • États d’un processus : Les différentes phases par lesquelles un processus peut passer durant son cycle de vie, notamment Nouveau, Prêt, En exécution, Bloqué, et Fin. Selon Salwa Othmen (2025), ces états reflètent l’état dynamique d’un processus en fonction des événements du système d’exploitation.

  • Nouveau : Lorsqu’un processus est créé dans le système, il est dans l’état de Nouveau, en attente d’être initialisé et placé dans la file d’attente des processus prêts.

  • Prêt : Le processus est en attente d’affectation du processeur, étant placé dans la file d’attente des processus prêts. Selon Salwa Othmen (2025), c’est l’état où le processus attend son tour pour s’exécuter.

  • En exécution : Le processus utilise actuellement le processeur pour exécuter ses instructions. C’est l’état actif du processus, lorsque le CPU lui est attribué.

  • Bloqué : Le processus attend qu’un événement spécifique se produise, comme la fin d’une opération d’E/S ou la réception d’un signal. Salwa Othmen (2025) précise que cet état est temporaire et dépend d’événements externes ou internes.

  • Fin : La terminaison du processus, lorsque toutes ses opérations sont achevées ou qu’il est explicitement arrêté. L’état final où le processus est considéré comme terminé.

📝 Points essentiels

  • La gestion des états d’un processus repose sur la transition entre ces états selon des événements précis : exécution, blocage, terminaison. La transition de Prêt à En exécution se produit lorsque le processeur lui est attribué, tandis que la transition vers Bloqué survient lors d’un événement d’attente (ex : E/S).

  • La structure de données principale pour suivre ces états est le bloc de contrôle de processus (PCB), qui contient notamment l’état actuel du processus, ses registres, sa priorité, et ses ressources allouées. Salwa Othmen (2025) souligne que le PCB permet la reconstitution du contexte lors des changements d’état.

  • La multiprogrammation permet à plusieurs processus d’être en cours d’exécution simultanément, mais à un instant donné, un seul processus peut utiliser le processeur, en raison de l’accès unique au CPU.

  • La transition entre états est déclenchée par des événements tels que l’achèvement d’une opération, une demande d’attente, ou une terminaison. La gestion de ces transitions est essentielle pour l’ordonnancement et la synchronisation des processus.

💡 À retenir

Les états d’un processus représentent ses différentes phases dynamiques, et leur gestion repose sur des transitions contrôlées par le système d’exploitation pour assurer la cohérence et l’efficacité de l’exécution multitâche.

📖 3. Bloc de contrôle PCB

🔑 Notions clés & Définitions

  • Bloc de Contrôle de Processus (PCB) : Structure de données maintenue par le système d'exploitation pour suivre l’état et les caractéristiques d’un processus en cours d’exécution. Il permet la reconstitution du contexte du processus lors des opérations d’ordonnancement ou de suspension.
  • Contexte d’un processus : Ensemble des informations dynamiques représentant l’état d’exécution d’un processus, incluant notamment les valeurs des registres, l’état de la pile, la priorité, et les pointeurs vers les files d’attente.
  • Valeurs des registres : Données sauvegardées dans le PCB lors de la suspension ou de la mise en attente d’un processus, permettant la reprise exacte de l’exécution ultérieure.
  • Gestion des files d’attente via pointeurs : Le PCB contient des pointeurs vers les files d’attente (prêt, en exécution, bloqué), facilitant la gestion de l’ordonnancement et la transition entre états.
  • Reconstitution du contexte : Opération effectuée par le système d’exploitation pour restaurer l’état d’un processus à partir des informations contenues dans son PCB, notamment lors de la reprise après suspension ou blocage (voir Salwa Othmen, 2025-2026).

📝 Points essentiels

  • Le PCB est une structure essentielle pour la gestion du processus, contenant toutes les informations nécessaires pour sauvegarder et restaurer l’état d’un processus lors des opérations d’ordonnancement, de suspension ou de terminaison.
  • Il inclut le contexte d’exécution, notamment les valeurs des registres, la priorité, et les pointeurs vers les files d’attente (prêt, en exécution, bloqué).
  • La reconstitution du contexte d’un processus se fait par le système d’exploitation en chargeant les valeurs sauvegardées dans le PCB dans les registres et autres composants du processeur, permettant la reprise précise de l’exécution.
  • La gestion efficace des PCB permet d’assurer la multiprogrammation, la synchronisation, et la planification des processus, en maintenant une structure cohérente et accessible pour le système.
  • Selon Salwa Othmen (2025-2026), le PCB joue un rôle clé dans la transition d’un processus entre différents états, notamment lors de l’interruption, du passage d’un processus à un autre, ou lors de la reprise après blocage.

💡 À retenir

Le PCB est la pièce maîtresse du système d’exploitation pour la gestion dynamique des processus, permettant de sauvegarder et de restaurer leur contexte d’exécution afin d’assurer une multiprogrammation efficace et cohérente.

📖 4. Création processus fork()

🔑 Notions clés & Définitions

  • fork() : Appel système sous Unix/Linux permettant de créer un nouveau processus en dupliquant le processus appelant. La nouvelle copie est appelée processus fils, et l'original processus père. AUTEUR (date) : « fork() crée une copie exacte du processus existant, partageant le même espace mémoire initial. »
  • Duplication exacte d’un processus existant par fork() : Processus fils est une copie fidèle du processus père, incluant le code, les données, et l’état d’exécution au moment de l’appel. La différence réside dans le PID et l’état d’exécution.
  • Différence entre fork() et CreateProcess() sous Windows :
    • fork() duplique le processus en conservant le même code et l’état, tandis que CreateProcess() crée un nouveau processus en chargeant un programme distinct, avec une duplication partielle de l’environnement.
    • fork() est spécifique à Unix/Linux, alors que CreateProcess() est une API Windows pour lancer un nouveau programme.
  • Exemples d’utilisation de fork() :
    • Création d’un processus fils pour exécuter une tâche spécifique tout en laissant le père continuer son exécution.
    • Affichage des PID père et fils pour illustrer la hiérarchie des processus.

📝 Points essentiels

  • La fonction fork() est un appel système crucial pour la création de processus lourds dans les systèmes Unix/Linux. Elle duplique le processus appelant, créant un processus fils avec un PID différent.
  • La duplication par fork() inclut le code, la pile, les registres, et l’état d’exécution, permettant au processus fils de reprendre l’exécution immédiatement après le fork, avec une copie fidèle de l’état du père.
  • La différence majeure avec CreateProcess() réside dans la nature de la création : fork() duplique un processus existant, tandis que CreateProcess() charge un nouveau programme.
  • Lors de l’exécution, la fonction fork() retourne deux valeurs : 0 dans le processus fils, et le PID du fils dans le père, permettant de différencier les deux processus pour exécuter des branches différentes.
  • Exemple pratique : après un fork(), le père et le fils affichent leur PID respectif, illustrant la hiérarchie et la duplication.

💡 À retenir

L’appel système fork() permet de dupliquer un processus existant pour créer un processus fils, facilitant la gestion de processus parallèles dans les systèmes Unix/Linux, en conservant une copie fidèle de l’état du processus père. La différence avec CreateProcess() réside dans la nature de la création, fork() étant une duplication exacte, tandis que CreateProcess() charge un nouveau programme.

📖 5. Hiérarchie des processus

🔑 Notions clés & Définitions

  • Relation père-fils : Structure hiérarchique dans laquelle un processus (père) crée et contrôle un ou plusieurs processus (fils). Selon AUTEUR (date), cette relation permet une organisation structurée et une gestion des processus au sein du système d’exploitation.
  • Partage ou non des ressources entre processus père et fils : Les processus fils peuvent partager certaines ressources (mémoire, fichiers) avec leur père ou disposer de ressources indépendantes. La décision dépend de la conception du système et des mécanismes de gestion des ressources.
  • Contrôle exercé par le père : Le processus père peut suspendre, détruire (kill), ou attendre (wait) la terminaison de ses processus fils. Selon AUTEUR (date), ce contrôle assure la gestion et la synchronisation des processus dans la hiérarchie, mais il ne peut pas renier un fils, ce qui limite la relation de dépendance.

📝 Points essentiels

  • La hiérarchie des processus est organisée via une relation père-fils, où chaque processus peut créer des processus fils à l’aide d’appels système comme fork() ou CreateProcess().
  • Le processus père détient un contrôle sur ses processus fils : il peut les suspendre, les détruire avec kill(), ou attendre leur terminaison avec wait(). Cependant, il ne peut pas renier un fils, ce qui garantit une certaine stabilité dans la gestion des processus.
  • La relation père-fils implique une gestion des ressources partagées ou séparées, selon la configuration du système. La hiérarchie facilite la gestion, la synchronisation et la destruction ordonnée des processus.
  • La structure hiérarchique ne permet pas au père de renier un fils, assurant ainsi que chaque processus créé reste sous contrôle jusqu’à sa fin ou sa destruction.

💡 À retenir

La hiérarchie des processus repose sur une relation père-fils où le père contrôle la création, la suspension, la destruction et l’attente de ses processus fils, sans pouvoir les renier, assurant une gestion structurée et contrôlée des processus dans le système.

📖 6. Concept de thread

🔑 Notions clés & Définitions

  • Thread : Flot d’exécution léger dans un processus, permettant à un programme d’effectuer plusieurs tâches simultanément. Selon AUTEUR (date), un thread partage avec ses frères le même espace mémoire et les descripteurs de fichiers du processus parent, tout en disposant de ses propres ressources privées (variables locales, registres, pile d’exécution, compteur ordinal).

  • Partage de mémoire et descripteurs de fichiers : Entre threads d’un même processus, ces ressources sont communes, ce qui facilite la communication et la synchronisation. Cependant, chaque thread possède ses ressources privées pour assurer son exécution indépendante (variables locales, registres, pile).

  • Différence entre processus et threads : Un processus possède ses ressources privées (espace d’adressage, ressources allouées, etc.), tandis que les threads d’un même processus partagent ces ressources, mais disposent de leurs propres ressources privées pour leur exécution (variables locales, pile, registres). Un processus est plus lourd à créer et gérer qu’un thread, qui est plus léger et rapide à instancier.

📝 Points essentiels

  • Un thread est un flot d’exécution au sein d’un même processus, utilisant la même mémoire et les mêmes descripteurs de fichiers que ses frères, mais avec ses propres ressources privées telles que variables locales, registres, pile d’exécution et compteur ordinal.

  • La gestion des threads permet d’améliorer la réactivité et l’efficacité d’un programme, notamment par la parallélisation des tâches, tout en partageant efficacement les ressources du processus.

  • La distinction entre processus et threads réside principalement dans la gestion des ressources : les processus ont leurs ressources privées, alors que les threads partagent ces ressources, ce qui réduit le coût de création et d’ordonnancement.

💡 À retenir

Un thread est un flot d’exécution léger qui partage avec ses frères les ressources du processus, permettant une exécution concurrente plus efficace tout en disposant de ses propres ressources privées pour son fonctionnement.

📖 7. Ressources threads

🔑 Notions clés & Définitions

  • Variables locales : Ressources privées à chaque thread, stockant des données temporaires ou spécifiques à l'exécution d'une tâche. Elles ne sont accessibles qu’au thread qui les a créées.
  • Registres : Petites unités de stockage dans le processeur contenant des données temporaires, spécifiques à chaque thread, permettant la gestion de l’état d’exécution.
  • Pile d’exécution (stack) : Zone mémoire privée à chaque thread, utilisée pour stocker les variables locales, les adresses de retour, et le contexte d’exécution.
  • Compteur ordinal : Registre indiquant l’instruction suivante à exécuter dans le code du thread, permettant de reprendre l’exécution après une suspension.
  • Code, variables globales, table des fichiers ouverts : Ressources partagées entre tous les threads d’un même processus, accessibles à tous, permettant la communication et la coordination.

📝 Points essentiels

  • Ressources privées des threads : Incluent les variables locales, registres, la pile d’exécution, et le compteur ordinal. Ces ressources sont isolées pour chaque thread, garantissant leur indépendance lors de l’exécution.
  • Ressources partagées entre threads : Comprennent le code, les variables globales, et la table des fichiers ouverts. Leur partage facilite la communication et la synchronisation, mais nécessite des mécanismes de contrôle pour éviter les conflits.
  • Gestion du contexte : Lorsqu’un thread est suspendu ou repris, le système sauvegarde ou restaure ses registres, compteur ordinal, et pile d’exécution pour assurer la continuité de l’exécution.
  • Avantages du multithreading : Réactivité accrue, partage efficace des ressources, économie de mémoire et de temps de création. La gestion des ressources privées et partagées est essentielle pour la stabilité et la performance des applications multithread.

💡 À retenir

Les threads disposent de ressources privées (variables locales, registres, pile, compteur) pour leur exécution indépendante, tout en partageant code, variables globales et fichiers ouverts, ce qui optimise la réactivité et l’efficacité dans la gestion des processus légers.

📖 8. Multithreading

🔑 Notions clés & Définitions

  • Thread : Flot d’exécution léger dans un processus, partageant la même mémoire et les mêmes descripteurs de fichiers que les autres threads du même processus (AUTEUR (2025) : définition).
  • Partage de ressources : Les threads d’un même processus utilisent les mêmes ressources globales (code, variables globales, fichiers ouverts) tout en disposant de leurs ressources privées (variables locales, registres, pile d’exécution, compteur ordinal).
  • Avantages du multithreading : Réactivité accrue, partage efficace des ressources, économie de mémoire et de temps de création. La création d’un thread est généralement plus rapide que celle d’un processus (exemple : Solaris, création d’un thread 30 fois plus rapide).
  • Service POSIX pthread : Ensemble de structures et fonctions C permettant la gestion des threads, notamment pthread_create() pour créer un thread, pthread_join() pour attendre sa terminaison, et pthread_exit() pour le terminer (AUTEUR (2025) : description).
  • Types de threads : Threads utilisateur, gérés par des bibliothèques (ex : pthread sous Linux), et threads noyau, supportés directement par le système d’exploitation, avec gestion par le noyau.

📝 Points essentiels

  • Le multithreading permet à un processus d’exécuter plusieurs tâches simultanément, améliorant la réactivité notamment dans les applications interactives ou en temps réel.
  • Les threads partagent la mémoire et les ressources du processus, ce qui facilite la communication et la coordination entre eux, tout en disposant de ressources privées pour leur exécution (variables locales, pile, registres).
  • La gestion des threads via le service POSIX pthread offre des fonctions standardisées pour leur création, suspension, terminaison, et synchronisation, simplifiant leur utilisation dans les systèmes modernes.
  • La distinction entre threads utilisateur et noyau permet d’optimiser la gestion des contextes d’exécution et la réactivité du système.
  • La création et la gestion efficace des threads contribuent à la performance globale du système, notamment par la réduction du coût de création et de commutation de contexte.

💡 À retenir

Le multithreading permet d’exécuter plusieurs tâches simultanément dans un même processus, en partageant ses ressources tout en disposant de ressources privées pour chaque thread, ce qui optimise la réactivité et l’efficacité du système.

📖 9. Gestionnaire de threads POSIX

🔑 Notions clés & Définitions

  • pthread_create() (service POSIX) : Fonction qui permet de créer un thread léger en spécifiant ses attributs, la fonction à exécuter et ses arguments. Elle retourne zéro en cas de succès, sinon un code d’erreur. (source : Ministère de l’Enseignement Supérieur, 2025-2026)

  • pthread_join() (service POSIX) : Fonction qui suspend l’exécution du thread appelant jusqu’à la terminaison du thread spécifié par son identifiant, puis récupère le résultat de la terminaison. Elle retourne zéro si elle réussit. (source : Ministère de l’Enseignement Supérieur, 2025-2026)

  • pthread_exit() (service POSIX) : Fonction permettant à un thread de terminer son exécution en retournant un état ou une valeur de sortie, sans terminer tout le processus. Elle est appelée par le thread lui-même. (source : Ministère de l’Enseignement Supérieur, 2025-2026)

📝 Points essentiels

  • Structures et fonctions : Le gestionnaire de threads POSIX repose principalement sur la structure pthread_t pour identifier un thread, et sur des fonctions comme pthread_create(), pthread_join(), et pthread_exit() pour gérer leur cycle de vie.
  • Création de threads : pthread_create() permet de lancer un nouveau thread en lui attribuant une fonction spécifique et ses arguments, tout en configurant éventuellement ses attributs (taille de pile, priorité).
  • Synchronisation : pthread_join() est essentielle pour attendre la fin d’un thread et récupérer ses résultats, évitant ainsi les problèmes de synchronisation.
  • Terminaison : pthread_exit() permet à un thread de s’arrêter proprement en retournant une valeur ou un statut, sans affecter le processus principal ou d’autres threads.
  • Partage des ressources : Les threads d’un même processus partagent la mémoire, les descripteurs de fichiers, mais disposent de leurs propres variables locales, registres, pile d’exécution, et compteur ordinal.
  • Avantages : La gestion des threads via POSIX offre une création rapide, une communication facilitée, et une meilleure réactivité dans les applications multitâches.

💡 À retenir

Le gestionnaire de threads POSIX, à travers pthread_create(), pthread_join(), et pthread_exit(), fournit un cadre efficace pour la création, la synchronisation et la terminaison des threads légers, optimisant la réactivité et la partage de ressources dans les systèmes multitâches.

📖 10. Algorithmes d’ordonnancement

🔑 Notions clés & Définitions

  • Problématique de la concurrence d’accès aux ressources partagées : Situation où plusieurs processus ou threads tentent d’accéder simultanément à des ressources communes (mémoire, périphériques, fichiers), pouvant entraîner des résultats imprévisibles si aucune précaution n’est prise, comme le souligne la nécessité de mécanismes d’ordonnancement pour gérer ces accès (source : République Tunisienne, 2025-2026).

  • Maintien par le système de tables et files d’attente pour ordonnancement : Organisation des processus en structures de données (tables, files d’attente) permettant de gérer leur état (prêt, en exécution, bloqué) et leur ordre d’accès au processeur, facilitant la planification selon des critères définis (source : République Tunisienne, 2025-2026).

  • Principe général de l’ordonnancement des processus : Mécanisme par lequel le système d’exploitation décide quel processus ou thread doit s’exécuter à un instant donné, en utilisant des critères tels que la priorité, le temps écoulé ou la durée d’attente, afin d’optimiser l’utilisation des ressources et la réactivité du système (source : République Tunisienne, 2025-2026).

📝 Points essentiels

  • La concurrence d’accès aux ressources partagées peut conduire à des résultats imprévisibles si elle n’est pas contrôlée, ce qui nécessite des mécanismes d’ordonnancement pour assurer la cohérence et la stabilité du système (source : République Tunisienne, 2025-2026).

  • Le système maintient une table de processus et des files d’attente pour gérer l’état des processus, leur ordonnancement et leur passage entre les états (prêt, en exécution, bloqué). Ces structures permettent une gestion efficace de la planification (source : République Tunisienne, 2025-2026).

  • L’ordonnancement peut être préemptif ou non préemptif : dans le premier cas, un processus peut être interrompu pour laisser la place à un autre processus plus prioritaire (fin de quantum, arrivée d’un processus plus important), alors que dans le second, un processus ne peut quitter le processeur que lorsqu’il termine ou se bloque (source : République Tunisienne, 2025-2026).

  • Les critères d’ordonnancement incluent le taux d’utilisation du CPU, le débit, le délai de rotation, le temps d’attente et le temps de réponse, visant à maximiser l’efficacité tout en minimisant les délais et l’attente (source : République Tunisienne, 2025-2026).

  • Différents algorithmes d’ordonnancement existent, tels que FCFS (Premier arrivé, premier servi), SJF (Plus court d’abord), Round Robin, et avec priorités, chacun adapté à des contextes spécifiques pour répondre à des objectifs de réactivité ou d’efficacité (source : République Tunisienne, 2025-2026).

💡 À retenir

L’ordonnancement des processus repose sur la gestion organisée des ressources via des tables et files d’attente, permettant d’assurer une concurrence maîtrisée et une utilisation optimale du processeur selon des critères définis.

📖 11. Ordonnancement préemptif

🔑 Notions clés & Définitions

  • Ordonnancement préemptif : Méthode où la transition d’un processus de l’état « élu » vers l’état « prêt » peut être interrompue à tout moment par le système, notamment lorsqu’un processus plus prioritaire ou un quantum de temps expire (selon PERROUX (date)). La réquisition du processeur est autorisée, permettant une gestion dynamique et réactive des processus.

  • Transition entre états en ordonnancement préemptif : La transition du processus en cours d’exécution vers l’état prêt ou bloqué peut se produire à tout instant, notamment lors de l’arrivée d’un processus de priorité supérieure ou à la fin du quantum de temps alloué, contrairement à l’ordonnancement non préemptif où cette transition est interdite (voir PERROUX (date)).

  • Conditions de transition en ordonnancement préemptif : La réquisition du CPU peut se produire si un processus plus prioritaire devient prêt ou si le quantum de temps du processus en cours expire, permettant ainsi une gestion fine et réactive de l’allocation CPU (voir PERROUX (date)).

  • Interdiction de réquisition en ordonnancement non préemptif : La transition du processus en cours vers l’état prêt ne peut se faire que lorsque celui-ci termine son exécution ou se bloque, empêchant toute interruption volontaire ou involontaire par le système, ce qui limite la réactivité (voir PERROUX (date)).

📝 Points essentiels

  • La différence fondamentale réside dans la capacité ou non du système à interrompre un processus en exécution pour en affecter un autre : préemptif permet cette interruption à tout moment, non préemptif la interdit sauf lorsque le processus termine ou se bloque (voir PERROUX (date)).

  • En ordonnancement préemptif, la transition du processus en état « élu » vers « prêt » est autorisée, ce qui permet une gestion dynamique et une meilleure réactivité du système face aux priorités ou à l’expiration du quantum (voir PERROUX (date)).

  • La réquisition du CPU en mode préemptif est essentielle pour assurer la réactivité dans les systèmes multitâches modernes, notamment pour la gestion des processus prioritaires ou interactifs (voir PERROUX (date)).

  • En revanche, en mode non préemptif, cette réquisition est interdite, ce qui peut entraîner des problèmes de réactivité et de famine pour les processus de faible priorité, mais garantit une exécution plus stable et sans interruption volontaire (voir PERROUX (date)).

💡 À retenir

L’ordonnancement préemptif permet une gestion dynamique et réactive des processus en autorisant la réquisition du CPU à tout moment, contrairement à l’ordonnancement non préemptif où la transition est strictement contrôlée et limitée aux fins naturelles du processus (fin ou blocage).

📖 12. Critères d’ordonnancement

🔑 Notions clés & Définitions

  • Taux d’utilisation CPU : Rapport entre le temps CPU utilisé par un processus ou l’ensemble des processus et le temps total écoulé, permettant d’évaluer l’efficacité de l’ordonnancement (source : Salwa Othmen, 2025-2026).
  • Débit : Nombre de processus terminés par unité de temps, indicateur de la capacité de traitement du système (source : Salwa Othmen, 2025-2026).
  • Délai de rotation (turnaround time) : Temps écoulé entre la soumission d’un processus et sa terminaison, incluant le temps d’attente, d’exécution et d’attente en E/S (source : Salwa Othmen, 2025-2026).
  • Temps d’attente (waiting time) : Durée pendant laquelle un processus reste dans la file d’attente prêt, avant son exécution effective (source : Salwa Othmen, 2025-2026).
  • Temps de réponse (response time) : Temps écoulé entre la soumission d’un processus et le début de sa première réponse ou exécution (source : Salwa Othmen, 2025-2026).

📝 Points essentiels

  • Les critères d’efficacité en ordonnancement visent à maximiser l’utilisation du CPU et le débit, tout en minimisant les délais, le temps d’attente et le temps de réponse (source : Salwa Othmen, 2025-2026).
  • La performance du système d’exploitation est évaluée selon plusieurs critères : le taux d’utilisation CPU, le débit, le délai de rotation, le temps d’attente et le temps de réponse, qui doivent être optimisés simultanément (source : Salwa Othmen, 2025-2026).
  • L’objectif principal de l’ordonnancement est d’assurer une utilisation efficace des ressources tout en garantissant une réactivité optimale pour les processus interactifs, en minimisant notamment le temps de réponse (source : Salwa Othmen, 2025-2026).
  • La sélection des critères dépend du contexte d’utilisation : par exemple, pour un système temps réel, le délai de rotation et le temps de réponse sont cruciaux, tandis que pour un traitement batch, le débit et le taux d’utilisation CPU priment (source : Salwa Othmen, 2025-2026).
  • La gestion efficace de ces critères permet d’atteindre un compromis entre performance globale et réactivité, en tenant compte des objectifs spécifiques du système (source : Salwa Othmen, 2025-2026).

💡 À retenir

Les critères d’ordonnancement, tels que le taux d’utilisation CPU, le débit, le délai de rotation, le temps d’attente et le temps de réponse, sont essentiels pour optimiser la performance et la réactivité d’un système informatique, en visant à maximiser l’efficacité tout en minimisant les délais et temps d’attente.

📊 Tableaux de Synthèse

ThèmeConcepts ClésDétailsAuteur / Référence
Processus & IdentifiantsProcessus, PID, espace d’adressage, signaux, relations hiérarchiquesProcessus : entité d’exécution, PID : identifiant unique, espace mémoire isolé, signaux : communication, relations : père-fils, groupeMinistère de l’Enseignement Supérieur (2025-2026)
États d’un processusNouveau, Prêt, En exécution, Bloqué, FinTransitions : création, attribution CPU, attente événements, terminaisonSalwa Othmen (2025)
Bloc de Contrôle de Processus (PCB)Structure de gestion, contexte, registres, pointeursContient état, registres, priorités, pointeurs vers files, opération de sauvegarde/restaurationSalwa Othmen (2025-2026)
Création processus fork()Dupliquer un processus, processus père et filsfork() crée une copie du processus appelant, partage ou copie espace mémoire selon contexteAuteur inconnu (date)

⚠️ Pièges & Confusions Fréquentes

  1. Confondre processus et thread : un processus possède un espace mémoire isolé, un thread partage cet espace.
  2. Mauvaise interprétation des états : croire que le processus peut rester indéfiniment bloqué ou en attente sans transition.
  3. Confusion entre PCB et contexte d’un processus : PCB ne stocke pas le code, mais l’état d’exécution.
  4. Croire que fork() partage l’espace mémoire : en réalité, il duplique ou partage selon la stratégie (copie à la demande).
  5. Négliger la gestion des signaux : erreur d’interprétation de leur rôle dans la gestion des processus.
  6. Confusion entre processus père et processus groupe : groupe peut contenir plusieurs processus liés.
  7. Ignorer la différence entre état de prêt et en exécution : processus en prêt n’utilise pas le CPU, en exécution oui.

✅ Checklist Examen

  • Connaître la définition précise d’un processus selon le Ministère de l’Enseignement Supérieur (2025-2026).
  • Savoir identifier le rôle du PID dans la gestion des processus.
  • Expliquer la fonction et la composition du Bloc de Contrôle de Processus (PCB).
  • Décrire les différentes étapes et états du cycle de vie d’un processus (Nouveau, Prêt, En exécution, Bloqué, Fin).
  • Comprendre la gestion des signaux et leur impact sur l’état d’un processus.
  • Maîtriser la hiérarchie des processus : processus père, fils, groupe.
  • Connaître la différence entre processus et thread, ainsi que leur gestion des ressources.
  • Savoir ce qu’est la création d’un processus via fork() et ses implications.
  • Connaître les ressources principales d’un thread (mémoire, CPU, synchronisation).
  • Comprendre le concept de multithreading et ses avantages.
  • Maîtriser le fonctionnement du gestionnaire de threads POSIX.
  • Connaître les principaux algorithmes d’ordonnancement (FIFO, Round Robin, Priorités).
  • Expliquer le principe de l’ordonnancement préemptif.
  • Identifier les critères d’ordonnancement : temps CPU, priorité, temps de réponse, équité.
  • Vérifier la maîtrise des notions de contexte, de transition d’état, et de gestion des ressources.

Testez vos connaissances

Testez vos connaissances sur Gestion des Processus et Threads avec 12 questions à choix multiples avec corrections détaillées.

1. Que désigne un processus dans un système d'exploitation ?

2. Selon Salwa Othmen (2025), quel est l’état d’un processus lorsqu’il est en attente d’affectation du processeur, étant placé dans la file d’attente des processus prêts ?

Faire le QCM →

Révisez avec les flashcards

Mémorisez les concepts clés de Gestion des Processus et Threads avec 24 flashcards interactives.

Processus — définition ?

Entité d'exécution d'un programme, avec ses ressources.

PID — rôle ?

Identifiant unique pour chaque processus.

Espace d’adressage — localisation ?

Mémoire allouée au processus, isolée des autres.

Voir les flashcards →

Cours similaires

Crée tes propres fiches de révision

Importe ton cours et l'IA génère fiches, QCM et flashcards en 30 secondes.

Générateur de fiches