Station MinuitPortail personnel de révision

IFT-2001 — Systèmes d’exploitationAutomne 2026

IFT-2001 / Automne 2026 / Concurrence

Entraînement — Concurrence

Exercices d’entraînement créés pour le portail. Aucun questionnaire officiel. Banque v1.

18 questions. Un point par réponse automatique correcte; aucun crédit partiel. Les autoévaluations sont comptées séparément.

Ouvrir le mini-test

Aucune tentative commencée.

1. Deux threads partagent une file en mémoire. Un tube ou le simple partage de cette file assure-t-il son exclusion mutuelle?

Compréhension · version 1

Hypothèses et règle de réponse
  • Modèle et API décrits par le maître S05; aucune VM, compilation ni manipulation personnelle attestée.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 1

Corrigé — question 1

Les threads disposent déjà de mémoire commune, mais leurs accès doivent préserver les invariants. Un canal de communication ne transforme pas automatiquement une séquence lire–modifier–écrire en opération atomique. Les processus peuvent également communiquer par mémoire partagée explicite ou tube.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 2.1 Processus et threads

2. Dans un modèle lecture–calcul–écriture, A et B incrémentent une fois un compteur initialement nul. A lit 0, B lit 0, A écrit 1, B écrit 1. Quel résultat et quel diagnostic?

Application · version 1

Hypothèses et règle de réponse
  • Chaque lecture et écriture du modèle est indivisible; chaque thread calcule ancienne valeur + 1.
  • Modèle pédagogique seulement; aucune borne du langage C pour des accès ordinaires en course.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 2

Corrigé — question 2

Les deux calculs utilisent la même ancienne valeur 0; la seconde écriture de 1 remplace la première. Le compteur vaut 1 dans cette trace. Une exécution sérielle du modèle donnerait 2. Ces résultats illustratifs ne bornent pas une data race C, dont le comportement peut être indéfini.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 2.2 Définition d’une condition de concurrenceRevoir la matière — 2.3 Exemple du spouleur d’impression

3. Un verrou empêche toute double entrée, mais peut laisser un demandeur attendre indéfiniment. Quelle conclusion est justifiée?

Compréhension · version 1

Hypothèses et règle de réponse
  • Modèle et API décrits par le maître S05; aucune VM, compilation ni manipulation personnelle attestée.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 3

Corrigé — question 3

Exclusion mutuelle, progression, attente bornée et indépendance temporelle sont des exigences distinctes. Un algorithme peut exclure les doubles entrées tout en affamant un participant. Désactiver les interruptions locales ne suspend pas les autres cœurs et ne fournit pas une primitive générale en espace utilisateur.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 3. Section critique et critères de correctionRevoir la matière — 3.1 Désactiver les interruptions

4. Le verrou est initialement 0. Chaque thread teste while(lock==1), puis écrit lock=1 avant sa section critique. Construis une trace qui viole l’exclusion et identifie la correction nécessaire.

Application · version 1

Hypothèses et règle de réponse
  • Modèle abstrait à lectures/écritures indivisibles, test séparé de l’affectation; deux participants.
  • Le raisonnement ne présente pas ce fragment comme une implantation C concurrente correcte.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 4

Corrigé — question 4

La trace test A → test B → prise B → entrée B → prise A → entrée A laisse deux participants en section critique. Chacun a correctement observé un ancien état libre; le problème est la séparation du test et de la prise. La réponse rédigée reste autoévaluée, sans score automatique de correction.

  • A lit 0 et franchit le test, puis est interrompu avant son affectation.
  • B lit 0, écrit 1 et entre sans encore sortir.
  • A reprend, écrit 1 et entre alors que B est encore en section critique.
  • Le test et la prise doivent former une primitive atomique, ou employer un protocole prouvé; volatile ou sleep ne ferme pas cette fenêtre.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 3.2 Verrou logiciel naïf

5. Peterson : critical[0]=critical[1]=1 et la dernière écriture de waiting vaut 1. Qui peut franchir sa boucle à cet instant?

Application · version 1

Hypothèses et règle de réponse
  • Deux participants seulement; lectures/écritures atomiques et cohérence séquentielle du modèle.
  • Boucle exacte : waiting == p && critical[1-p] == 1; aucun participant ne retire encore son indicateur.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 5

Corrigé — question 5

Pour p=0, waiting==0 est faux, donc P0 franchit la boucle. Pour p=1, les deux termes sont vrais et P1 attend. Lorsque P0 sort et met critical[0]=0, P1 peut avancer. Ce modèle n’autorise pas une transcription C avec des objets ordinaires en course; atomiques et ordre mémoire doivent être corrects.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 4.1 Solution de Peterson

6. Un détenteur conserve un verrou pendant une E/S longue. Un demandeur boucle sur test-and-set. Quelle comparaison de l’attente est correcte?

Application · version 1

Hypothèses et règle de réponse
  • Modèle et API décrits par le maître S05; aucune VM, compilation ni manipulation personnelle attestée.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 6

Corrigé — question 6

Attente active et état bloqué diffèrent. Un mutex peut combiner une courte phase de spin et le blocage selon son implantation. Une E/S longue rend la rotation coûteuse; si le détenteur ne peut pas être ordonnancé, tourner ne l’aide pas à libérer. Le choix dépend des durées, cœurs et politiques réels.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 4.3 Coût d’un verrou tournantRevoir la matière — 7.3 Mutex adaptatif et priorité

7. Test-and-set ferme le test/prise séparé. Garantit-il aussi l’équité et résout-il l’inversion où H de haute priorité empêche L, détenteur, de reprendre sur un seul cœur?

Application · version 1

Hypothèses et règle de réponse
  • Modèle à priorités strictes : H reste exécutable et tourne; L a besoin du même cœur pour libérer.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 7

Corrigé — question 7

Test-and-set protège la prise du verrou mais ne donne pas une politique d’admission équitable. Sous les hypothèses de priorité annoncées, H peut priver L de CPU et prolonger son propre retard. Un protocole d’héritage peut élever L; cette garantie doit être fournie par la primitive et sa configuration, pas supposée.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 4.2 Test-and-set et échange atomiqueRevoir la matière — 4.4 Inversion de priorité

8. Le consommateur constate count=0 mais ne dort pas encore. Le producteur ajoute un élément et appelle wakeup. Déroule le réveil perdu et explique deux mécanismes qui ferment cette fenêtre.

Application · version 1

Hypothèses et règle de réponse
  • sleep/wakeup naïfs : un wakeup sans dormeur n’est pas mémorisé.
  • Aucune autre production ni réveil ultérieur dans la trace; modèles sans erreur ni annulation.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 8

Corrigé — question 8

La faute est la fenêtre entre test et sommeil. Un sémaphore garde la permission si le post précède le wait. Une condition s’appuie sur un prédicat persistant sous mutex et une libération/blocage atomique; son signal isolé ne garde pas de jeton. Les deux solutions ne rendent pas les garanties des primitives identiques.

  • C constate 0 puis est interrompu avant sleep; P produit, count devient 1, et le réveil sans dormeur est perdu.
  • C reprend et dort malgré un élément présent; aucun délai fixe ne garantit la correction.
  • Un sémaphore full initialisé à 0 mémorise le post; le wait ultérieur consomme la permission.
  • Une condition avec prédicat protégé par le même mutex utilise wait atomique et reteste dans while; la condition seule ne mémorise pas les signaux.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 5.2 Pourquoi `sleep`/`wakeup` ne suffit pas

9. Quelle différence entre sémaphore de comptage, usage binaire et mutex est correcte?

Compréhension · version 1

Hypothèses et règle de réponse
  • Modèle et API décrits par le maître S05; aucune VM, compilation ni manipulation personnelle attestée.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 9

Corrigé — question 9

Un sémaphore n’attribue pas la propriété d’un mutex : un autre thread peut effectuer post. POSIX sem_t reste un compteur; initialiser à 1 ne le borne pas magiquement à 1. L’usage binaire dépend du protocole qui évite les post excédentaires. Un mutex acquis doit être libéré par son propriétaire selon son contrat.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 6.2 Comptage, binaire et ordreRevoir la matière — 6.1 ModèleRevoir la matière — 7. Mutex Pthreads

10. C revient avec succès de pthread_cond_wait(&cv,&m). Peut-il utiliser l’élément sans retester le prédicat?

Application · version 1

Hypothèses et règle de réponse
  • Modèle et API décrits par le maître S05; aucune VM, compilation ni manipulation personnelle attestée.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 10

Corrigé — question 10

Wait libère atomiquement le mutex et attend, puis le réacquiert avant de retourner. Le retour n’affirme pas la vérité du prédicat. Un signal ne réserve pas la ressource et n’est pas mémorisé sans attenteur. Le prédicat se lit et se modifie sous le même mutex; la boucle le vérifie à nouveau.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 8. Variables de condition

11. Trois travailleurs écrivent chacun leur case A[i], atteignent une barrière de compte 3, puis lisent toutes les cases. Que garantit le rendez-vous?

Application · version 1

Hypothèses et règle de réponse
  • Même génération de barrière; chaque travailleur arrive exactement une fois; API réussie, cases distinctes pendant A.
  • Aucune écriture suivante non synchronisée sur ces cases pendant leur lecture.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 11

Corrigé — question 11

La barrière attend les trois arrivées et sépare les phases avec synchronisation mémoire. PTHREAD_BARRIER_SERIAL_THREAD est retourné à un participant non spécifié; les autres reçoivent zéro. Elle ne sérialise pas les opérations de la phase B. Un mauvais compte ou un participant absent peut empêcher le rendez-vous.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 9. Barrières

12. Choisis et justifie les mécanismes pour quatre besoins : trois connexions disponibles, invariant possédé par le thread, attente file non vide et fin collective d’une phase.

Application · version 1

Hypothèses et règle de réponse
  • Modèle et API décrits par le maître S05; aucune VM, compilation ni manipulation personnelle attestée.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 12

Corrigé — question 12

Le choix part de la garantie : stock de permissions, exclusion avec propriétaire, prédicat partagé ou rendez-vous collectif. Attente active et blocage sont des stratégies d’attente; une courte rotation peut exister sous un mutex. Une primitive ne prouve pas à elle seule l’équité ni la terminaison du programme. Réponse autoévaluée.

  • Sémaphore de comptage initialisé à 3, avec une permission rendue pour chaque acquisition, représente les connexions.
  • Mutex pour la région qui préserve un invariant et respecte la propriété acquisition/libération.
  • Variable de condition + même mutex + prédicat !file_vide testé dans while; le signal n’est pas un jeton.
  • Barrière de compte exact pour la frontière collective; elle n’assure ni exclusion de phase ni équité FIFO universelle.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 11. Choisir le bon mécanismeRevoir la matière — 6.2 Comptage, binaire et ordreRevoir la matière — 7. Mutex PthreadsRevoir la matière — 8. Variables de conditionRevoir la matière — 9. Barrières

13. Après compilation d’un appel système pédagogique, le test indique « appel inexistant ». Quelle vérification est prioritaire?

Application · version 1

Hypothèses et règle de réponse
  • Modèle et API décrits par le maître S05; aucune VM, compilation ni manipulation personnelle attestée.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 13

Corrigé — question 13

La chaîne doit rester cohérente : table et numéro de l’ABI, prototype/implantation, objet lié, paquets installés, noyau personnalisé démarré puis test syscall. uname -r identifie le noyau actif. Les commandes sont liées à la VM/version historique; le noyau générique reste une possibilité de retour. Aucune manipulation personnelle n’est certifiée.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 10.2 Enregistrer l’appelRevoir la matière — 10.1 Préparer l’environnementRevoir la matière — 10.3 Ajouter le code et construireRevoir la matière — 10.4 Tester et revenir en arrière

14. Tampon vide : C prend mutex puis attend full=0 sans libérer mutex. P doit prendre ce même mutex avant d’insérer. Quel diagnostic et quel ordre correct?

Application · version 1

Hypothèses et règle de réponse
  • Modèle des sémaphores sans erreur : full=0, empty=N>0, mutex=1; un producteur et un consommateur, aucun autre post.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 14

Corrigé — question 14

C conserve la structure verrouillée pendant qu’il attend l’élément que P ne peut pas insérer : les deux attendent. Le bon ordre est permission de ressource puis mutex; après modification, libérer mutex et poster la ressource opposée. Pour N=2 : empty=2, full=0, mutex=1 initialement. À repos après une insertion : empty=1, full=1, mutex=1; après retrait : 2/0/1.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 6.3 Producteur-consommateur corrigé

15. Quelle proposition respecte les contrats POSIX de cycle de vie et d’erreurs?

Compréhension · version 1

Hypothèses et règle de réponse
  • Modèle et API décrits par le maître S05; aucune VM, compilation ni manipulation personnelle attestée.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 15

Corrigé — question 15

Un appel échoué ne se traite pas uniformément : sem_wait peut être interrompu avec EINTR; pthread_mutex_lock robuste peut acquérir en signalant EOWNERDEAD, puis l’état doit être réparé et déclaré cohérent. Réinitialiser un sémaphore actif ou détruire une primitive encore utilisée n’est pas un nettoyage valide. Lire sem_getvalue n’assure pas une acquisition.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 6.4 API POSIX des sémaphoresRevoir la matière — 7.1 Cycle de vieRevoir la matière — 7.2 Types de mutex

16. Des milliers d’essais du compteur C ordinaire restent dans la borne du cours. Peut-on en faire une garantie après pthread_join?

Compréhension · version 1

Hypothèses et règle de réponse
  • Accès concurrents incompatibles non atomiques, sans synchronisation entre les mises à jour; jointures après créations.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 16

Corrigé — question 16

Une observation ne prouve pas un invariant. La borne pédagogique n’est pas un contrat du langage C en présence de data race. Les jointures attendent les terminaisons mais n’excluent pas les accès concurrents qui les précèdent. Il faut une synchronisation des mises à jour ou des atomiques adaptées.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 2.2 Définition d’une condition de concurrence

17. s vaut 0. P exécute S1 puis post(s), avant que C n’exécute wait(s) puis S2. Quelle garantie subsiste?

Application · version 1

Hypothèses et règle de réponse
  • Un seul post et un seul wait réussis, aucun autre accès à s, pas d’annulation ni débordement.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 17

Corrigé — question 17

Post laisse une permission lorsque personne n’attend. Le wait ultérieur peut la consommer, sans perdre l’événement; si C arrivait plus tôt il attendrait ce post. C’est un ordre entre événements, pas une exclusion générale de toutes les opérations. Une condition signalée seule ne mémoriserait pas cette permission.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 6.2 Comptage, binaire et ordre

18. C1 attend non-vide. P insère et signale sous mutex, puis libère. C2 obtient le mutex avant C1 et retire l’unique élément. C1 réacquiert ensuite. Que doit faire C1?

Application · version 1

Hypothèses et règle de réponse
  • Même mutex protège toutes les lectures/modifications du prédicat; ordonnancement décrit possible, aucune FIFO annoncée.

Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Votre réponse — question 18

Corrigé — question 18

Signal rend un attenteur éligible mais ne garantit pas qu’il réacquerra avant un autre consommateur. Après C2, count vaut 0; C1 reteste sous mutex et wait libère atomiquement ce mutex pour attendre. if sauterait ce retest et pourrait retirer d’une file vide. La sûreté n’implique pas une attente bornée sans hypothèses de progression.

Variantes : Les hypothèses fixent le modèle. Les traces sont possibles, sans FIFO ou vitesse supposée. Une reformulation équivalente est admise dans la rubrique des réponses rédigées, qui restent autoévaluées. Les modèles ne bornent pas une data race C.

Revoir la matière — 8. Variables de condition
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.