Station MinuitPortail personnel de révision

IFT-2001 — Systèmes d’exploitationAutomne 2026

Semaine 6 — Synchronisation et ordonnancement

7. Distinctions à préserver dans les raisonnements

LECTURE 09 / 111 repèreSynthèse avec omissions acceptées

7. Distinctions à préserver dans les raisonnements

Tableau 1 — Confusion · Ce qu’il faut expliquer
Confusion Ce qu’il faut expliquer
Réveillé = immédiatement exécuté Le réveil rend prêt; l’ordonnanceur choisit ensuite
CPU attribué = accès autorisé Un thread exécuté doit encore respecter mutex, sémaphore ou prédicat
Mutex = préemption interdite Le propriétaire peut être préempté; les autres ne peuvent pas franchir le verrou détenu
Sémaphore = toujours section critique Un compteur limite des ressources; un sémaphore 0 permet aussi une notification croisée mémorisée
Condition = booléen ou jeton Les données portent le prédicat durable; un signal sans attenteur n’est pas stocké
Signal = mutex transmis L’attenteur doit être ordonnancé, reprendre le mutex et retester
Barrière = mutex La barrière impose une fin collective de phase, sans rendre tous les accès exclusifs
Join ou sleep protège glob Join attend une fin; sleep la retarde. Aucun ne rend une mise à jour partagée atomique
Yield garantit un ordre Il cède selon un modèle; il ne remplace pas une synchronisation pour une permutation
Fork partage les globales ordinaires Les processus ont leurs copies; les threads partagent les données du processus
Temps de fin = durée CPU T=F−A, W=T−B dans les exemples; réponse initiale et attente cumulée diffèrent
SJF interrompt à une arrivée courte La version étudiée est non préemptive; SRT compare le reste et peut interrompre
FIFO interdit toute préemption FCFS du premier modèle est non préemptif; FIFO temps réel est préemptable par une priorité supérieure
CFS égalise tous les utilisateurs L’équité par tâche et celle par groupes configurés sont distinctes

La qualité d’un raisonnement vient des invariants : autorisations de place/donnée, propriété du mutex, état partagé testé sous le même verrou, nombre d’arrivées à la barrière, quantité CPU reçue et dépendances entre effets. Une sortie observée ne démontre pas que tous les entrelacements respecteront ces invariants.

Les sources sont parfois du code pédagogique ancien : en-têtes manquants pour fork/wait, identifiants th1/th2 non déclarés, nom question6.c différent de l’énoncé, pthread_yield, exit(NULL) et coquilles des slides. Conserver l’original pour sa provenance, adapter une copie si une compilation est demandée et distinguer une propriété du modèle d’une garantie du langage. Le maître explique ces divergences sans déclarer avoir réalisé une compilation ni une validation sur la VM.

Retour au sommaire de l’unitéHaut de page
Récupérer manuellement les données locales

Copier séparément les données ci-dessous dans des fichiers texte avant de fermer la page ou de modifier le stockage. Une valeur illisible ou incompatible reste en place. Aucun effacement ni rétablissement écrasant n’est effectué automatiquement. L’export/import JSON est disponible sur la page Progression du cours. Cette récupération séparée reste utile pour une valeur brute ou un conflit.

Clé de ce cours : . Format v1 porté par cette clé; dates UTC et identifiants durables.

Si l’accès est refusé, la valeur persistée peut rester inaccessible. Réautoriser le stockage dans le navigateur puis rouvrir ce cours permet de la relire. Une réinitialisation exige une décision explicite après récupération; aucune commande de suppression n’est proposée ici. Les données restent sur cette origine et cet appareil, sans transfert automatique.