Multicore en synchronisatie

Welke uitleg over sequentiële consistentie (sequential consistency) is juist?

  1. ADe bewerkingen van elke core worden telkens in willekeurige volgorde uitgevoerd
  2. BDe bewerkingen van alle cores worden in één enkele volgorde gezet, waarbij de bewerkingen van elke core in de in het programma geschreven volgorde lijken te verschijnen
  3. CAlle bewerkingen worden door slechts één core uitgevoerd
Antwoord en toelichting tonen

Antwoord: B. De bewerkingen van alle cores worden in één enkele volgorde gezet, waarbij de bewerkingen van elke core in de in het programma geschreven volgorde lijken te verschijnen

Bij sequentiële consistentie worden de bewerkingen van meerdere cores als bij het schudden van speelkaarten op één rij gezet, waarbij de bewerkingen van elke core daarin de programmavolgorde behouden. Het is het voor programmeurs meest begrijpelijke model, maar het beperkt optimalisaties waarbij hardware de volgorde wijzigt, zoals met store buffers, sterk, dus veel echte CPU's gebruiken een losser model.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Multicore en synchronisatie

  1. De bovenstaande twee threads worden tegelijk op verschillende cores uitgevoerd (er is geen herordening door de compiler). Welke uitkomst treedt niet op bij sequentiële consistentie, maar kan wel optreden bij echte CPU's zoals x86?
  2. Welke eigenschap van het geheugenconsistentiemodel van x86 (TSO, Total Store Order) is juist?
  3. Wat is juist over zwakke geheugenconsistentiemodellen zoals die van ARM en RISC-V (RVWMO)?
  4. Wat is de juiste rol van een geheugenbarrière-instructie (fence)?
  5. In bovenstaande code bereidt thread 1 data voor en meldt dat met flag, en leest thread 2 data nadat hij flag heeft gezien. Wat is nodig om op een CPU met zwak geheugenconsistentiemodel zeker te zijn dat thread 2 de waarde 42 leest?

Vergelijkingen bij dit onderwerp