📋 Plan du Cours
- Processus Unix
- Contenu PCB
- Changement de contexte
- Gestion des signaux
- Visualisation processus
- États processus
- Communication inter-processus
- Gestion mémoire
- Commandes Unix
- Attaques et sécurité
- Gestion des processus
📖 1. Processus Unix
🔑 Notions clés & Définitions
-
Processus (modélisé par UNIX (date inconnue)) : abstraction système représentant un programme en cours d’exécution, constitué d’un ensemble d’octets en langage machine, d’un compteur ordinal, et d’instructions en mémoire. Il reflète l’état d’un programme en exécution.
-
PCB (Process Control Block) : structure noyau regroupant toutes les informations essentielles d’un processus, telles que l’ID (PID), le contenu des registres, le compteur ordinal, la pile, l’espace d’adressage, la liste des fichiers ouverts, et la gestion des signaux. (source : contenu source)
-
Contexte d’un processus : ensemble de données permettant de reprendre l’exécution d’un processus interrompu, stocké dans le PCB. Il inclut notamment le registre d’instruction, le compteur ordinal, et la pile d’interruption. (source : contenu source)
-
Changement de contexte : opération matérielle lourde et atomique par laquelle le système sauvegarde l’état d’un processus en cours et charge celui d’un autre, permettant la multitâche. (source : contenu source)
-
Signaux (via appels système) : mécanisme de communication inter-processus permettant d’envoyer des notifications ou des commandes (ex : kill) pour gérer la vie des processus. (source : contenu source)
-
Processus zombie : processus terminé dont le père n’a pas encore récupéré ses informations via _exit, laissant ses ressources en état de « zombie » jusqu’à ce qu’il soit « ramassé » par le père. (source : contenu source)
📝 Points essentiels
-
Organisation arborescente : Les processus Unix sont structurés en arbre, avec le processus spécial PID 0 (initialisateur) et PID 1 (init ou systemd), qui est le père de tous les autres processus. La console et les processus lancés via shell sont des processus fils de leur parent respectif.
-
Gestion du contexte : Le contexte minimal doit permettre une reprise rapide, tandis que le contexte complet garantit la cohérence lors de la reprise d’un processus. La sauvegarde et la restauration du contexte sont essentielles pour la multitâche.
-
Changement de contexte : Opération coûteuse, réalisée par l’Unité de Contrôle, qui sauvegarde l’état du processus en cours et charge celui du processus suivant. La stratégie de masquage ou désarmement limite les cascades d’interruptions.
-
Visualisation et gestion : commandes comme top et ps permettent de visualiser l’état des processus en temps réel ou instantané, facilitant la gestion et le débogage.
-
Système de fichiers /proc : Interface permettant d’accéder en lecture aux PCB et autres informations du noyau sur chaque processus via un système de fichiers virtuel.
-
États des processus : en exécution, prêt, endormi, en swap, préempté, zombie. La gestion de ces états est cruciale pour la réactivité et la stabilité du système.
-
Protection et sécurité : Les processus ne peuvent exécuter que leur propre code, et la communication inter-processus se limite aux mécanismes contrôlés par le noyau (signaux, pipes FIFO).
-
Attaques et dénis de service : La fork bombe illustre la vulnérabilité aux processus en cascade, pouvant saturer le système. La limitation via ulimit est une stratégie de prévention.
💡 À retenir
Les processus Unix sont des entités structurées en arbre, gérées par le noyau via le PCB, dont la gestion du contexte et la commutation assurent la multitâche, la sécurité, et la stabilité du système. La maîtrise des mécanismes de changement de contexte, de gestion des états, et des outils de visualisation est essentielle pour l’administration et le débogage.
📖 2. Contenu PCB
🔑 Notions clés & Définitions
- Processus (selon AUTEUR (date)) : Un processus est une abstraction système représentant l’état d’exécution d’un programme, constitué d’un ensemble d’octets en langage machine, incluant le compteur ordinal et les instructions en mémoire.
- PCB (Process Control Block) : Structure noyau regroupant toutes les informations essentielles pour la gestion d’un processus, telles que l’ID (PID), le contenu des registres, le compteur ordinal, le pointeur de pile, l’espace d’adressage, la liste des fichiers ouverts, et la gestion des signaux.
- Contexte d’un processus : Ensemble des données permettant de reprendre l’exécution d’un processus interrompu, incluant notamment le contenu des registres, le compteur ordinal, et la pile d’interruption. Selon AUTEUR (date), il doit être à la fois minimal pour la rapidité et complet pour garantir la reprise correcte.
- Changement de contexte : Opération matérielle lourde et atomique permettant de sauvegarder l’état d’un processus et de charger celui d’un autre, nécessaire pour le partage de la puissance de calcul entre plusieurs processus. Il peut provoquer des risques d’interruptions en cascade (AUTEUR (date)).
- Signaux Unix : Mécanisme de communication inter-processus permettant d’envoyer des notifications ou commandes (ex : kill -9 pour terminer brutalement un processus). La liste complète des signaux peut être consultée via
kill -L.
- États d’un processus : Divers états tels que prêt, en exécution, endormi, en swap, préempté, ou zombie, gérés par un automate pour assurer la gestion efficace des processus. La transition entre ces états est coûteuse en ressources CPU et mémoire (AUTEUR (date)).
📝 Points essentiels
- Le PCB est la structure centrale qui rassemble toutes les informations nécessaires à la gestion d’un processus, notamment l’ID (PID), l’état des registres, le compteur ordinal, la pile, et la liste des fichiers ouverts.
- La visualisation et la gestion des processus se font via des outils comme
/proc/PID/ (ex : /proc/22134/exe pour le fichier exécutable). La commande top permet de visualiser en temps réel l’état des processus, tandis que ps offre des clichés instantanés.
- Le contexte d’un processus est une collection de données essentielles pour la reprise après interruption, comprenant l’accumulateur, le registre d’instruction, le compteur ordinal, et la pile d’interruption. La sauvegarde de ce contexte est cruciale lors du changement de processus ou d’interruption.
- Le changement de contexte est une opération coûteuse, réalisée de manière atomique par l’Unité de Contrôle, pour permettre la multitâche. Il doit être contrôlé via des stratégies de masquage ou de désarmement pour éviter les cascades d’interruptions (AUTEUR (date)).
- La gestion des états de processus, notamment la préemption, le passage en mode noyau ou utilisateur, et la transition vers les états endormi ou zombie, est essentielle pour la réactivité et la stabilité du système. La préemption permet d’interrompre un processus pour en exécuter un autre, améliorant la réactivité.
💡 À retenir
Le PCB centralise toutes les informations nécessaires à la gestion d’un processus, et le changement de contexte, bien que coûteux, est essentiel pour assurer la multitâche efficace et la stabilité du système Unix. La gestion précise des états et des signaux garantit la robustesse et la réactivité du système d’exploitation.
📖 3. Changement de contexte
🔑 Notions clés & Définitions
-
Changement de contexte : opération permettant de sauvegarder l’état d’un processus en cours pour en charger un autre, afin de partager la puissance de calcul entre plusieurs processus. AUTEUR (date) : définit comme une primitive de l’Unité de Contrôle, lourde et atomique, non interruptible, essentielle pour la gestion multitâche.
-
Contexte d’un processus : ensemble des données nécessaires pour reprendre l’exécution d’un processus interrompu, stocké principalement dans le PCB (Process Control Block). Inclut registres, compteur ordinal, pile, espace d’adressage, etc. AUTEUR (date) : précisé comme la « photo instantanée » du processus dans le PCB.
-
Masquage et désarmement : stratégies pour limiter ou bloquer les interruptions lors du changement de contexte. Le masquage reporte certaines interruptions, tandis que le désarmement bloque toutes les interruptions, notamment critiques. AUTEUR (date) : mentionnés comme moyens de contrôler les cascades d’interruption.
-
Pile d’interruption : structure matérielle gérée par le processeur, qui stocke le contexte lors d’une interruption. Seule l’Unité de Contrôle peut la vider ou la manipuler, permettant de charger un nouveau contexte lors d’un changement d’état. AUTEUR (date) : décrite comme une vraie pile, limitée et gérée au niveau matériel.
-
Risque d’interruption en cascade : phénomène où une interruption en déclenche une autre, pouvant entraîner des boucles vicieuses. Le changement de contexte doit être contrôlé pour éviter ces cascades, notamment par le masquage ou le désarmement. AUTEUR (date) : souligné comme un problème critique dans la gestion multitâche.
-
Signaux et kill : mécanismes pour terminer ou gérer un processus via l’envoi de signaux (ex : kill -9). La commande kill permet une terminaison douce ou brutale, selon le signal utilisé. AUTEUR (date) : précisé comme un moyen de contrôle sur les processus, notamment pour leur arrêt.
📝 Points essentiels
-
Le changement de contexte est une opération critique, lourde et non interruptible, qui consiste à sauvegarder l’état d’un processus en RAM ou en mémoire secondaire (SWAP) pour en charger un autre. Il est réalisé par une primitive de l’Unité de Contrôle, garantissant l’intégrité et la rapidité de la commutation.
-
Le contexte d’un processus comprend des registres (accumulateur, registre d’instruction, compteur ordinal, etc.), la pile d’interruption, l’espace d’adressage, et d’autres informations essentielles pour la reprise de l’exécution.
-
La gestion des interruptions utilise le masquage et le désarmement pour éviter les cascades d’interruption, notamment lors de changements de contexte critiques. Ces stratégies empêchent la surcharge du système et garantissent la stabilité.
-
La pile d’interruption, gérée au niveau matériel, stocke le contexte lors d’une interruption. La manipulation de cette pile permet de charger un nouveau contexte et de reprendre le processus interrompu.
-
La gestion des processus inclut la possibilité de terminer un processus via des signaux (kill), avec des options pour une terminaison douce ou brutale, permettant un contrôle précis de l’exécution.
-
La commutation de contexte est coûteuse en ressources, mais indispensable pour la multitâche, la réactivité et la robustesse du système. Elle doit être optimisée pour éviter les ralentissements ou blocages.
💡 À retenir
Le changement de contexte est une opération fondamentale et coûteuse du système d’exploitation, permettant la gestion multitâche en sauvegardant et chargeant rapidement l’état des processus, tout en évitant les cascades d’interruption grâce à des stratégies de contrôle comme le masquage et le désarmement.
📖 4. Gestion des signaux
🔑 Notions clés & Définitions
- Signal : Notification asynchrone envoyée à un processus pour l’interrompre ou lui demander une action spécifique, permettant la gestion d’événements externes ou internes. (AUTEUR (date) : définition générale)
- Gestionnaire de signaux : Routine ou mécanisme du système d’exploitation chargé de traiter ou d’ignorer les signaux reçus par un processus. Il peut être personnalisé par le processus via la fonction
signal() ou sigaction().
- Changement de contexte (signal) : Opération consistant à sauvegarder l’état du processus en cours et à charger celui du gestionnaire de signal ou du processus suivant, assurant la reprise correcte après traitement.
- Masquage de signaux : Technique consistant à désactiver temporairement certains signaux pour éviter leur traitement pendant une opération critique, en utilisant la fonction
sigprocmask().
- Orphelins et processus zombies (relation avec gestion des signaux) : Lorsqu’un processus termine, ses signaux de terminaison sont envoyés à son père, qui doit les gérer pour éviter la création de processus zombies, en utilisant
wait() ou waitpid().
- Signaux standards Unix : Ensemble de signaux prédéfinis (ex : SIGINT, SIGKILL, SIGSTOP, SIGCHLD) permettant de gérer la terminaison, la suspension ou la reprise des processus, ainsi que la communication d’événements système.
📝 Points essentiels
- La gestion des signaux permet une réponse asynchrone aux événements, facilitant la communication inter-processus et la gestion d’erreurs ou d’interruptions (ex : Ctrl+C en terminal envoie SIGINT).
- La gestion efficace des signaux implique la définition de gestionnaires (
signal() ou sigaction()) pour traiter ou ignorer certains signaux, tout en évitant les conflits ou la surcharge du système.
- La technique de masquage de signaux est essentielle pour protéger les sections critiques du code contre des interruptions indésirables, notamment lors de modifications de structures de données partagées.
- La suppression ou la terminaison d’un processus via
kill() envoie un signal spécifique, souvent SIGKILL ou SIGTERM, pour arrêter proprement ou brutalement un processus.
- La gestion des signaux doit respecter la règle d’atomicité : les gestionnaires doivent être courts et non bloquants pour éviter de compromettre la stabilité du système.
- La relation entre processus père et processus fils est régulée par les signaux (ex : SIGCHLD), permettant de gérer la terminaison et la collecte des ressources.
💡 À retenir
La gestion des signaux est un mécanisme clé permettant au système d’exploitation de répondre efficacement aux événements asynchrones, tout en assurant la stabilité et la synchronisation des processus.
📖 5. Visualisation processus
🔑 Notions clés & Définitions
- Processus (modèle abstrait) : Représentation d’un programme en cours d’exécution, constitué d’un ensemble d’octets en langage machine, incluant le compteur ordinal et les instructions (source : AUTEUR (date)).
- PCB (Process Control Block) : Structure noyau regroupant toutes les informations nécessaires à la gestion d’un processus, telles que l’ID (PID), le contenu des registres, le compteur ordinal, le pointeur de pile, l’espace d’adressage, la liste des fichiers ouverts, et la gestion des signaux (source : AUTEUR (date)).
- Contexte d’un processus : Ensemble des données permettant de reprendre l’exécution d’un processus interrompu, comprenant notamment le contenu des registres, le compteur ordinal, et la pile d’interruption (source : AUTEUR (date)).
- Changement de contexte : Opération matérielle lourde et atomique qui sauvegarde l’état du processus en cours et charge celui du processus suivant, indispensable pour la multitâche (source : AUTEUR (date)).
- Visualisation via /proc : Interface pseudo-fichier permettant d’accéder en lecture aux PCB et autres informations des processus en utilisant le système de fichiers Unix, facilitant le débogage et la compréhension de l’état des processus (source : AUTEUR (date)).
- États d’un processus : Divers états gérés par le système, tels que prêt, en exécution, endormi, en swap, préempté, zombie, permettant une gestion efficace de la planification et de la mémoire (source : AUTEUR (date)).
📝 Points essentiels
- La visualisation des processus repose sur la structure du PCB, qui contient toutes les informations nécessaires pour gérer, déboguer ou analyser un processus en cours ou terminé.
- La commande
top permet une visualisation dynamique et en temps réel de l’état des processus, avec rafraîchissement automatique, tandis que ps fournit des clichés instantanés de l’état des processus (source : AUTEUR (date)).
- La gestion du contexte est cruciale pour la multitâche : le contexte minimal doit être rapidement sauvegardé pour permettre un changement de tâche efficace, mais doit aussi contenir suffisamment d’informations pour une reprise fidèle (source : AUTEUR (date)).
- Le changement de contexte est une opération coûteuse, réalisée par l’unité de contrôle, qui sauvegarde l’état du processus en RAM et charge celui du processus suivant, évitant ainsi la corruption ou la perte de données (source : AUTEUR (date)).
- La structuration arborescente des processus, notamment avec le processus init (PID 1), facilite la gestion hiérarchique et la terminaison en cascade des processus fils (source : AUTEUR (date)).
- La visualisation et la gestion des processus sont essentielles pour le débogage, l’optimisation et la sécurité du système, notamment via la manipulation des signaux et la gestion des états (source : AUTEUR (date)).
💡 À retenir
La visualisation des processus, à travers le PCB et les outils comme top ou /proc, permet de comprendre, déboguer et optimiser l’exécution multitâche en offrant une vue détaillée de l’état et du contexte de chaque processus.
📖 6. États processus
🔑 Notions clés & Définitions
- État d’un processus : Ensemble des données permettant de reprendre l’exécution d’un processus interrompu, stockées principalement dans le PCB (Process Control Block). AUTEUR (date) : « Le contexte est dans le PCB, mais il y a d’autres éléments aussi. »
- Zombie : Processus dont la fonction _exit a été exécutée, mais dont le processus père n’a pas encore récupéré ses informations de terminaison. Il reste en mémoire pour permettre la communication avec le père. AUTEUR (date) : « Zombie : _exit a été exécuté, le processus père peut encore traiter de l’information. »
- Processus prêt (en RAM ou en SWAP) : Processus en état d’attente pour être exécuté, soit en mémoire vive (RAM), soit en mémoire d’échange (SWAP), en attente de ressources CPU. AUTEUR (date) : « Processus prêt à l’exécution en RAM (in queue) »
- Processus endormi (en RAM ou SWAP) : Processus en attente d’un événement ou d’une ressource, sans exécution active, pouvant être réveillé ultérieurement. AUTEUR (date) : « Processus endormi en RAM »
- Processus préempté : Processus interrompu par le système pour céder la place à un autre, souvent en mode noyau ou utilisateur, pour assurer la réactivité du système. AUTEUR (date) : « Processus préempté (souvent en sortie du mode noyau ou utilisateur). »
📝 Points essentiels
- La gestion des états repose sur une machine à états, permettant de modéliser la vie d’un processus : de sa naissance à sa terminaison.
- La transition entre états peut être coûteuse en temps CPU, notamment lors des changements d’état ou du passage en mode noyau.
- La préemption, introduite pour améliorer la réactivité, permet d’interrompre un processus en cours pour en exécuter un autre, évitant ainsi l’attente longue en absence de préemption (voir aussi la section 10).
- La gestion des processus inclut la sauvegarde du contexte (dans le PCB), notamment lors du changement de contexte, pour garantir une reprise fiable.
- La notion de processus zombie permet de maintenir une communication avec le processus terminé, évitant la perte d’informations essentielles pour le processus père.
💡 À retenir
Les états d’un processus forment une machine à états complexe, essentielle pour assurer la réactivité, la robustesse et la gestion efficace des ressources du système d’exploitation. La gestion précise de ces états, notamment via la préemption et la synchronisation, est cruciale pour la stabilité du système.
📖 7. Communication inter-processus
🔑 Notions clés & Définitions
-
Communication inter-processus (CIP) : Ensemble des mécanismes permettant à plusieurs processus d’échanger des données ou de synchroniser leurs actions, afin de coopérer dans un système multitâche. (Source : contenu source)
-
Signaux : Mécanismes de communication asynchrone permettant d’envoyer des notifications ou des interruptions à un processus pour signaler un événement ou demander une action spécifique. (Source : contenu source)
-
Pipes FIFO : Canaux de communication unidirectionnels, souvent utilisés pour transmettre des flux de données entre processus parent et enfant, ou entre processus indépendants. Leur nom "FIFO" indique une gestion en file d’attente (First In, First Out). (Source : contenu source)
-
PCB (Process Control Block) : Structure noyau contenant toutes les informations nécessaires à la gestion d’un processus, notamment ses registres, son espace d’adressage, ses descripteurs de fichiers, et ses signaux. La communication peut impliquer la manipulation ou la mise à jour du PCB. (Source : contenu source)
-
Changement de contexte : Opération consistant à sauvegarder l’état d’un processus (dans son PCB) pour permettre à un autre processus de s’exécuter, essentiel pour la gestion de la multitâche. (Source : contenu source)
-
Champs du contexte : Ensemble des données sauvegardées dans le PCB lors d’un changement de contexte, comprenant notamment le compteur ordinal, les registres, la pile d’interruption, et l’état des signaux. (Source : contenu source)
📝 Points essentiels
-
La communication inter-processus repose principalement sur des mécanismes comme les signaux, pipes FIFO, et la mémoire partagée, permettant la synchronisation et l’échange d’informations. (Source : contenu source)
-
La structure PCB centralise toutes les données nécessaires pour la gestion d’un processus, facilitant la communication et la synchronisation entre processus via la mise à jour ou la lecture de ses champs. (Source : contenu source)
-
La gestion du changement de contexte est cruciale pour la communication efficace, car elle permet de sauvegarder et de restaurer rapidement l’état d’un processus lors d’un passage d’un processus à un autre, en évitant la perte d’informations essentielles. (Source : contenu source)
-
La communication peut aussi passer par des mécanismes asynchrones (signaux) pour notifier rapidement un processus d’un événement, ou par des flux synchrones (pipes) pour un échange structuré de données. (Source : contenu source)
-
La gestion de la communication doit garantir la sécurité, la cohérence, et la synchronisation, notamment en utilisant des stratégies comme le masquage ou le désarmement lors du traitement des interruptions ou des signaux. (Source : contenu source)
💡 À retenir
La communication inter-processus, essentielle à la coopération multitâche, repose sur des mécanismes variés comme les signaux, pipes FIFO, et la gestion du PCB, permettant une synchronisation efficace tout en assurant la sécurité et la cohérence des échanges.
📖 8. Gestion mémoire
🔑 Notions clés & Définitions
- Contexte d’un processus (AUTEUR (source)) : Ensemble des données permettant de reprendre l’exécution d’un processus interrompu, stocké principalement dans le PCB, comprenant registres, compteur ordinal, pile d’interruption, et espace d’adressage.
- Changement de contexte (AUTEUR (source)) : Opération matérielle non interruptible qui sauvegarde l’état d’un processus en RAM et charge celui d’un autre, permettant la multitâche.
- Pile d’interruption (AUTEUR (source)) : Structure matérielle gérée par le processeur, contenant l’état du contexte lors d’une interruption, pouvant être modifiée par le système ou périphériques.
- Table des processus (AUTEUR (source)) : Organisation arborescente interne au noyau, où chaque processus est identifié par un PID, avec le processus init (PID 1) comme racine.
- Ulimit (AUTEUR (source)) : Limitation imposée par le système sur les ressources allouées à un utilisateur ou processus, comme le nombre de processus ou la taille des fichiers de mémoire.
- États d’un processus (AUTEUR (source)) : Modes d’exécution tels que prêt, en exécution, endormi, prêt en swap, ou zombie, gérés par un automate pour optimiser la gestion mémoire et CPU.
📝 Points essentiels
- La gestion mémoire repose sur la sauvegarde et la restauration rapide du contexte d’un processus, stocké dans le PCB, pour permettre la multitâche efficace (AUTEUR (source)).
- Le changement de contexte, opération lourde et atomique, implique la sauvegarde de l’état actuel en RAM et le chargement du nouvel état, évitant ainsi les interruptions en cascade (AUTEUR (source)).
- La pile d’interruption, gérée par le matériel, stocke temporairement l’état lors d’événements asynchrones, et peut être modifiée par le système pour gérer les interruptions critiques ou lourdes.
- La structuration arborescente des processus, avec init (PID 1) comme racine, facilite leur gestion hiérarchique et leur visualisation via outils comme
top ou ps.
- La limitation des ressources via
ulimit permet d’éviter la surcharge mémoire ou CPU, notamment lors d’attaques comme la fork bombe, en contrôlant le nombre de processus ou la taille mémoire allouée.
- La gestion des états des processus, notamment la préemption et le swapping, est essentielle pour assurer la réactivité du système et la stabilité face à la surcharge mémoire ou CPU.
💡 À retenir
La gestion mémoire dans un système Unix repose sur la sauvegarde efficace du contexte des processus, la gestion hiérarchique des processus, et la limitation des ressources pour assurer stabilité et performance.
📖 9. Commandes Unix
🔑 Notions clés & Définitions
-
/proc/PID : Pseudosystème de fichiers d’informations sur un processus, accessible en lecture, permettant d’obtenir des détails sur le PCB (Process Control Block) du processus, comme l’exécutable, les registres, et l’état du processus (support de la multiplicité des programmes).
-
Changement de contexte : Opération matérielle non interruptible permettant de sauvegarder l’état d’un processus en RAM et de charger celui d’un autre pour assurer la multitâche. C’est une primitive de l’Unité de Contrôle, lourde mais essentielle pour la gestion des processus (****).
-
kill (signal) : Commande Unix pour envoyer un signal à un processus, notamment pour le terminer. kill -9 (ou SIGKILL) force la terminaison immédiate, tandis que kill sans option envoie un signal par défaut (gestion des processus).
-
top : Outil de visualisation en temps réel de l’état des processus, avec rafraîchissement automatique, permettant de surveiller l’utilisation CPU, mémoire, et autres ressources système (visualisation processus).
-
fork bomb : Attaque par déni de service qui crée une cascade exponentielle de processus via une fonction récursive, saturant le système. Elle est codée en shell ou en C, illustrant la dangerosité de la gestion non contrôlée des processus (sécurité, attaques).
-
ulimit : Commande permettant de limiter les ressources allouées à un utilisateur ou un processus, comme le nombre maximum de processus ou la taille des fichiers de core dump, pour prévenir les abus ou dénis de service (gestion des ressources).
📝 Points essentiels
-
La structure arborescente des processus Unix commence avec le processus PID 0 (initial) et PID 1 (init ou systemd), qui sont à la racine de tous les processus. La console et les processus lancés par l’utilisateur (ex : /bin/bash) sont des fils de ces processus racines.
-
Le contenu du PCB inclut l’ID du processus (PID), celui du processus père (PPID), l’UID de l’utilisateur, le compteur ordinal (ligne d’instruction en cours), la liste des descripteurs de fichiers, la gestion des signaux, et l’espace d’adressage.
-
La visualisation des processus peut se faire via ps ou top. ps fournit un instantané, tandis que top offre une vue dynamique et continue.
-
Le contexte d’un processus comprend l’état des registres, le compteur d’instructions, la pile d’interruption, et d’autres données nécessaires pour reprendre l’exécution après une interruption ou un changement de tâche.
-
Le changement de contexte est une opération matérielle lourde, non interruptible, qui sauvegarde l’état d’un processus et charge celui d’un autre, évitant ainsi la surcharge de la commutation.
-
La gestion des signaux permet la communication asynchrone entre processus, notamment pour terminer ou suspendre un processus (kill, SIGKILL, SIGSTOP).
-
La commande kill peut être utilisée pour envoyer différents signaux, avec -9 pour une terminaison brutale, ou sans option pour un arrêt plus doux.
-
La commande jobs et fg permettent de gérer les processus en arrière-plan ou en premier plan dans une session shell.
-
La fork bomb est une attaque qui exploite la récursivité de fork() pour saturer le système, ce qui peut être limité par ulimit.
💡 À retenir
Les commandes Unix offrent un contrôle précis sur la gestion des processus, leur visualisation, leur terminaison, et la sécurisation des ressources, mais leur utilisation incorrecte ou malveillante (ex : fork bomb) peut compromettre la stabilité du système.
📖 10. Attaques et sécurité
🔑 Notions clés & Définitions
- Fork bomb : attaque par déni de service qui exploite la récursivité de la création de processus pour saturer le système, provoquant un freeze (voir "La fork bombe" dans le contenu).
- Ulimit : mécanisme de limitation des ressources système qu’un utilisateur peut consommer, permettant de prévenir les attaques par saturation (exemple : limite du nombre de processus ou de mémoire).
- Signaux Unix : mécanisme de communication inter-processus permettant d’envoyer des notifications ou de demander l’arrêt ou la suspension d’un processus (ex : SIGKILL, SIGSTOP).
- Changement de contexte : opération critique permettant de sauvegarder et restaurer l’état d’un processus pour la gestion de la multitâche, susceptible d’être exploité pour des attaques si mal contrôlé (voir "Changement de contexte").
- Processus zombie : processus terminé dont le père n’a pas encore récupéré l’information de terminaison via _exit, pouvant constituer une faille si non géré (voir "États d’un processus").
- Cascades d’interruption : phénomène où une interruption en entraîne une autre, pouvant être exploité pour provoquer des boucles ou déni de service, notamment lors du changement de contexte (voir "Changement de contexte" et "Masquage et désarmement").
📝 Points essentiels
- La fork bomb est une attaque par déni de service exploitant la récursivité de création de processus, rendant le système inutilisable (contenu : "La fork bombe").
- La limitation des ressources via ulimit permet aux administrateurs de réduire le risque d’attaques par saturation, en limitant par exemple le nombre de processus ou la mémoire allouée à un utilisateur.
- La gestion des signaux est essentielle pour la sécurité : ils permettent de contrôler, suspendre ou tuer des processus, mais peuvent aussi être détournés pour des attaques si mal protégés.
- Le changement de contexte est une opération lourde et critique, qui peut être ciblée pour des attaques si le système ne vérifie pas la cohérence de l’état sauvegardé et restauré.
- La gestion des processus zombies doit être assurée pour éviter la saturation du système, car ils occupent inutilement des ressources.
- La préemption et la gestion des états des processus sont fondamentales pour la réactivité et la sécurité du système, en évitant notamment les boucles d’interruption ou les cascades d’interruption exploitables.
💡 À retenir
Les attaques par saturation de processus ou par déni de service exploitent la gestion des processus et des ressources pour rendre un système inutilisable, mais une bonne maîtrise des mécanismes de limitation, de gestion des signaux et de changement de contexte permet de renforcer la sécurité.
📖 11. Gestion des processus
🔑 Notions clés & Définitions
- Processus : Ensemble d’octets en langage machine représentant l’état d’un programme en exécution, incluant le compteur ordinal, les instructions, et l’espace d’adressage (voir source).
- PCB (Process Control Block) : Structure noyau regroupant toutes les informations nécessaires à la gestion d’un processus, telles que l’ID (PID), le contenu des registres, le compteur ordinal, le pointeur de pile, la gestion des signaux, etc.
- Contexte d’un processus : Ensemble des données permettant de reprendre l’exécution d’un processus interrompu, stocké principalement dans le PCB, comprenant registres, compteur ordinal, pile d’interruption, etc. (voir source).
- Changement de contexte : Opération matérielle lourde et atomique permettant de sauvegarder l’état d’un processus et de charger celui d’un autre, nécessaire pour la multitâche (voir source).
- Signaux : Mécanisme de communication inter-processus permettant d’envoyer des notifications ou des commandes (ex : kill, SIGKILL).
- État d’un processus : Mode d’exécution ou de non-exécution, incluant prêt, en exécution, endormi, en swap, zombie, etc., gérés par un automate d’états (voir source).
📝 Points essentiels
- Les processus sont une abstraction modélisant l’exécution des programmes, avec un contenu chargé en RAM ou en swap, et leur gestion repose sur le PCB qui rassemble toutes leurs informations (ID, registres, espace d’adressage, gestion des signaux).
- La structuration arborescente des processus est caractérisée par le processus init (PID 1) comme père de tous, avec une hiérarchie souvent représentée par une arborescence. La création d’un processus se fait principalement via l’appel fork, seul le processus PID 0 étant créé manuellement.
- La visualisation des processus peut se faire via la commande
top, qui affiche en temps réel l’état des processus, ou ps pour des clichés instantanés.
- Le contexte d’un processus est une collection de données essentielles pour la reprise de l’exécution, notamment le compteur ordinal, les registres, la pile d’interruption, et l’espace d’adressage. La sauvegarde et la restauration de ce contexte sont cruciales lors du changement de processus.
- Le changement de contexte, une opération matérielle lourde et atomique, permet la multitâche en sauvegardant l’état du processus en cours et en chargeant celui du processus suivant, évitant ainsi la perte d’informations critiques.
- La gestion des états des processus inclut leur passage entre prêt, en exécution, endormi, en swap, ou zombie, avec des mécanismes de préemption pour optimiser la réactivité et la disponibilité des ressources.
- La commande
kill permet de terminer un processus via l’envoi de signaux, notamment SIGKILL pour une terminaison brutale. La gestion des signaux est essentielle pour la communication et le contrôle des processus.
- La commande
ulimit permet de limiter les ressources allouées aux processus, comme le nombre de processus ou la taille de la mémoire, pour éviter les attaques par déni de service (ex : fork bomb).
- La gestion des processus repose également sur des mécanismes de masquage et de désarmement des interruptions pour éviter les cascades d’interruptions et garantir la stabilité du système.
💡 À retenir
La gestion des processus repose sur une architecture hiérarchique, un contexte sauvegardé en PCB, et des opérations atomiques de changement de contexte, permettant une multitâche efficace et sécurisée dans un système Unix.
📊 Tableaux de Synthèse
| Critère | Processus Unix | PCB (Process Control Block) | Auteur / Référence |
|---|
| Définition | Entité représentant un programme en exécution | Structure noyau contenant toutes les infos d’un processus | Source : contenu source |
| Contenu principal | PID, contexte, état, fichiers ouverts, signaux | PID, registres, compteur ordinal, pile, espace d’adressage, signaux | Source : contenu source |
| Gestion du contexte | Sauvegarde et restauration pour multitâche | Stockage du contexte dans le PCB | Source : contenu source |
| Visualisation | top, ps, /proc | Accès via /proc/PID/, outils de monitoring | Source : contenu source |
| États principaux | En exécution, prêt, endormi, zombie, en swap | Prêt, en exécution, endormi, zombie, préempté | Source : contenu source |
| Opération clé | Changement de contexte (sauvegarde/charge) | Mise à jour du PCB lors de changement de contexte | Source : contenu source |
| Communication | Signaux (kill, etc.) | Signaux, pipes, FIFO | Source : contenu source |
⚠️ Pièges & Confusions Fréquentes
- Confondre contexte minimal et contexte complet : le premier est pour la reprise rapide, le second pour la cohérence lors de la restauration.
- Sous-estimer le coût du changement de contexte : opération lourde et coûteuse en ressources CPU.
- Confondre processus zombie et processus endormi : zombie est terminé mais non ramassé, endormi en attente d’un événement.
- Mauvaise interprétation des signaux : certains signaux (ex : SIGKILL) terminent brutalement, d’autres (ex : SIGSTOP) suspendent.
- Confusion entre processus parent et processus fils dans l’arborescence Unix.
- Ignorer l’impact des attaques comme fork bomb : saturation du système par cascade de processus.
- Mauvaise utilisation ou compréhension des commandes
top, ps, et /proc pour la visualisation.
- Confondre changement de contexte et interruption : le premier est contrôlé, le second peut être asynchrone.
- Oublier la gestion des états de processus dans la stratégie de planification.
- Négliger la sécurité dans la communication inter-processus : mécanismes contrôlés par le noyau.
✅ Checklist Examen
- Connaître la définition de processus selon UNIX et ses principales caractéristiques.
- Savoir ce qu’est un PCB, ses composants clés, et son rôle dans la gestion des processus.
- Expliquer la différence entre contexte minimal et contexte complet d’un processus.
- Décrire le mécanisme et l’impact du changement de contexte, en précisant son coût.
- Identifier les différentes étapes pour visualiser et gérer les processus avec
top, ps, et /proc.
- Connaître les états d’un processus (prêt, en exécution, zombie, etc.) et leur gestion.
- Comprendre le rôle des signaux dans la communication inter-processus et leur gestion.
- Maîtriser la structure arborescente des processus Unix, avec PID 0 et PID 1.
- Connaître la gestion des processus zombies et la procédure de récupération par le père.
- Savoir ce qu’est une fork bomb, ses risques, et comment la limiter avec
ulimit.
- Connaître la définition et la fonction du changement de contexte selon AUTEUR (date).
- Maîtriser les stratégies de masquage et de désarmement pour éviter les cascades d’interruptions.
Erstelle deine eigenen Lernzettel
Importiere deinen Kurs und die KI erstellt in 30 Sekunden Lernzettel, Quizze und Karteikarten.
Lernzettel-Generator