Realtidssystem. - Monitorer, synkroniserade metoder - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp
|
|
- Marcus Lindgren
- för 9 år sedan
- Visningar:
Transkript
1 Realtidssystem - Monitorer, synkroniserade metoder - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt EDA698 (Mats Lilja) 1
2 Dagens agenda Recap: Synkronisering / ömsesidig uteslutning med hjälp av semaforer Monitorer Monitorprincipen - objekt med inbyggd ömsesidig uteslutning Monitorer i Java - synchronized, wait & notify 2
3 Dagens agenda Recap: Synkronisering / ömsesidig uteslutning med hjälp av semaforer Monitorer Monitorprincipen - objekt med inbyggd ömsesidig uteslutning Monitorer i Java - synchronized, wait & notify 3
4 Semafor - basfakta Semaforer utgör en minimal mekanism för ömsesidig uteslutning En semafor är egentligen bara en integer-variabel med två metoder, take() och give(): class SemaphorePrinciple { int count; public void take() { while( count < 1) suspend executing thread // here, currentthread() is used! --count; public void give() { if( any thread suspended ) resume the first one in queue ; count++; OBS 1: take och give är odelbara (atomic) operationer, som kräver systemsupport när de ska implementeras (t ex deaktivera hårdvaruinterrupts). OBS 2: take blockerar den anropande tråden sålänge count == 0. Detta kan inte implementeras i vanlig Java-kod. 4
5 Typer av semaforer I LJRT-paketet finns basklassen Semaphore, med subklasser MutexSem och CountingSem. MutexSem - MutualExclusion semaphor: Den som tar flaggan får jobba med gemensamma resurser, den som vill ha den samtidigt, får vänta (blockeras). MutexSem har ett test inbyggt så at det säkerställs att samma tråd anropar take och give i följd. Det finns bara en flagga att ta från början. CountingSem - Counting semaphor, signaling: Den som gör plats / en resurs tillgänglig, signalerar genom att lägga en flagga på högen, den som vill utnyttja en resursplats tar en flagga från högen. Finns inga fria flaggor, måste den som vill ha en vänta. Antalet flaggor kan variera eller vara 0 från början. 5
6 Semaforer - användning i kod Tråd A: Tråd B: Mutual exclusion (ömsesidig uteslutning)... mutex.take(); *** mutex.give(); mutex.take(); *** mutex.give();... Signaling (signalering)... buffer.give(); buffer.take();... Rendezvous... entry.give(); *** exit.take(); entry.take(); *** exit.give();... 6
7 Java, LJRT och andra språk Semafor-mekanism finns på ett eller annat sätt tillgänglig i ALLA programmeringsspråk som har stöd för concurrency se.lth.cs.realtime.* används i kursen dels av kompatibilitetsskäl (t ex väckarklockan), dels av historiska skäl Numera erbjuder också Standard -Java ett eget concurrency-paket som fungerar på ett sätt väldigt likt vårt Metoder, taggar eller tillämpningsmekanismer kan vara olika, men den underliggande principen är samma för alla - Java och ljrt-paketet används som praktiskt exempel 7
8 Signalera med en sorts signal Patienten på rummet behöver hjälp och trycker på signalknappen - lampan utanför rummet tänds och larmet i expeditionen går. (signal.give()) Sjuksköterskan kommer in i rummet och slår av signalen - lampan och larmet släcks och alla utanför vet att problemet åtgärdas - ingen annan behöver eller ska komma och hjälpa. (signal.take()) Detta kan hända på flera rum samtidigt, eller med korta mellanrum. Sålänge det finns sjuksköterskor kan de ta över rum efter rum, sen måste kanske en patient vänta lite längre. Om ingen larmar, måste sjuksköterskorna vänta på nästa problem att lösa. (signal.give() + signal.give() + signal.take() + signal.give() + signal.take() + signal.take()) X
9 Signalera med två olika signaler Chefen och Sekreteraren har ett postfack för att överlämna dokument till varandra, egentligen är det dock bara Sekreteraren som lägger dit dokument, och chefen som hämtar ut dem därifrån. I facket får det enbart ligga ett dokument åt gången. Sekreteraren ser att facket är tomt genom att en tom -lampa lyser på hennes kontor. Han går till facket, lägger dit ett dokument som chefen måste signera, och trycker på en knapp som släcker tom -lampan och sedan slår på en det finns ett dokument -lampa på chefens kontor. (free.take() + avail.give()) Chefen ser lampan, kommer till facket, tar dokumentet, släcker det finns ett dokument - lampan och slår på tom -lampan hos sekreteraren. (avail.take() + free.give()) X
10 Dagens agenda Recap: Synkronisering / ömsesidig uteslutning med hjälp av semaforer Monitorer Monitorprincipen - objekt med inbyggd ömsesidig uteslutning Monitorer i Java - synchronized, wait & notify 8
11 Semaforer och komplexa program Tråd A Tråd B Tråd C Tråd D take / give take / give take / give take / give Mutex Data / resurs Give / Take sprids över alla trådar, anknytningar blir många, det hela blir komplext och svårt att genomskåda för att hitta fel eller verifiera. (Jfr övning 1, uppgift 1 + 3). 9
12 Från semafor till monitor / The buffer. / class Buffer { Semaphore free; Semaphore avail; String buffdata; // For buffer full blocking. // For blocking when no data is available. // The actual buffer. Buffer(){ free = new CountingSem(1); avail = new CountingSem(); void putline( String input) { free.take(); buffdata = new String(input); avail.give(); String getline(){ avail.take(); String line = buffdata; free.give(); return line; // Wait for buffer empty. // Store copy of object. // Allow others to get line. // Wait for data available. // Store copy of object. // Allow others to put line. Buffer är ett passivt objekt (ingen tråd), som skyddar sina metoder / attribut för hantering genom olika trådar - i princip en monitor (jfr övning 1, uppgift 2, och labb1) 10
13 Monitor - koncept I OOP använder vi oss av klasser, dvs datastrukturer som tillhandahåller egna metoder för hanteringen av interna data-attributer, för att garanterar kapsling och korrekt hantering. Klasser, som inte bara har metoder, men implementerar metoder så att attributer / kritiska sekvenser blir skyddade vid hantering genom olika trådar, kallas för monitor Metoder som class Account { //... void deposit(int a){ mutex.take(); balance += a; mutex.give(); implementerar monitor-konceptet genom användning av semaforer 11
14 Monitorer och komplexa program Tråd A Tråd B Tråd C Tråd D metod X metod X metod X metod X Data / resurs metod X { take / give Mutex Give / Take hanteras inuti det passiva objektet. Trådarna anropar metoden som de behöver utan att behöva bry sig om den gemensamma hanteringen av data / resurser. 12
15 Programmeringsspråk - stöd för monitorer Problem: Att använda semaforer i en monitor kräver fortfarande (för mycket) disciplin. Idé: Erbjuda stöd genom speciella språk-konstruktioner Olika grader av stöd i olika språk: Inget stöd (C / C++): Direkta anrop till biblioteksfunktioner. Objekt-orientering kan förenkla användningen. Explicit per metod ( Java): Deklarerade egenskaper av metoder ( med både språkoch run-time stöd) Implicit per task ( Ada): Deklarerade egenskaper av klasser, som överförs implicit till alla attributer och metoder i klassen Inget stöd resulterar i mera komplicerade programmering. Implicit språk-stöd är säkrast och enklast, men kan leda till begränsningar ( resurser...). Java-ansatsen ( explicit och optional deklaration av metoder med inbyggd ömsesidig uteslutning) är en pragmatisk lösning till problemet. 13
16 Monitorer i Java - synchronized Kritisk sekvens / kod-block / metod är markerad med nyckelordet synchronized Ett litet bakslag: Vare sig klasser eller attribut can deklareras synchronized, det krävs alltså lite disciplin när man implementerar metoderna i en klass! Monitor-konceptet uttryckt med Javas monitor-mekanism: class Account { //... public synchronized void deposit( int a){ balance += a; 14
17 Objektkategorier Enkelt passivt objekt Trådsäker genom att ha metoder som är reentrant (dvs, som inte hanterar klassattribut, t ex java.lang.math) Explicit icke trådsäker; får bara användas av en enda tråd (java.util.hashset) Implicit icke trådsäker; måste antas om inte dokumenterad Monitor-objekt Metoder som implementerar ömsesidig uteslutning, t ex genom synchronized Borde vara passivt; blanda INTE monitorer och trådar! Tråd-objekt Aktivt objekt ( efter start(), innan det avslutas); driver exekveringen av metoder i passiva objekt Don t call me, I ll call you! (bortsett från meta-metoder som t ex start() och join()) 15
18 Detaljer (för specialistbruk ;-) Nämns här, men mera förklaring finns i kompendiet! Atomic access: Vissa datatyper kan förväntas hanteras med odelbara operationer, detta betyder dock inte att det är säkert att hantera dem utan synkronisering! Nyckelordet volatile: används för att visa att (osynkroniserade) attribut i en klass kan hanteras från flera trådar och som då inte får producera skräp i registerna private och final borde användas när man vill hantera osynkroniserade attribut någorlunda trådsäker - annars vet man inte vad en subklass kommer att göra monitor-egenskapen (synchronized) blir inte nedärvd! Man kan lämna ut ett internt lås-objekt för extern synkronisering X
19 Användningsregler Blanda INTE tråd och monitor i samma klass!!! I en monitor: ALLA metoder som deklareras public borde vara synchronized Tråd-osäkra klasser kan och BORDE paketeras i en monitor (wrapper class) Använd INTE (utspridda) synchronized kod-sekvenser (detaljer i kompendiet!) 16
20 Samtidigt, men med olika krav synchronized erbjuder ömsesidig uteslutning - räcker det för resurshantering? Cafeteria Pasta Nu finns är tillfälligt det Pasta! slut Mums, jag kan gå, då Tog en macka, kan gå ändå! Vi vill beställa Jag vill ha... Idag: - mackor - pasta Vi Bra, väntar då på går pasta vi och hämta maten 17
21 synchronized - wait - notify synchronized wait notify Condition queue (krav-kö) Objektet ska inte bara låsas < för exklusivt tillgång genom en tråd (mutex), 2 det ska också öppnas tillfälligt för att kolla om vissa krav uppfylls, alltså att #6 någon meddelar (signal) att tillståndet har förändrats./ 3#1 Låset hanteras med synchronized, 45 signalering med hjälp av wait och notify #+ En tråd #6 som väntar # på monitorn efter wait / notify måste dock inte vara den första som faktiskt får tillgång (kolla krav igen!) Tråden som är i monitorn slängs inte ut genom ett avbrott, den får parkera sig där. synchronized(.){ * & & ()(!!"# "! D wait notify * &# * & & & 18
22 Cafeteria med synchronized, wait och notify synchronized wait notify Kö för att kunna beställa eller hämta beställt mat - synchronized ordnar med ömsesidig uteslutning, bara en kan prata med personalen. < 2 #6 Den som står vid./ disken frågar om 3#1 maten hon vill ha 45 finns, dvs beställer #+ #6 # Den som vill ha mat som är tillgängligt får det och kan gå synchronized(.){ * & & ()(!!"# "! D wait notify * &# * & & & Pasta finns inte just nu och personen får en röd väntebricka (wait()). När brickorna blir gröna (notify()) kan man ställa sig i kö igen för att hämta ut maten De med röda brickor väntar på att brickorna blir gröna 19
23 Exempel: Hiss Personer kommer till hissen slumpmässigt Exercises and Lab Preparations RTP med knapptryck meddelar de hissen, att de vill åka från ett ställe hissen rymmer enbart ett visst antal personer personer väntar på att hissen kommer, och har plats i hissen trycker man på en knapp för att visar vart man vill åka personer i hissen väntar på att hissen når rätt våning den enkla hissen åker från våning 0 till våning 6 och tillbaka hela tiden, med uppehåll vid varje våning hissen väntar vid varje våning på att alla som vill kan gå av och (i mån av plats) på. Lab 2 Lift In this lab you are going to implement the lift simulation prepared in the previous exercise. Preparation It is generally a good idea to start programming before the lab occasion. The handout code is available on the course homepage as a zipped Eclipse workspace (it is part of the same zip you downloaded for lab 1). 20
24 Exempel: Hiss - många med olika krav, en resurs, en motor - På våningarna: kö för att kunna trycka på knappen På våningen, framme vid + kö för att kunna kliva på när hissen är på rätt våning hissen: Trycka synchronized på wait notify knappen, kolla om I hissen: vänta tills man kan lämna (dörren är fri) hissen är där och det < * & finns plats i den synchronized(.){ 2 I hissen: #6 trycka på./ Hissen: När den knappen för våningen 3#1 kommer till en ny man vill åka till, kolla om * & 45 våning, meddelas & hissen är där man vill åka till #+ detta till de som notify #6 # väntar wait & & På våningen: vänta * &# I hissen: har man tills hissen kommer nått våningen man vill åka till, kliver man av (när dörren är fri) ()(!!"# "! D På våningen: Hissen är inte där, eller har inte plats I hissen: rätt våning är inte nått I hissen: vänta på att hissen når rätt våning 21
25 Exekveringstillstånd (tredje gången gilt!) Due to scheduler / kernel / OS Running Priority, time-sharing Ready Due to application By this : wait, synchronized call Blocked By other: notify, synchronized return Schemaläggningstillstånd (scheduling state) Running Ready (annan tråd returnerar från synchronized metod, eller anropar notify() / notifyall()) Blocked (tråden själv anropar synchronized metod, eller wait() i metoden) 22
26 notify glöms bort Semaforer har tillstånd Notification har INGET tillstånd Jämför Jämför P1 P2 P1 P2 * s.take(); * * * * s.give(); * * wait(); * * * * notify(); * med med P1 P2 P1 P2 * * s.take(); * * s.give(); * * * * wait(); * * notify(); * * P1 fortsätter i båda fallen, då s interna tillstånd förändras med give P1 väntar tills nästa notify... och väntar...; notify glöms bort om det inte finns någon tillstånds-variabel i monitorn (dvs, i den egna koden) 23
27 notify() Vem ska väckas? notify() eller notifyall() Väcker upp en tråd åt gången, dvs den som är nästa tråd att köra Nästa tråd att köra avgörs från schemaläggaren efter prioriteter, turordning, osv beroende på schemaläggningspolicyn Svårt att avgöra om man faktiskt väcker rätt tråd, om man vet att en viss sådan väntar på en viss update i monitorn Borde användas enbart om man verkligen behöver det för att dra upp prestationen notifyall() Väcker alla trådar som väntar på att ett krav uppfylls Trådarna sorteras för CPU-tillgång och får sen tävla om tillgång till monitorn, som ju också är skyddad med synchronized Enkelt och säkert att använda, alla som behöver det får en notify Borde väljas som standard, framförallt i den här kursen! 24
28 Den ursprungliga monitorn (Hoare, 1974) Hoare definierade en monitor med följande egenskaper: Immediate resumption: Direkt återupptagande av väntande tråd - tråden som väcks tar kontrollen med en gång notify måste vara sista operation, bara en tråd väcks Kravtestet kunde formuleras som: if (!ok) wait(); Tråden som gör notify garanterar att kraven som andra väntar för uppfylls Det går enkelt att bevisa att det inte kan förekomma svält (starvation) Hanterar inte prioriteter för blockerade trådar Monitor-kö kan vara FIFO eller (att föredra) prioritetsbaserad X
29 Vår realtids-monitor Vi antar följande egenskaper: Högt prioriterade trådar borde hanteras först, också om andra har väntad längre (det blir en accepterad risk för svält, dock) Det är inte garanterad att tråden som väcks får exekveras direkt (beror på OS/ schemaläggaren) Kravet som en tråd väntar för måste inte nödvändigtvis uppfyllas när tråden väl kommer fram till exekvering och också monitorn Kravtestet måste formuleras som: while(!ok) wait(); notifyall() ska användas för att undvika problem (väcker alla, helt enkelt) notify måste inte vara sist i metoden När en tråd efter wait() / notify() går före dem med samma prioritet + notify kommer sist + det finns bara en prioritet: Likvärdigt med Hoare-monitor! X
30 En (riktigt) dålig buffer class MyBuffer { //... public synchronized void post( String text){ if( bufferfull) wait(); buffdata[nexttoput] = new String( text); bufferempty = false; if( ++numoftextbits >= maxnumoftexts) bufferfull = true; if( ++nexttoput == maxnumoftexts) nexttoput = 0; notifyall(); public synchronized String fetch(){ if( bufferempty) wait(); String res = buffdata[nexttoget]; buffdata[nexttoget] = null; bufferfull = false; if( --numoftextbits < 1) bufferempty = true; if( ++nexttoget == maxnumoftexts) nexttoget = 0; notifyall(); return res; if (...) wait(); gör det hela väldigt ostabilt, om någon annan tråd kommer emellan kan eventuellt kravet inte vara uppfyllt efter wait() ändå, eftersom alla (producers) väcks! X
31 Mycket bättre class MyBuffer { //... public synchronized void post( String text){ while( bufferfull) wait(); buffdata[nexttoput] = new String( text); bufferempty = false; if( ++numoftextbits >= maxnumoftexts) bufferfull = true; if( ++nexttoput == maxnumoftexts) nexttoput = 0; notifyall(); public synchronized String fetch(){ while( bufferempty) wait(); String res = buffdata[nexttoget]; buffdata[nexttoget] = null; bufferfull = false; if( --numoftextbits < 1) bufferempty = true; if( ++nexttoget == maxnumoftexts) nexttoget = 0; notifyall(); return res; while (...) wait(); gör buffer robust ifall någon annan tråd kommer emellan och ändrar tillståndet i monitorn, men det är lite onödigt ofta att notify anrops! X
32 class MyBuffer { Riktigt bra (och effektivt) //... public synchronized void post( String text){ while( bufferfull) wait(); buffdata[nexttoput] = new String( text); if( bufferempty) { notifyall(); bufferempty = false; if( ++numoftextbits >= maxnumoftexts) bufferfull = true; if( ++nexttoput == maxnumoftexts) nexttoput = 0; public synchronized String fetch(){ while( bufferempty) wait(); String res = buffdata[nexttoget]; buffdata[nexttoget] = null; if( bufferfull) { notifyall(); bufferfull = false; if( --numoftextbits < 1) bufferempty = true; if( ++nexttoget == maxnumoftexts) nexttoget = 0; while (...) wait(); gör buffer robust ifall någon annan tråd kommer emellan och ändrar tillståndet i monitorn, samt är effektivt - kan dock leda till svält! X
33 För special(ist)bruk (_kan_ fungera bra!) class MyBuffer { //... public synchronized void post( String text){ if( bufferfull) wait(); buffdata[nexttoput] = new String( text); if( bufferempty) { notify(); bufferempty = false; if( ++numoftextbits >= maxnumoftexts) bufferfull = true; if( ++nexttoput == maxnumoftexts) nexttoput = 0; public synchronized String fetch(){ if( bufferempty) wait(); String res = buffdata[nexttoget]; buffdata[nexttoget] = null; if( bufferfull) { notify(); bufferfull = false; if( --numoftextbits < 1) bufferempty = true; if( ++nexttoget == maxnumoftexts) nexttoget = 0; if (...) wait(); gör buffern instabil ifall någon annan tråd kommer emellan och ändrar tillståndet i monitorn, notify istf notifyall fångar upp det till en viss grad, men man måste känna sitt system väldigt bra! X
34 Synchronized, wait() & notifyall() class Cafeteria { int awaitingfood[]; //... synchronized void refillfood( FoodPortion freshfood, int foodtype){ while( foodsupply[foodtype].portionsleft() >= awaitingfood[foodtype]) { wait(); if( foodsupply[foodtype].isempty()) notifyall(); foodsupply[foodtype].add( freshfood); //... synchronized FoodPortion orderandfetch( int foodtype){ awaitingfood[foodtype]++; // whenever there is a state change, call notifyall() notifyall(); while( foodsupply[foodtype].isempty()) { wait(); if( foodsupply[foodtype].portionsleft() < awaitingfood[foodtype]) notifyall(); awaitingfood[foodtype]--; return foodsupply[foodtype].takeportion(); 25
35 Monitor == Semafor (?) Semaforer och monitorer är likvärdiga! Semaforer (åtminstone på programtråd-nivå) kan bli (och är i standard-java) implementerade genom att använda en monitor med metoderna give() och take() Monitorer kan implementeras med hjälp av semaforer, åtminstone för ett känt antal trådar, genom att använda en MutexSem på monitor-objektet och en CountingSem för varje tråd som vill ha tillgång till monitor-objektet. Därmed kan man alltid överföra den ena mekanism i den andra (om än möjligen på ett ganska krångligt sätt). Beroende på problemet man vill lösa, ska man välja rätt ansats. Pragmatiskt här i kursen: Väckarklocka - använd semaforer, Hiss - använd monitor (synchronized - wait - notify) 26
36 Övning 3 Behandlar monitorer - en uppgift har liknande moment som laboration 2, testa gärna vid datorn innan övningstillfället - övningsuppgifterna bearbetas av er under övningstiden - introduktion lab 2 27
37 Dagens resultat Semaforer på återseende Monitor-begreppet monitorer i Java: synchronized - wait - notify Exempel för användning av monitorer Regler och tips för monitorer och mekanismerna synchronized, wait, notify Kunna hantera övning 3 och 4, samt laboration 2 Kunna använda både semaforer och monitorer i enkla program (matkö - jfr buffer) Lästips: e-bok: Kap5 (avsnitt 5.6 och 5.7, s , Monitors / Summary) kompendium: Kap 2-3 ( Monitors) 28
Realtidssystem. - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 2
Realtidssystem - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 2 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad
Realtidssystem. - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-02
Realtidssystem - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-02 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt EDA698
Realtidssystem. - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 5
Realtidssystem - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 5 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad på: Föreläsningsmaterial
Trådar. Aktiva objekt
Föreläsning 11 Trådar 1 Aktiva objekt Det är välkänt från vardagslivet att saker händer samtidigt. Aktiva objekt gör saker på eget initiativ, medan passiva objekt endast gör saker när de blir ombedda.
Exam Concurrent and Real-Time Programming
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Exam Concurrent and Real-Time Programming 2018 08 23, 14.00 19.00 1. Vad är prioritetsinversion? Illustrera med ett enkelt exempel. Redogör
Föreläsning 15: Parallella subrutiner. Parallellitet. Varför parallella underprogram?
Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden Parallellitet Ofta är det nödvändigt eller önskvärt att programdelar exekveras
Objektorienterad Programkonstruktion. Föreläsning dec 2015
Objektorienterad Programkonstruktion Föreläsning 12 14 dec 2015 Parallella Problem I program med flera parallella exekveringstrådar kan det uppstå problem, fel och andra fenomen som inte förekommer i enkeltrådade
Realtidssystem. - Meddelanden och händelsehantering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 4
Realtidssystem - Meddelanden och händelsehantering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 4 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad
Concurrency Saker händer samtidigt. Process En instans av ett program
Concurrency Saker händer samtidigt Hur gör vi flera saker samtidigt på en dator? - Dela på en CPU - Flera CPU Flera processer på en dator. Operativsystemet (OS) tilldelar dem körtid (time slices, prioritet)
Tentamen Lösningar EDA698 Realtidssystem
LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen Lösningar EDA698 Realtidssystem 13 10 22, 14:00 19:00 1. Prioriteter, korrekthet a) Realtidsproblemet kvarstår. Det finns ingen garanti
Tentamen EDA698 Realtidssystem (Helsingborg)
LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen EDA698 Realtidssystem (Helsingborg) 2014 10 28, 14.00 19.00 Det är tillåtet att använda Java snabbreferens och miniräknare, samt ordbok.
Realtidssystem. - Introduktion, jämlöpande exekvering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 1
Realtidssystem - Introduktion, jämlöpande exekvering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 1 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar
Synkronisering. Ordning och reda
Synkronisering Ordning och reda Banköverföring struct account { int balance; char* owner; }; struct account account[ NUM_ACCOUNTS ]; bool transfer( int amount, unsigned from, unsigned to ); 2 Banköverföring
Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized.
2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized. previous next Java Java är konstruerat på
Realtidssystem. - Introduktion, jämlöpande exekvering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 1
Realtidssystem - Introduktion, jämlöpande exekvering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 1 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage)
Fö 5+6 TSEA81. Real-time kernel + Real-time OS
Fö 5+6 TSEA81 Real-time kernel + Real-time OS Stackens användningsområde * JSR / RTS : returadress * Temporärdata (push / pop) void myfunc(void) { int i; // hamnar nog i register int test[10]; // hamnar
Tentamen Nätverksprogrammering Lösningsförslag
LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2012 05 28, 8.00 13.00 Del 1 1. Time To Live (TTL) anger hur många routrar ett multicastpaket
Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016
Objektorienterad Programkonstruktion Föreläsning 2 2 nov 2016 Objekt - klass Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 Objekt - klass Objekt - klass Objekt - klass + Objekt - klass public class
Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013
DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013 Innehåll Trådar i Java swing- klassen Timer Klient-Server-program Trådar Tråd = enkel process Ett program kan ha flera trådar, flera
Summering av fält. Synkronisering. Summering av fält. Bounded Buffer. Bounded Buffer (get) Bounded Buffer (put)
Summering av fält Synkronisering Ordning och reda function sum_low is begin for i in 0..999_999_999 sum += array[i] end sum_low function sum_high is begin for i in 1_000_000_000..1_999_999_999 sum += array[i]
Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java
DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/4 2014 Innehåll Kort om Javas Exceptions Trådar i Java swing- klassen Timer Klient-Server-program Javas Exceptions Checked måste hanteras,
Mekanismer. (implementation)
Mekanismer (implementation) Repetition Semafor Räknar tillgängliga resurser Initieras med startvärde Vid förbrukning: väntar tills resurs finns Användning: invänta händelse Lås Markerar att en variabel/datastruktur
Föreläsning 8: Exempel och problemlösning
TDA 545: Objektorienterad programmering Föreläsning 8: Exempel och problemlösning Magnus Myréen Chalmers, läsperiod 1, 2015-2016 De tre senaste föreläsningarna Läsanvisning: kap 2 & 13 meddelanden och
F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander
F9 - Polymorfism ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Polymorfism - flerformighet Vi vet vad metoden heter (signaturen) Men vi vet inte vid anropet exakt vilken metod som faktiskt
Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp
Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser
Synkronisering - Semaforen. Om att vänta men inte i onödan
Synkronisering - Semaforen Om att vänta men inte i onödan Dörrvakten Har order uppifrån pga brandregler: Släpp in max 40 personer Garanterar att det aldrig är fler insläppta än order angivit Kommer fler
Tentamen Datastrukturer (DAT037)
Tentamen Datastrukturer (DAT07) Datum och tid för tentamen: 2016-01-09, 14:00 18:00. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker tentamenssalarna ca 15:00 och ca
Classes och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
OOP Objekt-orienterad programmering
OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym
Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal
Tentamen DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl 14.00 17.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna
OOP Objekt-orienterad programmering
OOP F10:1 OOP Objekt-orienterad programmering Föreläsning 10 Mer om arv och klasshierarkier Interface Hierarkier - många nivåer OOP F10:2 Djur Rovdjur Hovdjur Fåglar Fiskar Björn Kattdjur Ko Lamm Hjort
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
9 Aktiva objekt och trådar
9 Aktiva objekt och trådar Skansholm kap 13 arallella program, processer och trådar Aktiva Swing-komponenter Trådar i Java Synkronisering Trådar och Swing arallella program och processer De flesta operativsystem
Summering av fält 1.1. Synkronisering - Semaforen. Summering av fält 1.3. Summering av fält 1.2. Summering av fält 2.3 (INTE GK)
Summering av fält 1.1 Synkronisering - Semaforen Om a6 vänta men inte i onödan Vi har en stor array: int array[2_000_000_000] Vi har variabler för a6 lagra summor och delsumor av arrayen. Dessa iniferas
OOP Objekt-orienterad programmering
OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public
725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack
725G61 - Laboration 7 Implementation av ett API Johan Falkenjack December 13, 2013 1 Inledning Hittills i kursen har vi tittat på grundläggande programmering och grundläggande objektorientering. I den
Realtidssystem. - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6
Realtidssystem - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 6 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad på: Föreläsningsmaterial
Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.
Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen
Tentamen Datastrukturer (DAT036)
Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2013-12-16, 14:00 18:00. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker tentamenssalarna ca 15:00 och
Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006
Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006 Detta lösningsförslag är skrivet i stor hast, så det är möjligt att det innehåller en del slarvfel jag ber i så fall om ursäkt för
Programmering A. Johan Eliasson johane@cs.umu.se
Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer
Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/
Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller
F4. programmeringsteknik och Matlab
Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner
Tentamen Nätverksprogrammering Lösningsförslag
LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2018 04 11, 8.00 13.00 Del 1 1. a) IP-numret identifierar en enskild dator på internet. b) Port-numret
Föreläsning REPETITION & EXTENTA
Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket 1 Länkade listor Likadant som i Ada-kursen. 2 Stack MyStack MyStack
Realtidssystem. - Schemaläggning - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6
Realtidssystem - Schemaläggning - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 6 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt EDA698 (Mats Lilja)
2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning
2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten
Länkade strukturer. (del 2)
Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion
Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel
Programmeringsteknik för Bio1 och I1 Övning 2 Kort repetition Övningsgrupp 3 (Sal E33) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1310/
Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2012-03-14 Skrivtid: 0800-1100 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till
Trådar i Java. Johan Ånäs. Seminarieuppsats Institutionen för informationsbehandling Åbo Akademi
Trådar i Java Johan Ånäs Seminarieuppsats Institutionen för informationsbehandling Åbo Akademi Sammandrag I dagens samhälle är vi alla bekanta med att man kan köra flera tjänster och applikationer samtidigt.
DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin
DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:
Operativsystem - Processkommunikation
Operativsystem - Processkommunikation Mats Björkman 2015-01-26 Innehåll Processer (föreläsning 2) Processmodell Processtillstånd Trådar Processkommunikation (föreläsning 3, den här) Semaforer Monitorer
Tentamen, EDAA20/EDA501 Programmering
LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Tentamen, EDAA20/EDA501 Programmering 2011 10 19, 8.00 13.00 Anvisningar: Denna tentamen består av fem uppgifter. Preliminärt ger uppgifterna
Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2
AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga
Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016
Objektorienterad Programkonstruktion Föreläsning 11 6 dec 2016 Föreläsningen 13/12 Halvtidsrepetition Maila frågor som ni vill att jag tar upp! ccs@kth.se Processer Vad vi i dagligt tal menar när vi pratar
1.1 Runnable och Thread
1 Trådar 1.1 Runnable och Thread I övningen är ShoutThread hårdkodad att använda just ShoutRunnable. Det typiska förfarandet brukar annars vara att skicka över din Runnable i konstruktor-anropet till Thread:
TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P
UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr
Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo
Objektorienterade språk Historik Simula 67 Smalltalk 80 Procedurorienterad programmering Subprogram Programbibliotek Dataorienterad programmering Abstrakta datatyper Objektbaserade språk, föregångare till
Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
Objektsamlingar i Java
1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)
Typkonvertering. Java versus C
Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då
TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS
TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS 180226 Idag (ADT), OOP i Racket, labb 5 2 Allmän info Duggan. Laboration 4 deadline. Planering framöver Muddy cards (nästa timme) 3 Lite repetition ADT
Föreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:
Parallellism, återblick
Parallellism, återblick Josef Svenningsson December 11, 2012 Lab7 Det är problem med lab7. Gå med i den grupp som ni använt tidigare. DEMO Flera saker händer samtidigt Ofta hanterar program olika indata
Metoder (funktioner) Murach s: kap Winstrand Development
(funktioner) Murach s: kap 6 2013-01-23 1 Winstrand Development Metoder I C# kan vi dela in koden i block en kodsekvens ska köras likadant på flera ställen i applikationen. Detta block kallas för en metod
Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2
Övning vecka 6. TDA550 - Objektorienterad programvaruutveckling IT, fk Denna vecka ska vi titta på undantag, testning, generiska enheter, samlingar och designmönstret Iterator. Uppgift 1 Exceptions a)
Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning
Översikt Uttryck i tilldelningssatser Typer och typomvandling Klasser Metoder Konstanter Eclipse-tips MERA JAVA OCH ECLIPSE Institutionen för datavetenskap Programmering 1 Rita Kovordányi 2 public class
/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.
* * Lösningsförslag tentamen DIT950 * Datum 150317 * * -1 - För samtliga gäller,se föreläsningsanteckningar. * - 2 - (Diagram visas inte, kontakta mig för ev frågor) // a C c = new A(); // Compile! Sub
Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID
Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID Vad gör vi här? Programmeringsteknik fördjupningskurs (EDAA01; 7,5hp) Valfri för F, N & BME (kan läsas från åk 2 eller i sommar!) Avancerad
TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina
Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.
-Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och
Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Institutionen för elektro- och informationsteknologi, LTH
Datorteknik Föreläsning 5 Realtidssystem och realtidsprogrammering Mål Att du ska förstå hur avbrott används för - Mätning - Styrning - Stöd för körning av flera processer Att du ska förstå begreppet tråd
Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.
Datorteknik Föreläsning 5 Realtidssystem och realtidsprogrammering Mål Att du ska förstå hur avbrott används för - Mätning - Styrning - Stöd för körning av flera processer Att du ska förstå begreppet tråd
Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)
Outline för D2, ICT2, E3 och Mek3 Nicholas Wickström Högskolan i Halmstad Sverige p.1/18 Förra föreläsningen Specifikation -Kravspecifikation -Funktionsspecifikation -Blockdiagram Operativsystem -Grunder,
Kopiering av objekt i Java
1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom
Tentamen Nätverksprogrammering Lösningsförslag
LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2008 05 26, 8.00 13.00 1. a) Raden sent = input.read(buffer); läser in så många bytes (dock max
Trådar. Motivering. Många program måste kunna hålla på med flera saker samtidigt, till exempel. fleranvändarsystem.
Motivering Uppsala Universitet 21 april 2005 Många program måste kunna hålla på med flera saker samtidigt, till exempel fleranvändarsystem en webserver som måste kunna leverera flera websidor samtidigt
Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42
Programmering i C++ EDA623 Arv EDA623 (Föreläsning 6) HT 2013 1 / 42 Arv Innehåll Härledda klasser Konstruktorer och destruktorer vid arv Tillgänglighet Polymorfism och dynamisk bindning Abstrakta klasser
Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private
Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall
Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }
En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class
Föreläsning 4 Innehåll
Föreläsning 4 Innehåll Abstrakta datatypen lista Datastrukturen enkellänkad lista Nästlade klasser statiskt nästlade klasser inre klasser Listklasser i Java Implementera abstrakta datatyperna stack och
Fö 5+6 TSEA81. Reflektion av Lab 2. clock.c (module) Real-time kernel + Real-time OS
Fö 5+6 TSEA81 Real-time kernel + Real-time OS Reflektion av Lab 2 main.c void * clock_task(void *unused) int hours, minutes, seconds; while(1) clock_get_time(&hours,&minutes,&seconds); display_time(hours,minutes,seconds);
Klassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34
Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger
Beijer Electronics AB 2000, MA00336A, 2000-12
Demonstration driver English Svenska Beijer Electronics AB 2000, MA00336A, 2000-12 Beijer Electronics AB reserves the right to change information in this manual without prior notice. All examples in this
Sätt att skriva ut binärträd
Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer
Fö 7 TSEA81. Scheduling
Fö 7 TSEA81 Scheduling Reflektion Lab 3 Operation Linux Simple OS * wait pthread_mutex_lock si_sem_wait * signal pthread_mutex_unlock si_sem_signal * await pthread_cond_wait si_ev_await * cause pthread_cond_broadcast
Synkronisering. Föreläsning 8
Synkronisering Föreläsning 8 Synkronisering Så stort, intrikat och viktigt att det finns hela kurser om det i parallellprogrammering. Vi fuskar lite med några av de viktigaste bitarna! Synkronisering Vad
Laboration A Objektsamlingar
Laboration A Objektsamlingar Avsikten med laborationen är att du ska träna på att använda ett par objektsamlingar. Uppgift 1 Titta genom föreläsningsunderlaget DA129AFAHT07.pdf och testkör exemplen (se
Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg
Loopar och upprepning Vill man upprepa kod flera gånger så istället för att skriva en massa rader så kan man lägga koden i ett kodblock som man sedan loopar. Det finns ett par olika typer av loopar, FORloop,
Föreläsning 1, vecka 6: Abstraktion genom objektorientering
TDA 548: Grundläggande Programvaruutveckling Föreläsning 1, vecka 6: Abstraktion genom objektorientering Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Hur skulle ni implementera detta? (3D demo) Vi återkommer
Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)
Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar