Deadlocks og mer om concurrencymekanismer Lars Vidar Magnusson September 30, 2011 Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 1 / 17
Oversikt Deadlocks 1 Deadlocks Illustrasjon 2 Reusable resurser 3 Consumable resources 4 Dining philosophers problemet 5 UNIX concurrency mekanismer Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 2 / 17
Deadlocks Begrepet deadlock brukes til å beskrive situasjoner hvor vi har et sett med prosesser som enten konkurrerer med hverandre om resurser eller som kommuniserer med hverandre. Det finnes ingen effektive løsninger for alle deadlock situasjoner. Kan ofte være vanskelige å oppdage, da de kan avhenge av tilfeldigheter. Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 3 / 17
Illustrasjon Deadlocks Illustrasjon En illustrasjon som visualiserer hvordan en deadlock kan oppstå. Til venstre har vi en situasjon hvor en deadlock er mulig. Til høyre så er deadlocken satt. Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 4 / 17
Oversikt Reusable resurser 1 Deadlocks 2 Reusable resurser Illustrasjon 3 Consumable resources 4 Dining philosophers problemet 5 UNIX concurrency mekanismer Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 5 / 17
Reusable resurser Reusable resurser bruker som betegnelse på resurser som ikke blir tømt (slettet) ved bruk. Kan bare brukes av en prosess om gangen. Slippes etter bruk Deadlock oppstår når prosessene holder på en resurs mens de ber om en annen. Eksempler på gjenbrukbare resurser Prosessoren I/O kanaler Minne Datastrukturer e.g filer og databaser Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 6 / 17
Illustrasjon Reusable resurser Illustrasjon Først ser vi på et generelt tilfelle med to prosesser og to resurser. Det neste tilfellet oppstår hvis vi har tilsammen 200 Kb minne tilgjengelig, og de to prosessene prøver å allokere for andre gang. Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 7 / 17
Oversikt Consumable resources 1 Deadlocks 2 Reusable resurser 3 Consumable resources Illustrasjon 4 Dining philosophers problemet 5 UNIX concurrency mekanismer Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 8 / 17
Consumable resources I motsetning til reusable resurser så blir consumable resurser brukt opp (fjernet/slettet/ødelagt) etter bruk. En deadlock kan oppstå når et mottak blokkerer. Det trengs ofte tilfeldige/sjeldne hendelser for å forårsake en deadlock. Eksempler på oppbrukbare resurser Interrupts Signals Meldinger Informasjon i I/O buffere Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 9 / 17
Illustrasjon Consumable resources Illustrasjon Et eksempel på en deadlock situasjon oppstår i prosessene illustrert under når receive kallet blokkerer. Hvis disse instruksjonene kjører i en løkke ville det ikke hjulpet å snu på rekkefølgen. Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 10 / 17
Oversikt Dining philosophers problemet 1 Deadlocks 2 Reusable resurser 3 Consumable resources 4 Dining philosophers problemet En løsning? En løsning 5 UNIX concurrency mekanismer Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 11 / 17
Dining philosophers problemet Dining philosophers problemet ble lagt fram av Dijstra, og det har siden det blitt brukt for å illustrere kompleksiteten ved delte resurser. Det er også et godt utganspunkt for å teste concurrency mekanismer. Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 12 / 17
En løsning? Dining philosophers problemet En løsning? Her er et forslag til en løsning på problemet Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 13 / 17
En løsning Dining philosophers problemet En løsning Her er en faktisk løsning på problemet Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 14 / 17
Oversikt UNIX concurrency mekanismer 1 Deadlocks 2 Reusable resurser 3 Consumable resources 4 Dining philosophers problemet 5 UNIX concurrency mekanismer Oversikt UNIX Oversikt Linux Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 15 / 17
UNIX concurrency mekanismer Oversikt UNIX Oversikt UNIX Det finnes en rekke concurrency mekanismer i UNIX. Pipes (pipe, dup2, popen, pclose, mkfifo) Messages (msgget, msgrcv, msgsnd, msgctl) Shared memory (shmget, shmat, shmdt, shmctl) Semaphores (sem open, sem init, sem wait, sem post) Signals Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 16 / 17
UNIX concurrency mekanismer Oversikt Linux Oversikt Linux Siden Linux er en UNIX varianter har den de samme concurrency mekanismene som standard UNIX, men den har også et par (interne) tillegg. Atomic operations Spinlocks Semaphores (binary, counting og reader/writer) Barriers Lars Vidar Magnusson () Forelesning i Operativsystemer 27.09.2011 September 30, 2011 17 / 17