đŸ–„ïž Gestion des processus et des ressources

Question centrale : Comment un processeur peut-il exĂ©cuter simultanĂ©ment les instructions de plusieurs programmes alors qu'il dispose d'un nombre limitĂ© de cƓurs ?

Réponse : Grùce aux systÚmes d'exploitation multitùches et leur mécanisme d'ordonnancement.

1. Le systĂšme d'exploitation (SE)

Définition : Ensemble des programmes qui pilotent les composants de l'ordinateur (disque dur, écran, processeur, mémoire) et servent d'interface entre les applications et le matériel.

Composants du noyau (kernel) :

📋 Ordonnanceur

Décide quel programme s'exécute à un instant donné

đŸ’Ÿ Gestionnaire mĂ©moire

Répartit la RAM entre les programmes

📁 Systùme de fichiers

Définit le stockage sur les supports physiques

🌐 Pile rĂ©seau

Implémente les protocoles (TCP/IP...)

2. Les processus

Processus : Programme en cours d'exécution, identifié par un numéro unique (PID). Il possÚde son propre compteur ordinal, ses registres et ses variables.

Un processus comprend :

États d'un processus :

Nouveau CrĂ©ation PrĂȘt En attente CPU En exĂ©cution Sur le CPU En attente Attend E/S TerminĂ© LibĂ©ration Admission Ordonnanceur Interruption Attente E/S E/S terminĂ©e Fin du processus
État Description
Nouveau En cours de création
PrĂȘt Peut ĂȘtre exĂ©cutĂ©, attend son tour dans la file
En exécution En train de s'exécuter sur le processeur
En attente Interrompu, attend un événement externe (E/S, mémoire...)
Terminé Terminé, libération des ressources en cours

3. Mécanismes clés

🔄 Interruption

Mécanisme permettant de stopper l'exécution d'un programme pour exécuter une tùche plus prioritaire. Les interruptions d'horloge se déclenchent à intervalles réguliers (ex: toutes les 100ns) et permettent l'exécution concurrente.

⚙ Commutation de contexte

L'ordonnanceur interrompt un processus et sauvegarde son état (contexte) dans le PCB (Process Control Block), puis restaure le contexte d'un autre processus.

Étapes :

  1. Un processus P1 est en cours d'exécution
  2. Interruption d'horloge
  3. Le gestionnaire sauvegarde le contexte de P1
  4. L'ordonnanceur choisit un autre processus Pn
  5. Restauration du contexte de Pn
  6. Pn s'exécute

4. Algorithmes d'ordonnancement

🔄 Tourniquet (Round Robin)

Chaque processus reçoit le CPU à tour de rÎle pendant un quantum de temps fixe

⭐ Avec priorités

L'ordre dépend de la priorité de chaque processus

⚡ Plus court d'abord

Exécute d'abord les processus les plus courts

đŸ“„ FIFO

Premier arrivé, premier servi (ex: file d'impression)

5. Programmation concurrente

Exécution concurrente : Deux processus s'exécutent de maniÚre concurrente si leurs intervalles de temps d'exécution ont une partie commune.

ExĂ©cution parallĂšle : Deux processus s'exĂ©cutent au mĂȘme instant (nĂ©cessite plusieurs processeurs).

🔒 Exclusion mutuelle (Mutex)

ProblÚme : Plusieurs processus accédant à une ressource partagée (fichier, variable) peuvent causer des incohérences.

Solution : Utiliser un verrou pour rendre l'accÚs exclusif. Un processus doit acquérir le verrou avant d'accéder à la ressource, puis le libérer aprÚs utilisation.

Illustration : AccÚs concurrent à un compteur partagé

❌ SANS exclusion mutuelle (Problùme)

Compteur 42 (partagĂ©) Processus P0 v = compteur v = 42 ⚠ Interrompu ! (n'a pas encore Ă©crit v+1) Processus P1 v = compteur v = 42 compteur = v+1 ✓ Écrit 43 Processus P2 v = compteur v = 43 compteur = v+1 ✓ Écrit 44 P0 reprend v = 42 (sauvegardĂ©) compteur = v+1 ✗ Écrit 43 ❌ Perte! (devrait ĂȘtre 45) Temps →
❌ RĂ©sultat : Compteur = 43 au lieu de 45 → Race condition !

✅ AVEC exclusion mutuelle (Solution)

✓ RĂ©sultat correct: 46 🔒 VERROU Compteur 46 Section critique protĂ©gĂ©e P0 ✓ Acquiert 42 → 43 ✓ LibĂšre P1 ⏞ Attend 43 → 44 ✓ LibĂšre P2 ⏞ Attend 44 → 45 ✓ LibĂšre P3 ⏞ Attend 45 → 46 ✓ LibĂšre
✅ Principe : Un seul processus Ă  la fois accĂšde Ă  la section critique. Les autres attendent que le verrou soit libĂ©rĂ©.

Code avec verrou (pseudocode)

verrou.acquérir()    // Début section critique
v ← compteur
compteur ← v + 1
verrou.libérer()     // Fin section critique
            

⚠ Interblocage (Deadlock)

Situation oĂč des processus concurrents s'attendent mutuellement, bloquant toute progression.

Illustration classique : l'interblocage Ă  l'intersection

V1 V2 V3 V4 Attente circulaire = INTERBLOCAGE

Exemple avec processus et ressources

P1 P2 P3 P4 R1 R2 a obtenu a obtenu demande demande Graphe d'allocation de ressources Cycle dĂ©tectĂ© : P1→R2→P4→R1→P1 = INTERBLOCAGE Processus Ressource

Les 4 conditions de Coffman (nécessaires à l'interblocage) :

  1. Exclusion mutuelle : Au moins une ressource en accĂšs exclusif
  2. Rétention et attente : Un processus détient une ressource et attend une autre
  3. Non-prĂ©emption : Une ressource ne peut ĂȘtre retirĂ©e de force
  4. Attente circulaire : P1 attend P2, P2 attend P3... Pn attend P1
⚡ Approche des SE modernes : Ne pas essayer d'Ă©viter les interblocages, mais les dĂ©tecter et les rĂ©soudre quand ils surviennent.

6. Points clés à retenir

💡 L'essentiel : Les systĂšmes d'exploitation orchestrent l'exĂ©cution de multiples processus sur des ressources limitĂ©es, garantissant performance et cohĂ©rence grĂące Ă  l'ordonnancement et la gestion des ressources partagĂ©es.