Multicore en synchronisatie

Wanneer mislukt bij een instructiepaar zoals LR/SC (load-reserved/store-conditional) van RISC-V de SC (store-conditional)?

  1. AWanneer de met SC te schrijven waarde gelijk is aan de met LR gelezen waarde
  2. BWanneer tussen LR en SC de reservering verloren is gegaan, bijvoorbeeld doordat een andere core naar dat adres heeft geschreven
  3. CWanneer tussen LR en SC ook maar één andere instructie is uitgevoerd
Antwoord en toelichting tonen

Antwoord: B. Wanneer tussen LR en SC de reservering verloren is gegaan, bijvoorbeeld doordat een andere core naar dat adres heeft geschreven

LR 'reserveert' dat adres terwijl het de waarde leest. Bij het latere schrijven met SC lukt het als de reservering behouden is, en bij verlies van de reservering, bijvoorbeeld door een schrijfactie van een andere core, wordt niet geschreven en een mislukking gemeld. Waar CAS de gelijkheid van waarden controleert, controleert LR/SC of er is geschreven, zodat ook gevallen worden gedetecteerd waarin de waarde is veranderd en teruggekeerd. ARM heeft een vergelijkbaar instructiepaar.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Multicore en synchronisatie

  1. Welke uitleg over het ABA-probleem, dat bij lock-free datastructuren met CAS aandacht vraagt, is juist?
  2. Welke beschrijving van de werking van een fetch-and-add-instructie, zoals amoadd.w van RISC-V of lock xadd van x86, is juist?
  3. Welke uitleg over een spinlock is juist?
  4. In welke situatie is een spinlock het minst geschikt?
  5. Waarom wordt bij een spinlock niet meteen met een atomaire instructie de lockvariabele proberen te wijzigen, maar wordt normaal met gewoon lezen gewacht tot de lock vrij lijkt en dan pas een atomaire instructie gebruikt (test-and-test-and-set)?

Vergelijkingen bij dit onderwerp