Konsumenter og produsenter

Fra IT2
Hopp til: navigasjon, søk

Konsumenter og produsenter er noe du ikke kommer utenom i et datamskinsystem. Så hva er en produsent og en konsument i datasammenheng?

Produsent:En prosess som produserer data og lagrer det i et buffer område Konsument:En prosess som henter data ut av bufferområdet.

Hvor produsenter og konsumenter oprerer på samme bufferområde trengs det mekanismer for gjensidig utelukkelse og synkronisering. Vi bruker disse mekanismene for å unngå race conditions.

Gjensidig utelukkelse: OS må inn å kontrollere gjennom gjensidige utelukkelse, når flere konusmenter og produsenter vil inn på samme felles datområde må dette kontrolleres slik at bare en prossess får tilgang om gangen.

Synkronisering: Hvis et buffer er fullt kan ikke produsenten legge til mer data, eller hvis bufferet er tomt kan ikke konsumenten hente ut data. Med synkronisering vil si at man synkorniserer de forskjellige prossessene, ved å legge inn hendelses bestemte programkoder. F.eks Produsenten A står å venter på signal, når konsumenten er ferdig sender den signalet.

Gjensidig utelukkelse og Synkronisering foregår ved hjelp av variabelen semafor, som kan ha mange navn. Det er en binær variabel, og har derfor kun verdiene 0 og 1. Den finnes også en tellende semafor, som kan gi virkårlige heltall. Denne variabelen besttemmer om prossesser skal fortsette kjøre, fortsette å kjøre, eller settes i cpu kø.