Operativsystemer, prosesser og tråder
|
|
- Julia Gjertsen
- 7 år siden
- Visninger:
Transkript
1 Dagens program Grunnleggende tråd-programmering i Java: Java-tråder: definisjoner, egenskaper Interferens Låsing og synkronisering Venting og signallering Løpende eksempel: lesere og skrivere Erfaringer og høynivå-konstruksjoner: Vranglås, problemer med leksikalsk låsing Høynivå-konstruksjoner for samtidig programmering (Java 5.0) Eksempel: begrenset buffer INF3140 / Samtidig programming i Java 1 Operativsystemer, prosesser og tråder Operativsystemer (OSer) lar et antall prosesser kjøre på en maskin vha. preemptiv skedulering. Multiprosessorer-maskiner eller multicore -prosessorer: prosesser kan også kjøre i ekte parallell. Tråd: prosess som er billig å lage for OSet, typisk fordi ressurser deles med prosessen som lagde tråden. Ressursdeling åpner for effektiv interaksjon mellom tråder, men kan også føre til interferens mellom tråder. Java og Java Virtual Machine (JVM) uavhengig av OS = tråder må følge visse regler. Java-tråder er integrert i språket. INF3140 / Samtidig programming i Java 2
2 Konkret definisjon av Java-tråder Klassen java.lang.thread public class Thread extends Object implements Runnable { // konstruktorer Thread() {... Thread(Runnable target) {... // metoder public void run() { // re-def.es i subklasser public void start()... // mye utelatt // et relatert grensesnitt public interface Runnable { public void run(); INF3140 / Samtidig programming i Java 3 Grunnleggende egenskaper ved Java-tråder Hver tråd kontrolleres av ett unikt Thread-objekt disse to kan betrakes som én. Livssyklus for en tråd: Et objekt av klassen Thread opprettes Livet (utførelsen) begynner når metoden run() kalles Tråden dør når run() avslutter, enten ved retur eller et unntak (eng. exception) Tråder kommuniserer typisk med hverandre ved delt tilstand: Lese/skrive felter i objekter trådene kan referere Lokale variable og metode-parametre deles ikke mellom tråder i Java INF3140 / Samtidig programming i Java 4
3 Egendefinert klasse: Tråder i Java: Et første eksempel class Simple extends Thread { public void run() { System.out.println("Hello threaded world!"); Bruk av klassen: Simple s = new Simple(); s.start(); Metoden start() klargjør objektet for eksekvering. Når prosessoren blir tilgjengelig kaller den s.run(). INF3140 / Samtidig programming i Java 5 Eksempel: interferens og Java-tråder Må unngå interferens ved samtidig utførelse av Java-tråder. Gitt følgende kodesnutt: class Store { private int data = 0; public void update() { data++;... // i en metode: Store s = new Store(); // trådene under har tilgang til s t1 = new FooThread(s); t1.start(); t2 = new FooThread(s); t2.start(); Trådene t1 og t2 kan gjøre s.update() samtidig! Interferens mellom t1 og t2 = kan miste oppdateringer av data. INF3140 / Samtidig programming i Java 6
4 Låser og synkronisering Tråder synkroniserer adgang til delte data for å unngå interferens. Mekanisme: 1. Én unik lås (eng. lock) for hvert objekt a o. 2. Kun én tråd T kan låse o til enhver tid. 3. T gjør en forespørsel om å låse o for å utføre blokken (setningene) B slik: synchronized (o) { B T blokkerer (stopper opp) til låsingen lykkes. 4. Først når (hvis) Ts forespørsel lykkes så låses o og T utfører B. 5. Flere tråder kan konkurrere om å låse et objekt. Implementasjonsavhengig rekkefølge for innvilging av låse-forespørsler. 6. T kan låse o på ny fra B (eng. reentrance). 7. Når T avslutter B, eller kaster unntak, slippes låsen på o. a Egentlig: objekt, tabell og klasse. INF3140 / Samtidig programming i Java 7 Tilstandsmodell for Java-tråder: låsing foresp. om o new fikk låse o synchronized (o) preempt et laget start() klar skedulert kjører Låsen på o slippes når tråden forlater synchronized-blokken (må skje i tilstand kjører ). Noen tilstander og tråd-primitiver utelatt. a a Hentet fra boka Java Precisely av Peter Sestoft (MIT Press, 2002 & 2005). Gammel versjon fritt tilgjengelig fra INF3140 / Samtidig programming i Java 8
5 Eksempelet del II: ingen interferens Løsning på tidligere problem: låse Store-objekter før utførelse av problematisk metode: class Store { private int data = 0; public void update() { synchronized (this) { data++;... // i en metode: Store s = new Store(); Nå kan kun én tråd av gangen utføre s.update(). Kortform: class Store { private int data = 0; public synchronized void update() { data++; INF3140 / Samtidig programming i Java 9 Eksempel: Sekvensielle lesere og skrivere class RWbasic { protected int data = 0; // the database public void read() { System.out.println("read: " + data); public void write() { data++; System.out.println("wrote: " + data); class Main { static RWbasic RW = new RWbasic(); public static void main(string arg) { for (int i = 0; i < 10; i++) { RW.read(); RW.write(); INF3140 / Samtidig programming i Java 10
6 Eksempel: Parallelle (usynkroniserte) lesere og skrivere class Reader extends Thread { RWbasic RW; // Som før public Reader(RWbasic RW) { this.rw = RW; public void run() { for (int i = 0; i < 10; i++) RW.read(); class Writer... // som Reader, men gjør RW.write() i løkka class Main { static RWbasic RW = new RWbasic(); public static void main(string arg) { new Reader(RW).start(); new Writer(RW).start(); INF3140 / Samtidig programming i Java 11 Eksempel: Utelukkende lesere og skrivere Synkroniserte metoder gir gjensidige utelukkelse. class RWexclusive extends RWbasic { public synchronized void read() { super.read(); public synchronized void write() { super.write(); dvs. gjenbruker koden fra klassen RWbasic. Klassene Reader, Writer og Main bruker nå RWexclusive isf. RWbasic. Ingen interferens, men... Problem: Maksimalt én leser av gangen. INF3140 / Samtidig programming i Java 12
7 Metoder for venting og signallering Klassen java.lang.object public class Object { // metoder public final void wait() throws InterruptedException {... public final void notify() {... public final void notifyall() { // mye utelatt En tråd som kaller metodene på objekt o må ha låst o på forhånd, typisk synchronized (o) {... o.wait():... INF3140 / Samtidig programming i Java 13 Forklaring av vente-relaterte metoder For vilkårlig Java-objekt o er følgende definert: o.wait(): slipp låsen på o, gå inn i os ventekø og vent o.notify(): vekk én tråd i os ventekø o.notifyall(): vekk alle tråder i os ventekø Objekter som venter på o (o.wait()) ligger i en kø. Ventekø-ordningen er implementasjonsavhengig. Metodene notify()/notifyall() har Signal and Continue -semantikk. Merk: En tråd som våkner fra o.wait() må låse o påny før den fortsetter. En vekket tråd har ingen fortrinn i konkurransen om låsen til o. INF3140 / Samtidig programming i Java 14
8 Tilstandsmodell for Java-tråder: låsing og venting new laget fikk låse o start() foresp. om o klar o.notify eller o.notifyall interrupt() synchronized (o) preempt et skedulert venter på o kjører o.wait() Det er to uavhengige steder tråder kan blokkere per objekt o: Ved låsing av o: synchronized (o) { B Ved venting på o: o.wait() INF3140 / Samtidig programming i Java 15 Eksempel: Ekte lesere og skrivere class ReadersWriters extends RWbasic { privat int nr = 0; private synchronized void startread() {nr++; private synchronized void endread() { nr--; if (nr==0) notify(); // awaken waiting Wrs. public void read() { // not synchronized startread(); super.read(); endread(); public synchronized void write() { while (nr>0) try { wait(); catch (InterruptedException ex) { return; super.write(); notify(); // awaken another waiting Writer Klassene Reader, Writer og Main bruker nå ReadersWriters isf. RWbasic. Problem: Løsningen gir preferanse til lesere. INF3140 / Samtidig programming i Java 16
9 Vranglås T 1 : T 2 : synchronized (a) { synchronized (b) { synchronized (b) { synchronized (a) { Vranglås (eng. deadlock) hvis T 1 låser a og så T 2 låser b. INF3140 / Samtidig programming i Java 17 Leksikalsk (blokkvis) låsing Dvs. låsing vha. synchronized: Fordeler: Automatisk opplåsing ved slutten av synchronized-blokken Oversiktlig, lett å se når en lås holdes Ulemper: Ved låsing av flere objekter: låsene må slippes i motsatt rekkefølge Låser må slippes i samme leksikalske skop som de ble låst INF3140 / Samtidig programming i Java 18
10 Høynivå-konstruksjoner for samtidig programmering Siste versjon av Java (5.0) støtter samtidig programmering på høyt nivå i pakkene java.util.concurrent*. Motivasjon for høynivå-støtten: Mer fleksibel og/eller abstrakt enn synchronized Effektive implementasjoner, bruker ikke synchronized direkte Korrekte implementasjoner av synkroniseringsprimitiver, f.eks. semaforer (ofte en ikke-triviell oppgave!) INF3140 / Samtidig programming i Java 19 Fleksible låser med betingelser Grensesnittet java.util.concurrent.locks.lock public interface Lock { // metoder public void lock(); public void unlock(); public boolean trylock(); public Condition newcondition();... // utelatt Grensesnittet java.util.concurrent.locks.condition public interface Condition { public void await() throws InterruptedException; public void signal(); public void signalall();... // utelatt INF3140 / Samtidig programming i Java 20
11 Standardimplementasjon og semantikk Tilbys som standard: Klassen java.util.concurrent.locks.reentrantreadwritelock public class ReentrantReadWriteLock extends Object implements ReadWriteLock,... {... Semantikken til fleksible låser Samme antall kall må gjøres på lock() og unlock() for hver lås Metodene i Condition har Signal and Continue -oppførsel INF3140 / Samtidig programming i Java 21 Bruk av fleksible låser Lock l =...; l.lock(); try {... // aksesser ressursen beskyttet av låsen finally { l.unlock(); Kode som utføres når låsen holdes bør beskyttes av try-finally e.l. for å sikre at låsen slippes ved avbrudd. En betingelse assosiert med en lås lages slik: Lock l =...; Condition c = l.newcondition(); Låsen må holdes når betingelsen brukes. INF3140 / Samtidig programming i Java 22
12 Eks.: begrenset buffer vha. Condition class BoundedBuffer { final Lock lock = new ReentrantLock(); final Condition notfull = lock.newcondition(); final Condition notempty = lock.newcondition(); final Object[] buf = new Object[100]; int rear, front, count; // int defaults to 0 public void deposit(object x) throws InterruptedExc. { lock.lock(); try { while (count == buf.length) notfull.await(); buf[rear] = x; rear = (rear + 1) % buf.length; count++; notempty.signal(); finally { lock.unlock(); public Object fetch() throws InterruptedException { lock.lock(); try { while (count == 0) notempty.await(); Object x = buf[front]; front = (front + 1) % buf.length; count--; notfull.signal(); return x; finally { lock.unlock(); INF3140 / Samtidig programming i Java 23 Samtidig programmering er vanskelig... Metoden stop() i Thread-klassen: Stopper vilkårlige tråder Stopping kan bryte invarianter i låste objekter Ble etterhvert erklært ubrukbar (eng. deprecated) Det var lenge alvorlige feil i Javas minnemodell: Double-checked locking et vanlig idiom i samtidig programmering var ugyldig i Java Feil og uklarheter i definisjonen av lavnivåoppførselen til Java-tråder Rettet i Java 5.0 og Java Language Specification, 3. utgave. INF3140 / Samtidig programming i Java 24
13 Språket JR Språket JR er Java utvidet med språklig støtte for både samtidig og distribuert programmering. JR representerer en alternativ tilnærming, inspirert av Andrews språk SR som brukes i læreboka. En JR-implementasjon er fritt tilgjengelig for ulike operativsystemer. The JR Concurrent Programming Language, INF3140 / Samtidig programming i Java 25
INF1010 Tråder II 6. april 2016
INF1010 Tråder II 6. april 2016 Stein Gjessing Universitetet i Oslo 1 Tråder i Java tråden minrunp class MinRun implements Runable { MinRun(... ) {... } public void run( ) {...... } } //end
DetaljerTråder Repetisjon. 9. og 13. mai Tråder
Tråder Repetisjon 9. og 13. mai Tråder Hva er tråder? 2 Hva er tråder? I utgangspunktet uavhengige aktiviteter som konkurrerer om å få bruke prosessoren. 2 Hvorfor tråder? 3 Hvorfor tråder? Flere oppgaver
DetaljerTråder Repetisjon. 9. og 13. mai Tråder
Tråder Repetisjon 9. og 13. mai Tråder Hva er tråder? 2 Hva er tråder? I utgangspunktet uavhengige aktiviteter som konkurrerer om å få bruke prosessoren. 2 Hvorfor tråder? 3 Hvorfor tråder? Flere oppgaver
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider.
DetaljerINF2440 Prøveeksamen, løsningsforslag, 20 mai Arne Maus PSE, Inst. for informatikk
INF2440 Prøveeksamen, løsningsforslag, 20 mai 2015 Arne Maus PSE, Inst. for informatikk 1 Prøveeksamen Er en modell av hva du får til eksamen: - like mange (+-1) oppgaver som eksamen og nesten samme type
DetaljerStein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk
INF1010 11. mai 2017 Monitorer med kritiske regioner og passive venting innbygget i Java - Kommunikasjon mellom prosesser i Java (Ikke pensum i INF1010) Stein Gjessing Universitetet i Oslo 1 Repetisjon:
DetaljerIN1010 våren Repetisjon av tråder. 15. mai 2018
IN1010 våren 2018 Repetisjon av tråder 15. mai 2018 Stein Gjessing,, Universitetet i Oslo 1 Tråder Datamaskinarkitektur prosessor registre cache 1 cache 2 prosessor registre cache 1 Disk System-bus Minne
DetaljerINF2440 Uke 6, v2015 om faktorisering av primtall + tre løsninger på et produsent/konsumentproblem. Arne Maus PSE, Inst.
INF2440 Uke 6, v2015 om faktorisering av primtall + tre løsninger på et produsent/konsumentproblem Arne Maus PSE, Inst. for informatikk 1 Hva så vi på i Uke5 1. Mer om ulike strategier for å dele opp et
DetaljerINF1010 Tråder J. Marit Nybakken Motivasjon. Å lage en tråd
J INF1010 Tråder J Marit Nybakken marnybak@ifi.uio.no Motivasjon Til nå har vi kun skrevet programmer der programmet bare var på ett sted i koden til enhver tid (bortsett fra når vi har drevet med GUI,
DetaljerINF2440 Uke 6, v2017. Arne Maus PSE, Inst. for informatikk
INF2440 Uke 6, v2017 Arne Maus PSE, Inst. for informatikk 1 Hva så vi på i uke 5 1. Enda bedre Matrise-multiplisering 2. Modell2-kode for sammenligning av kjøretider på (enkle) parallelle og sekvensielle
DetaljerINF Notater. Veronika Heimsbakk 10. juni 2012
INF1010 - Notater Veronika Heimsbakk veronahe@student.matnat.uio.no 10. juni 2012 1 Tilgangsnivåer 2 CompareTo Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N
DetaljerAvdeling for ingeniørutdanning Institutt for teknologi
Avdeling for ingeniørutdanning Institutt for teknologi Oppgavetittel: Lab Fag(nr./navn): DOPS2021 - Operativsystemer Gruppemedlemmer: T. Alexander Lystad Faglærer: Karoline Moholth Dato: 15. oktober 2009
DetaljerLa oss begynne med en repetisjon av hva som skjer når du kjører Javaprogrammet
K A P I T T E L 18 Tråder N år et program kjøres, utføres programsetningene i en bestemt rekkefølge. En tråd er det samme som denne programflyten, og i dette kapitlet skal vi se på hvordan vi starter og
DetaljerINF1010 Repetisjonskurs i tråder
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
DetaljerI et Java-program må programmøren lage og starte hver tråd som programmet bruker. Er dette korrekt? Velg ett alternativ
INF2440-V18 Information INF2440 Vår 2018 eksamen Dato og tid: 11. juni 2018 09:00. Varighet: 4 timer Hjelpemidler: Alt skriftlig materiale er tillatt. Ingen elektroniske hjelpemidler er tillatt. Powerpoint
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF2440 Effektiv parallellprogrammering Eksamensdag: 2. juni 2015 Tidspunkter: 09.00 13.00 Oppgavesettet er på: 3 sider + 2 sider
DetaljerInnhold. Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer. Prinsipper for synkronisering av felles hukommelse
Innhold Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer Prinsipper for synkronisering av felles hukommelse Multiprosessorer koblet sammen av én buss 02.05 2001 Parallelle
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i: INF2440 Effektiv parallellprogrammering Prøveeksamensdag: 1. juni 2016 Tidspunkter: 09.00 16.00 Oppgavesettet er på: 4 sider
DetaljerTråder del 2 Våren Stein Gjessing Institutt for informatikk Universitetet i Oslo
Tråder del 2 Våren 2008 Stein Gjessing Institutt for informatikk Universitetet i Oslo Om parallellitet En beregning delt opp i parallell går fortere jo mer uavhengig delene er Amdahls lov: Totaltiden er
DetaljerINF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo
INF, 22. mai 23 Prøveeksamen 23 (Eksamen 2. juni 22) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Oppgave a Tegn klassehierarkiet for de 9 produkttypene som er beskrevet over. Inkluder også
DetaljerForelesning III Kap 8 & 7; Dagsplan. Gjenbruk. Condition synchronization. Gjennomgående eksempler. Kode: Design: Verktøy
Forelesning III Kap 8 & 7; Dagsplan Moral: Gjenbruk Kap 8: Shared variable-based synchronization and communication Condition synchronization Mutual Exclution Conditional Critical Regions Suspend & Resume
DetaljerINF2440 Eksamen 2016 løsningsforslag. Arne Maus, PSE ifi, UiO
INF2440 Eksamen 2016 løsningsforslag Arne Maus, PSE ifi, UiO 1 Oppgave 1 (10 poeng) a) Beskriv meget kortfattet de to viktigste egenskapene ved tråder i et Java-program. 1. En tråd er sekvensielt programdel
DetaljerStart opp. Prosess 3 Meldingsutveksling Operativsystemet (styrer alt og sørger for kommunikasjon mellom prosesser)
Om parallellitet Tråder del 2 Våren 2008 Stein Gjessing Institutt for informatikk Universitetet i Oslo En beregning delt opp i parallell går fortere jo mer uavhengig delene er Amdahls lov Totaltiden er
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF2440 Praktisk parallell programmering Prøveeksamensdag : 26. mai 2014 Tidspunkter: 11.00 Utdeling av prøveeksamen 15:15
DetaljerSortering med tråder - Quicksort
Sortering med tråder - Quicksort Skisser til to programmer INF1010 våren 2016 Stein Gjessing Institutt for informatikk Universitetet i Oslo Sortering som tema, slikt som valg av sorteringsmetode, hastigheten
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF2440 Effektiv parallellprogrammering Eksamensdag: 7. juni 2016 Tidspunkter: 09.00 13.00 Oppgavesettet er på: 3 sider + 1 side
DetaljerGetMutex(lock) { while(testandset(lock)) {} } En context switch kan ikke ødelegge siden testen og endringen av lock skjer i samme instruksjon.
Hardware-støttet Semafor og Implementasjon av semafor i OS til å synkronisere Hardware-støttet alle softwareløsninger innebærer mange instruksjoner i tillegg til busy-waiting, som koster CPU-tid. I praksis
DetaljerSide 1 av 11, prosesser, tråder, synkronisering, V. Holmstedt, HiO 2006
Side 1 av 11, prosesser, tråder, synkronisering, V. Holmstedt, HiO 2006 Prosesser og tråder Datamaskinen lager prosesser. En prosess organiserer arbeidet i et program ved å administrere tråder. Det er
DetaljerGUI («Graphical User Interface») del 2
GUI («Graphical User Interface») del 2 Interaksjon med brukeren Hendelsesdrevet programmering Tråder i GUI Et spill basert på klikkbare ruter Se også på Infoskrivet https://www.uio.no/studier/emner/matnat/
DetaljerEksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %
Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 % Stein Gjessing Institutt for Informatikk Universitetet i Oslo 1 Oppgave 10 Tegning av datastrukturen (vekt 5% av del B) Tegn datastrukturen til
DetaljerMål med kurset. Java i INF 2400. Dagens tema. GUI med Swing. Dokumentasjon
Mål med kurset Java i INF 2400 Introduksjon til signalbehandling Lyd som anvendelse Få programmeringserfaring Dagens tema Utplukk av Java (GUI, kode-konvensjon, polymorfisme, classpath, javadoc) Java og
DetaljerINF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk
INF1010 - Våren 2015 Li' repe$sjon om Tråder og GUI Stein Gjessing,, Universitetet i Oslo 1 GUI, tråder og hendelser Op-sys (Win, Linux,..) Ditt Program sin Event Dispatch Thread Hver ting brukeren gjør
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider. Vedlegg:
DetaljerPrøveeksamen INF2440 v Arne Maus PSE, Inst. for informatikk
Prøveeksamen INF2440 v 2016 Arne Maus PSE, Inst. for informatikk 1 Oppgave 1 (10 poeng) Forklar hva som skjer ved en synkronisering: a) Når to tråder synkroniserer på samme synkroniseringsobjekt (f.eks
DetaljerSynkronisering I. Kapittel 6. Tråd A. ferdig. t.varsle() u.vente() Tråd B. ferdig. tid
Kapittel 6 Synkronisering I Tråd A t.varsle() u.vente() ferdig Tråd B t.vente() u.varsle() ferdig tid Figur 6-1: Tråder som venter og varsler langs en tidsakse. Heltrukket linje betyr aktiv, og stiplet
DetaljerINF 1010, vår 2005 Løsningsforslag uke 11
INF 1010, vår 2005 uke 11 Anders Brunland 11. april 2005 Oppgave 1 Oppgave 1 i kapittel 19, Rett på Java Er følgende metoder lovlige? Hovorfor/hvorfor ikke? a) void koknverter ( int mnd ) { konverterdato
DetaljerSynkronisering II. Kapittel 7. Betingelse oppfylt (0) liste. tråd-deskriptor. venteliste. tråd-deskriptor. tråd-deskriptor.
Kapittel 7 Synkronisering II etingelse oppfylt (0) liste venteliste tråd-deskriptor tråd-deskriptor tråd-deskriptor tråd-deskriptor Figur 7-1: Datastrukturen for en etingelse. are når oppfylt er 0 kan
DetaljerRepitisjonskurs. Arv, Subklasser og Grensesnitt
Repitisjonskurs Arv, Subklasser og Grensesnitt Subklasser Klasser i OO-programmering representerer typer av objekter som deler et sett med egenskaper. En subklasse har egenskapene til en klasse + ett sett
DetaljerInnhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49
Innhold Forord...5 1 Det første programmet...15 1.1 Å kommunisere med en datamaskin 16 1.2 Programmeringsspråk 17 1.3 Et program som skriver på skjermen 18 1.4 Kompilering og kjøring 19 1.5 Kommentarer
DetaljerINF3140 Modeller for parallellitet INF3140/4140: Låser og Barrierer
INF3140/4140: Låser og Barrierer Uke 2, side 1. Praktisk Obligatorisk oppgave 1 Er nå lagt ut. Merk: Frist fredag 21. sept. Guppelærer Mohammad Ali Norozi mohammno@ifi.uio.no Merk: Kun gruppe 1 åpen! Forelesningssted
DetaljerEksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus
// class Bygning Oppgave 1 System.out.println( Bolighus ); // class Bolighus Hva blir utskriften fra dette programmet? class Blokk extends Bolighus{ // class Blokk IN105subclassesII-1 Eksekveringsrekkefølgen
DetaljerArray&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister
Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java
DetaljerInf1010 oppgavesamling
Table of ontents Inf1010 oppgavesamling.. 1 Subklasser... 1 Grensesnitt.. 2 Rekursjon... 3 Datastrukturer... 3 GUI. 4 Sortering... 6 Tråder... 6 Inf1010 oppgavesamling Subklasser Klassehirarki for dyr
DetaljerINF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java
INF1010 våren 2017 Onsdag 25. januar Litt om unntak i Java Stein Gjessing Nytt tema: Feilhåndtering (IO: Innlesing/Utskrift) n En metode som kan komme til å gjøre en IO-feil på fil må enten behandle denne
DetaljerOppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre
Oppsummering Kort gjennomgang av klasser etc ved å løse halvparten av eksamen 2012. Klasser Interface Subklasser Klasseparametre Datastrukturer Hva er problemet? Oppgaven Emballasjefabrikken Renpakk skal
DetaljerArray&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre
Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java
DetaljerFra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr
Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et eksempel Klasser
DetaljerINF Våren 2017 Tråder del 1
INF1010 - Våren 2017 Tråder del 1 23. mars 2017 Stein Gjessing,, Universitetet i Oslo Horstmann kap 20.1 20.3 1 Maskin med 8 kjerner 2 Oversikt Hva er parallelle programmer? Hvorfor parallelle programmer?
DetaljerModels of Concurrency
Models of Concurrency Martin Steffen 1 University of Oslo, Norway INF3140 Høst 2007 Dagens program Mer asynkron meldingsutveksling Interagerende prosesser med ulike kommunikasjonsmønstre Oppsummering av
DetaljerIN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr
IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler
DetaljerKapittel 7: Mer om arv
Kapittel 7: Mer om arv Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk Forlag,
DetaljerIN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr
IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler
DetaljerGUI («Graphical User Interface») del 2
GUI («Graphical User Interface») del 2 Interaksjon med brukeren Hendelsesdrevet programmering Tråder i GUI Se også på Infoskrivet https://www.uio.no/studier/emner/matnat/ ifi/in1010/v18/gui/fx-intro-in1010.pdf
DetaljerKonstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:
Konstruktører Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver Punkt p = new Punkt(3,4); class Punkt { skjer følgende: int x, y; 1. Det settes av plass i
DetaljerArne Maus OMS, Inst. for informatikk
INF2440 Uke 5, våren2014 Sluttkommentarer om Matrisemultiplikasjon, Modellkode for parallelle systemer, Vranglås + evt. Oppdeling av et problem for parallellisering Arne Maus OMS, Inst. for informatikk
DetaljerDefinisjon av prosess
Prosesser og tråder Definisjon av prosess Enkel definisjon En prosess er et program som kjører Mer presis definisjon En prosess er en samling av ressurser som er nødvendige for å utføre en oppgave beskrevet
DetaljerDet finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten
Interface, Abstract Class... i-120 : H-98 2a. Abstraksjon i JAVA: 1 Det finnes ingenting som kan gjøres med interface i-120 : H-98 2a. Abstraksjon i JAVA: 2 som kan gjøres med bruk av unntak i-120 : H-98
DetaljerTilstandsmaskiner med UML og Java
Tilstandsmaskiner med UML og Java DAT2160 DAT2160 Høst Høst 2002 2002 Tilstandsmaskiner Tilstandsmaskiner med med UML UML og og Java Java Hva er en (endelig) tilstandsmaskin? En tilstandsmaskin kan sees
DetaljerINF1010 våren 2016. Arv og subklasser - del 2
INF1010 våren 2016 Onsdag 10. februar Arv og subklasser - del 2 pluss litt om feil og unntak hvis tid Stein Gjessing Institutt for informatikk Dagens tema Virtuelle metoder som er det samme som Polymorfi
DetaljerINF2440 Uke 4, v2017 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model + evt bedre forklaring Radix
INF Uke, v7 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model + evt bedre forklaring Radix Arne Maus PSE, Inst. for informatikk Hva så vi på i uke. Presisering av hva som er pensum.
Detaljerpublic static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
Detaljerpublic static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren
Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en
DetaljerIN Våren 2019 Tråder del mars 2019
IN1010 - Våren 2019 Tråder del 1 27. mars 2019 Stein Gjessing,, Universitetet i Oslo Horstmann kap 20.1 20.3 1 Maskin med 8 kjerner 2 Oversikt Hva er parallelle programmer? Hvorfor parallelle programmer?
DetaljerEks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk
Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på
DetaljerHva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }
Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =
DetaljerINF2440 Uke 4, våren2014 Avsluttende om matrisemultiplikasjon og The Java Memory Model + bedre forklaring Radix. Arne Maus OMS, Inst.
INF Uke, våren Avsluttende om matrisemultiplikasjon og The Java Memory Model + bedre forklaring Radix Arne Maus OMS, Inst. for informatikk Hva så vi på i uke. Presisering av hva som er pensum. Samtidig
Detaljer< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»
< T extends Comparable > Indre klasser mm. «Det du bør ha hørt om før oblig 4» Strukturen i oblig 3 null null null null Personbeholder pl null null Person p "Adnan" michael@ifi.uio.no INF1010 21. februar
DetaljerIN 211 Programmeringsspråk. Java. på 20 enkle ark. spesielt for de som kan. Simula. (og gjerne litt C) Ark 1 av 20
Java på 20 enkle ark spesielt for de som kan Simula (og gjerne litt C) Ark 1 av 20 Forelesning 28.9.1998 Et minimalt eksempel Filen Hallo.java ser slik ut: class Hallo { public static void main(string
DetaljerKapittel 8: Programutvikling
Kapittel 8: Programutvikling Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk
DetaljerINF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)
INF1010 våren 2019 Onsdag 30. januar Mer om unntak i Java (med litt repetisjon av I/O først) Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type:
DetaljerD: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.
Side 1 av 8 Norges teknisk-naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap Løsningsforslag til EKSAMENSOPPGAVE I FAG TDT4186 OPERATIVSYSTEMER Versjon: 13.des 2011 Faglig
DetaljerLøsningsforslag Test 2
Løsningsforslag Test 2 Oppgave 1.1: Interface definerer et grensesnitt som kan implementeres av flere klasser. Dette gir en standardisert måte å kommunisere med objekter av en eller flere relaterte klasser.
DetaljerForkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen
Forkurs INF1010 Dag 1 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Tuva Kristine Thoresen (tuvakt@ifi.uio.no) Institutt for Informatikk, 6. januar 2014 Forkurs INF1010 - dag 1 Hello, World! Typer Input/output
DetaljerKort notat om parallellstyring IN147
Kort notat om parallellstyring IN147 Kristin Skar 18. mai 2001 1 Kommunikasjon mellom prosesser Mange problemer man kommer borti kan kreve en paralell løsning: Man kan ha behov for økt hastighet, og dermed
Detaljerprogrameksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"
Et større programeksempel Hvordan løse et reelt problem med en objektorientert fremgangsmåte En større problemstilling I uke 4 skrev vi et program for å sjekke om et gen (en tekstfil) inneholdt ordet "TGA"
DetaljerINF1010, 15. januar 2014 2. time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo
INF1010, 15. januar 2014 2. time Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Repetisjon fra gamle dager: Metoder med parametre En metode uten parameter:
DetaljerINF våren 2017
INF1010 - våren 2017 Om Java Objekter og klasser Både for deg som kan og for deg som ikke kan Java Stein Gjessing Universitetet i Oslo Ny versjon etter forlesningen der tre meningsløse private modifikatorer
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF2440 Praktisk parallell programmering Eksamensdag : 2. juni 2014 Tidspunkter: 14.30 Oppgavesettet er på : 4 sider Vedlegg
DetaljerINF2440 Uke 4, v2015 Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model + evt bedre forklaring Radix
INF Uke, v Om å samle parallelle svar, matrisemultiplikasjon og The Java Memory Model + evt bedre forklaring Radix Arne Maus PSE, Inst. for informatikk Hva så vi på i uke. Presisering av hva som er pensum.
DetaljerGjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur
Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på
DetaljerJentetreff INF1000 Debugging i Java
Jentetreff INF1000 Debugging i Java Ingrid Grønlie Guren ingridgg@student.matnat.uio.no 11. november 2013 Kort om feilmeldinger i Java Java har to ulike type feilmeldinger som man kan få når man skriver
DetaljerLøse reelle problemer
Løse reelle problemer Litt mer om løkker, metoder med returverdier, innlesing fra fil og strenger INF1000, uke5 Ragnhild Kobro Runde MER OM LØKKER Repetisjon fra forrige uke: while Syntaks: while (condition)
DetaljerINF1010 Eksamenstips. Løsningsforslag prøveeksamen del 1.
INF1010 Eksamenstips Løsningsforslag prøveeksamen del 1. michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 2 Les igjennom hele oppgaven. Les igjennom hele oppgaven en gang til, marker i teksten ting
DetaljerINF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo
INF1010, 21. februar 2013 Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Ikke noe nytt her From the Java language specification (version 6): 14.14.2
DetaljerINF1000: noen avsluttende ord
Pensum Det som er gjennomgått på forelesningene INF1000: noen avsluttende ord Arne og Fredrik Stoff som er behandlet i oppgaver/obliger Notat om Informasjonsteknologi, vitenskap og samfunnsmessige virkninger
DetaljerINF2440 Uke 6, v2016 om faktorisering av primtall + tre løsninger på et produsent/konsumentproblem. Arne Maus PSE, Inst.
INF2440 Uke 6, v2016 om faktorisering av primtall + tre løsninger på et produsent/konsumentproblem Arne Maus PSE, Inst. for informatikk 1 Hva så vi på i uke 5 1. Mer om matrisemultiplikasjon 1. Radvis
DetaljerIN Notat om I/O i Java
IN1010 - Notat om I/O i Java Mathias J.P. Stang, Tuva Kristine Thoresen, Ingrid Grønlie Guren 17. januar 2018 Dette notatet handler om I/O (input/output) i Java, og tar for seg innlesning fra terminal,
DetaljerINF1010. Grensesnittet Comparable<T>
INF1010 21. februar 2013 Grensesnittet Comparable Stein Michael Storleer Institutt for Informatikk Universitetet i Oslo Interface med parametre interface Utkledd { // T er klassen jeg er utkledd
DetaljerGeneriske mekanismer i statisk typede programmeringsspråk
Generiske mekanismer i statisk typede programmeringsspråk Dette stoffet er Pensum, og det er bare beskrevet her Mye her er nok kjent stoff for mange INF5110 7. mai 2013 Stein Krogdahl 1 Hvordan kunne skrive
DetaljerINF3030, Uke 3, våren 2019 Regler for parallelle programmer, mer om cache og Matrise-multiplikasjon. Arne Maus / Eric Jul PSE, Inst.
INF3030, Uke 3, våren 2019 Regler for parallelle programmer, mer om cache og Matrise-multiplikasjon Arne Maus / Eric Jul PSE, Inst. for informatikk 1 Hva har vi sett på i Uke2 Én stygg feil vi kan gjøre:
DetaljerVelkommen til. INF våren 2016
Velkommen til INF1010 - våren 2016 Denne uken (onsdag og torsdag): Om INF1010 Java datastrukturer Klasser med parametre i Java Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 1 INF1010
DetaljerModeller av prosessering Implementasjon av tjenere
Modeller av prosessering Implementasjon av tjenere Foreleser: Kjell Åge Bringsrud 1 Oversikt Motivasjon for flertrådede prosesser og deres anvendelse i distribuerte system Modeller av prosessering i CORBA
DetaljerINF1010 våren 2014. Arv og subklasser - del 2
INF1010 våren 2014 Onsdag 19. februar Arv og subklasser - del 2 Stein Gjessing Institutt for informatikk Dagens tema Virtuelle metoder som er det samme som Polymorfi Mer om arv / interface Mer om pekertilordninger
DetaljerINF NOV PARALLELL SORTERING. Arne Maus, PSE, Ifi
INF2220-2. NOV. 2017 PARALLELL SORTERING Arne Maus, PSE, Ifi 2 Dagens forelesning Hva er et parallelt program med tråder (i Java) Typer av parallelle programmer her vil vi ha raskere programmer Hva er
DetaljerFra problem til program
Fra problem til program Gitt et problem, hvordan går man fram for å programmere en løsning? UML klassediagrammer Enhetstesting Dokumentasjon Som student ønsker vi oss et program som kan holde oversikt
Detaljer2 Om statiske variable/konstanter og statiske metoder.
Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 13. juni 2006 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 5
DetaljerEksempler på ikke-blokkerende systemkall:
Blokkerende systemkall Thread-modeller Thread-modeller Blokkerende systemkall Viktigste grunn for tråder: blokkerende I/O forespørsler Applikasjonen som ber om I/O blir satt på vent av operativsystemet
DetaljerStein Gjessing, Institutt for informatikk, Universitetet i Oslo
INF1010 Våren 2015 Feilsituasjoner og unntak i Java (Engelsk: Exception) Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Jeg prøvde å bestille billett med Air France:
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: December 16th. 2005 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 11 sider. Vedlegg: INF3140/4140 Models of Concurrency
Detaljer