Samtidighedskontrol

Samtidighedskontrol er inden for datalogi den styring, der skal til for at sikre, at computerprogrammer virker korrekt når flere aktører i bred forstand skal bruge de samme ressourser. Mekanismerne til samtidighedskontrol stilles til rådighed af computerens styresystem.

En af de typer problemer som samtidihedskontrol kan løse er mistede opdateringer. Eksempelvis kan to brugere åbne samme tekstfil og rette i den på samme tid. Den, der gemmer ændringerne først vil få overskrevet sine ændringer.

Grundlæggende begreber

redigér

Et program, der er i gang, har mindst en proces. Kommunikation mellem processer sker via styresystemets mekanismer til interproceskommunikation. En proces har mindst en tråd, der er den aktive del i en proces. tråde i samme proces har adgang til de samme dele af computerens hukommelse. problematikkerne omkring samtidighedskontrol er de samme uanset om det drejer sig om programmer, processer eller tråde, der skal have adgang til fælles ressourcer. En kritisk sektion er en del at et program, hvor der kun må være en aktiv tråd ad gangen.

Eksempel

redigér

To tråde A og B i et program bruger samme variabel til en beregning. Uden samtidighedskontrol kan der ske følgende:

A                                  B               Kommentar
Læs X                                              A læser X. Værdien er eksempelvis 10
                                   Læs X           B læser samme værdi
Sæt Y = X + 10                                     A beregner den nye værdi til 20
                                   Sæt Y = X – 5   B beregner den nye værdi til 5
Sæt X = Y                                          A sætter X til 20
                                   Sæt X = Y       B sætter X til 5

Løsningen er, at gøre læsning og opdatering til en kritisk sektion. Med en kritisk sektion kan forløbet se ud som følger:

A                                  B               Kommentar
Læs X                                              A læser X. Værdien er eksempelvis 10
Sæt Y = X + 10                                     A beregner den nye værdi til 20
Sæt X = Y                                          A sætter X til 20
                                   Læs X           B læser X. Værdien er 20
                                   Sæt Y = X – 5   B beregner den nye værdi til 15
                                   Sæt X = Y       B sætter X til 15

Den kritiske sektion gør, at ingen beregninger går tabt. Resultatet er også det samme uanset om det er A eller B, der kommer i gang først.

Synkroniseringsprimitiver

redigér

Der bruges en del forskellige mekanismer til etablering af kritiske sektioner. De følgende er omtrent ordnet efter abstraktionsniveau.