INF1010 Repetisjonskurs i tråder



Like dokumenter
IN1010 våren Repetisjon av tråder. 15. mai 2018

Tråder Repetisjon. 9. og 13. mai Tråder

INF1010 Tråder II 6. april 2016

INF1010 Tråder J. Marit Nybakken Motivasjon. Å lage en tråd

GetMutex(lock) { while(testandset(lock)) {} } En context switch kan ikke ødelegge siden testen og endringen av lock skjer i samme instruksjon.

Tråder Repetisjon. 9. og 13. mai Tråder

INF2440 Uke 6, v2017. Arne Maus PSE, Inst. for informatikk

Start opp. Prosess 3 Meldingsutveksling Operativsystemet (styrer alt og sørger for kommunikasjon mellom prosesser)

Tråder del 2 Våren Stein Gjessing Institutt for informatikk Universitetet i Oslo

Forelesning III Kap 8 & 7; Dagsplan. Gjenbruk. Condition synchronization. Gjennomgående eksempler. Kode: Design: Verktøy

Kort notat om parallellstyring IN147

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

Side 1 av 11, prosesser, tråder, synkronisering, V. Holmstedt, HiO 2006

Sortering med tråder - Quicksort

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

UNIVERSITETET I OSLO

Operativsystemer, prosesser og tråder

INF2440 Uke 6, v2015 om faktorisering av primtall + tre løsninger på et produsent/konsumentproblem. Arne Maus PSE, Inst.

Prøveeksamen INF2440 v Arne Maus PSE, Inst. for informatikk

INF2440 Uke 7, våren2015. Arne Maus PSE, Inst. for informatikk

I et Java-program må programmøren lage og starte hver tråd som programmet bruker. Er dette korrekt? Velg ett alternativ

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

INF2440 Prøveeksamen, løsningsforslag, 20 mai Arne Maus PSE, Inst. for informatikk

INF2440 Uke 7, våren2017. Arne Maus PSE, Inst. for informatikk

INF1010 Tråder mars 2016

Arne Maus OMS, Inst. for informatikk

Synkronisering II. Kapittel 7. Betingelse oppfylt (0) liste. tråd-deskriptor. venteliste. tråd-deskriptor. tråd-deskriptor.

UNIVERSITETET I OSLO

La oss begynne med en repetisjon av hva som skjer når du kjører Javaprogrammet

INF2440 Uke 4, v2015 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model + evt bedre forklaring Radix

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Tråder del 2 Våren 2012

INF2440 Effektiv parallellprogrammering Uke 2 -, våren tidtaking. Arne Maus PSE, Inst. for informatikk

INF2440 Uke 4, v2017 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model + evt bedre forklaring Radix

Modeller av prosessering Implementasjon av tjenere

Litt mer om Arduino. Roger Antonsen Sten Solli INF januar 2011

UNIVERSITETET I OSLO

INF2440 Uke 5, våren2017. Arne Maus PSE, Inst. for informatikk

Inf1010 oppgavesamling

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

INF NOV PARALLELL SORTERING. Arne Maus, PSE, Ifi

INF2440 Uke 6, v2016 om faktorisering av primtall + tre løsninger på et produsent/konsumentproblem. Arne Maus PSE, Inst.

INF2440 Uke 5, våren2016. Arne Maus PSE, Inst. for informatikk

Synkronisering I. Kapittel 6. Tråd A. ferdig. t.varsle() u.vente() Tråd B. ferdig. tid

INF2440 Uke 4, våren2014 Avsluttende om matrisemultiplikasjon og The Java Memory Model + bedre forklaring Radix. Arne Maus OMS, Inst.

INF2440 Uke 5, våren2015 Om oppdeling av et problem for parallellisering, mye om primtall + thread-safe. Arne Maus PSE, Inst.

INF1010 oversikt med

IN Våren 2019 Tråder del mars 2019

INF2440 Eksamen 2016 løsningsforslag. Arne Maus, PSE ifi, UiO

1b) RaceCondision: En bug som kommer til overflaten ved uheldig timing/scheduling. Det klassiske eksemplet er vel med suspend og resume:

INF2440 Uke 6, våren2014 Mer om oppdeling av et problem for parallellisering, mye om primtall + thread-safe. Arne Maus OMS, Inst.

INF Våren 2017 Tråder del 1

IN 147 Program og maskinvare

Kap 19. Mer om parallelle programmer i Java og Kvikksort

INF3030, Uke 3, våren 2019 Regler for parallelle programmer, mer om cache og Matrise-multiplikasjon. Arne Maus / Eric Jul PSE, Inst.

UNIVERSITETET I OSLO

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Skisse til løsning for eksamensoppgave i TDT4186 Operativsystemer

UNIVERSITETET I OSLO

Java PRP brukermanual

import java.util.arraylist;

UNIVERSITETET I OSLO

Logo med FXML. Introduksjon. Skrevet av: Hallvard Trætteberg

7) Radix-sortering sekvensielt kode og effekten av cache

IN 147 Program og maskinvare. Vranglås De spisende filosofer Lettvektsprosesser Moderne synkroniseringsmetoder Meldinger Monitorer Linda

Tråder og concurrency i Linux

Qt Jambi E t R ammeverks His torie

INF2440, Uke 3, våren2015 Regler for parallelle programmer, mer om cache og Radix-algoritmen. Arne Maus OMS, Inst. for informatikk

Oversikt. Informatikk. INF1000: Grunnkurs i objektorientert programmering. Utenom INF1000 Informasjon & hjelp

static int ant_steiner; //antall steiner static int teller2 = 0; //teller for printing til Thread^ murer; //murertråden

Høgskolen i Molde Institutt for Informatikk Eksamen in240: Operativsystemer Høsten 2002 SVARFORSLAG:

Klasser, objekter, pekere og UML. INF gruppe 13

Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo

Steg 1: Opprette app-pakke, app-klasse og FXML-fil

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Eksempel 1 Eksempel 2 Dramatisering. INF1000 uke 3. Sundvollen 7. september 2015 Dag Langmyhr. INF1000 Sundvollen

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

INF3140 Modeller for parallellitet INF3140/4140: Monitorer

Prosesser og Tråder. Ketil Danielsen January 16, en tråd arbeider sekvensielt gjennom program

INF1010 oversikt med

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49

Tilstandsmaskiner med UML og Java

Objekt med Java. Harald Yndestad Høgskolen i Ålesund

INF2440 Uke 15, v2014 oppsummering. Arne Maus OMS, Inst. for informatikk

Endring av e-postoppsett med IMAP til ny e-posttjener

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Invarianter, +lstander og li1 mer seman+kk

Brukerhåndbok. Programområde

Obligatorisk oppgave 6 i INF1010: Dekryptering

UNIVERSITETET I OSLO

Kompendium i TDT4186 Operativsystemer Høst 2008

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

INF2440, Uke 3, våren2014 Regler for parallelle programmer, mer om cache og Radix-algoritmen. Arne Maus OMS, Inst. for informatikk

UNIVERSITETET I OSLO Institutt for informatikk. PRP-2014: Parallelle, faseoppdelte og rekursive algoritmer. Masteroppgave. Peter Ludvik Eidsvik

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Innhold. 3.7 Å lese data fra brukeren Klassen String Å formatere utskrift av desimaltall... 80

Programmering Høst 2017

OPPGAVE 5b og 8b Java Kode

INF2440 Uke 15, v2015 oppsummering. Arne Maus PSE, Inst. for informatikk

Transkript:

Eivind Storm Aarnæs eivinsaa@student.matnat.uio.no 19. mai og 21. mai 2014

Hello, World! La oss starte med det vanlige eksempelet: Hello, World Alle trådene skriver ut samtidig.

Hello, World! La oss starte med det vanlige eksempelet: Hello, World Alle trådene skriver ut samtidig. Ta med tilfeldig venting.

En tråd er en parallell beregning inne i en prosess.

En tråd er en parallell beregning inne i en prosess. Tråder deler minne.

wait, notify() og notifyall() Vi kan la tråder vente og vi kan vekke dem igjen:

wait, notify() og notifyall() Vi kan la tråder vente og vi kan vekke dem igjen: wait() Lar en tråd sove til den blir vekket.

wait, notify() og notifyall() Vi kan la tråder vente og vi kan vekke dem igjen: wait() Lar en tråd sove til den blir vekket. notify() Vekker en tilfeldig tråd.

wait, notify() og notifyall() Vi kan la tråder vente og vi kan vekke dem igjen: wait() Lar en tråd sove til den blir vekket. notify() Vekker en tilfeldig tråd. notifyall() Vekker alle trådene.

Hva er & hvorfor synkronisering Begrense tilgang til visse biter av koden.

Hva er & hvorfor synkronisering Begrense tilgang til visse biter av koden. Pga. delt minne kan tråder ødelegge for hverandre.

Synkronisering i Java To måter,

Synkronisering i Java To måter, synkroniserte metoder, eks.: public synchronized void foo() { /*... */ }

Synkronisering i Java To måter, synkroniserte metoder, eks.: public synchronized void foo() { /*... */ } og sykroniserte blokker, eks.: synchronized (someobject) { / *... */ }

Eksempel: Producer/consumer Vanlig modell i parallellprogramering:

Eksempel: Producer/consumer Vanlig modell i parallellprogramering: Et antall Produsenter produserer data,

Eksempel: Producer/consumer Vanlig modell i parallellprogramering: Et antall Produsenter produserer data, et antall Konsumenter bruker data når tilgjengelig.

Eksempel: Producer/consumer Vanlig modell i parallellprogramering: Et antall Produsenter produserer data, et antall Konsumenter bruker data når tilgjengelig. En monitor sørger for riktig kommunikasjon mellom dem.

Låser og barierer Tillater mer avansert synkronisering:

Låser og barierer Tillater mer avansert synkronisering: ReentrantLock og Condition lar det deg gjøre det samme som wait/notifyall + mer.

Låser og barierer Tillater mer avansert synkronisering: ReentrantLock og Condition lar det deg gjøre det samme som wait/notifyall + mer. CountDownLatch låser til countdown() er kallet riktig antall ganger. Hver instans kan bare brukes én gang.

Låser og barierer Tillater mer avansert synkronisering: ReentrantLock og Condition lar det deg gjøre det samme som wait/notifyall + mer. CountDownLatch låser til countdown() er kallet riktig antall ganger. Hver instans kan bare brukes én gang. CyclicBarrier låser til riktig antall tråder venter. Tillater også en ekstra handling når riktig antall tråder venter. Hver instans kan gjenbrukes.

Eksempel: Producer/Consumer med låser Skriv monitoren det forrige eksempelet med ReentrantLock og Condition istedet for wait/notifyall.