Nicht angemeldet. · Kennwort vergessen · Registrieren

cimnei
Mitglied seit 10/2010
21 Beiträge
Betreff: Juli 2009 Aufgabe 1b)
Hab da mal ne Frage zu folgender Aufgabe:

Ein Hauptprogramm und eine Interruptbehandlung greifen nebenläufig
auf die Variable uint16_t foo zu. Das Hauptprogramm verwendet foo
in der Anweisung uint16_t bar = foo; der Interrupthandler verwendet
foo im Vergleich if(foo == 5). Welches Nebenläufigkeitsproblem kann
auftreten?
Lost-Update
Lost-Wakeup
❏ keines (?)
❏ Das Hauptprogramm könnte einen inkonsistenten Wert lesen, da foo aus 2 Bytes
besteht und nicht mit einer Instruktion geladen werden kann.


Antwort 1 und 2 hätte ich ausgeschlossen. Ich hätte auf Antwort 3 getippt, da foo ja nicht verändert wird in der ISR (und auch nicht im Hauptprogramm). Deshalb müsste es doch eigentlich egal sein, ob es als 16-Bit Variable nicht in einer Instruktion gelesen werden kann (im Gegensatz z.B. zur Read-Write-Anomalie), oder liege ich da falsch?
sicherha
Informatik-Veteran
Mitglied seit 10/2010
53 Beiträge
Du liegst richtig. :-)

Merkregel: Solange niemand in gemeinsam genutzten Daten rumschreibt, können keine Probleme auftreten.
Dieser Beitrag wurde am 04.08.2011, 18:14 von sicherha verändert.
Schließen Kleiner – Größer + Auf diesen Beitrag antworten:
Prüfcode: VeriCode Gib bitte das Wort aus dem Bild ins folgende Textfeld ein. (Nur die Buchstaben eingeben, Kleinschreibung ist in Ordnung.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O :troll:
Weitere Zeichen:
Gehe zu Forum
Powered by the Unclassified NewsBoard software, 20110527-dev, © 2003-8 by Yves Goergen