CMD + K

Kapittel 10Begreper & formler · Semaforer, klassiske synkroniseringsproblemer og deadlock
Referanseside · Kapittel 10

Begreper & formler

Alle nøkkelbegrepene og formlene fra Semaforer, klassiske synkroniseringsproblemer og deadlock, samlet på én side. Bruk denne som oppslag når du leser, øver flashcards eller tar quiz.

Øv med flashcards20 kort fra dette kapittelet

Begreper

Sentrale begreper fra kapittelet med korte definisjoner.

01Semafor

Tellerbasert synkroniseringsobjekt som kan brukes både som lås og som signalmekanisme.

02P / wait

Operasjon som reduserer semaforen når den er positiv, ellers blokkerer.

03V / signal

Operasjon som øker semaforen og kan vekke ventende tråder.

04Bounded buffer

Klassisk producer-consumer-problem der produsenter og konsumenter må koordineres mot en begrenset kø.

05Readers-writers

Problem der mange lesere kan tillates samtidig, men skrivere krever eksklusiv tilgang.

06Dining philosophers

Klassisk problem som illustrerer hvordan lokal ressursallokering kan gi deadlock.

07Deadlock

Situasjon der en gruppe tråder/prosesser venter sirkulært på ressurser og ingen kommer videre.

08Starvation

At en tråd eller prosess nektes fremdrift over svært lang tid, uten nødvendigvis å være i deadlock.

09empty-semafor

Teller ledige plasser i en bounded buffer. Initialiseres til buffer-størrelsen N. Producer venter på empty (sem_wait) før den legger inn et element.

10full-semafor

Teller okkuperte plasser. Initialiseres til 0. Consumer venter på full før den henter ut et element. Producer poster på full etter innsetting.

11mutex-semafor (binær)

Initialiseres til 1. Brukes for mutual exclusion på selve buffer-strukturen — sikrer at kun én tråd modifiserer den om gangen. Plasseres innerst rundt buffer-operasjonen.

12Producer-consumer mønster

Tre-semafors løsning: (1) sem_wait(empty)/(full), (2) sem_wait(mutex), (3) operasjon på buffer, (4) sem_post(mutex), (5) sem_post(full)/(empty). Rekkefølgen er kritisk — bytter du wait(mutex) og wait(empty) får du deadlock.

13Ticket dispenser-problemet

Variant av producer-consumer: kunde-tråd er producer (legger seg i kø), bank-staff er consumer. Bruker fire semaforer (empty, full, mutex, service) der service signaliserer at en kunde er klar til å bli betjent.

14Deadlock fra feil låserekkefølge

Klassisk fallgruve i producer-consumer: hvis sem_wait(mutex) kommer FØR sem_wait(empty) og bufferen er full, holder produsenten mutex mens den venter på empty — consumer kan ikke ta mutex for å hente element → låst.

Formler

Hver formel: hva den heter, hvordan den ser ut, og hva symbolene betyr.

p-formel

Semaforens vent-operasjon

Logg inn for forklaring

Ressurs tas bare hvis telleren er positiv, ellers må tråden vente.

ssemaforens nåværende verdi
v-formel

Semaforens signal-operasjon

Logg inn for forklaring

Frigjør en ressurs og lar eventuelt en blokkert tråd fortsette.

coffman

Coffman-betingelsene for deadlock

Logg inn for forklaring

Alle fire må være til stede samtidig for at deadlock skal være mulig.

producer-mal

Producer-mal (semaforer)

Logg inn for forklaring

HUSKEREGEL: vent på ressurs FØR mutex, slipp mutex FØR du signaliserer motpart. Rekkefølgen `wait(empty) → wait(mutex)` er kritisk for å unngå deadlock.

consumer-mal

Consumer-mal (semaforer)

Logg inn for forklaring

Speilbilde av producer. Consumer venter på full først, så på mutex, henter element, slipper mutex, og signaliserer at en plass er ledig.

init-buffer

Initialisering for buffer av størrelse N

Logg inn for forklaring

empty=N (alle plasser ledige), full=0 (ingen elementer), mutex=1 (binær lås). Disse verdiene er testet direkte på eksamen.

Nbuffer-størrelsen

Læringsmål

Hva du skal kunne etter å ha lest kapittelet.

  1. 01Definere P- og V-operasjonene og forklare hvordan en semafor kan brukes både som lås og som signal
  2. 02Implementere producer-consumer med tre semaforer og begrunne hvorfor sem_wait(empty) må komme før sem_wait(mutex)
  3. 03Forklare readers-writers og hvordan starvation av skrivere kan oppstå og forebygges
  4. 04Identifisere Coffmans fire betingelser i et konkret deadlock-scenario og foreslå hvilken som er enklest å bryte