Forord. Produktrapport

Størrelse: px
Begynne med side:

Download "Forord. Produktrapport"

Transkript

1

2 Forord Produktdokumentasjonen omhandler sluttproduktet gruppen har utviklet som er en samling av 32 Munin plugin som henter ut ressursbruken til en JVM instans. Prosjektarbeidet har blitt utført av Mo Amini, Diyar Amin og Younes Hajji ved Høgskolen i Oslo, avdeling for ingeniørutdanning våren Produktdokumentasjonen er ment for de som skal benytte seg av produktet eller vil vite hva som skjer under panseret. Her vil gruppen forklare med tekst, diagrammer og grafer hvordan produktet fungerer og hvordan dataene blir overført mellom de forskjellige delene av systemet. Ved å lese dette dokumentet skal leseren også bli kjent med hva som skal til for å implementere systemet i et Unix miljø. Derfor er det også forutsatt at lesere av dokumentet har sin bakgrunn innenfor IT generelt og særlig innenfor Unix installasjon og administrasjon, samt programmering generelt og særlig Java. Kommentarer og informasjon om grafer i den aktuelle pluginen vil være skrevet på engelsk da dette er synlig for administratorer fra alle land på internett. Dette er Munin standard og et praktisk valg. Leseren må derfor også forvente engelsk tekst i dokumentet. 2

3 Innhold Forord...2 Beskrivelse av produktet OperatingSystemMXBean Available processors ThreadMXBean DeadlockedThreads CurrentThreadCpuTime CurrentThreadUserTime DaemonThreadCount PeakThreadCount ThreadCount TotalStartedThreadCount RuntimeMXBean Uptime ClassLoadingMXBean LoadedClassCount TotalLoadedClassCount UnloadedClassCount MemoryMXBean HeapMemoryUsage NonHeapMemoryUsage ObjectPendingFinalizationCount GarbageCollectorMXBean CollectionCount CollectionTime CompilationMXBean TotalCompilationTime MemoryPoolMXBean Collection Usage Peak Usage Usage Kilder: Ordliste

4 Beskrivelse av produktet Produktet er en samling av 32 Munin plugin. Disse pluginene benytter seg av JMX rammeverket for å hente ut ressursbruken og annen informasjon om ønsket JVM instans. Med instans menes en Java prosess, da hver prosess har hver sin virtuelle maskin i Java og har hvert sitt sett med ressursbruk som er uavhengig av en annen Java prosess. Disse 32 pluginene kan kopieres og bli konfigurert til å hente ut ressursbruken til så mange JVM instanser som ønskelig. Det er viktig å merke seg at pluginene ikke henter ut den akkumulerte ressursbruken til Java i sin helhet på en plattform. 1. OperatingSystemMXBean Dette MXBean interfacet inneholder metoder for å hente ut informasjon fra JVM om operativsystemet den kjører på. Den inneholder også metoder for å hente ut konstanter eller andre variable som ikke lar seg plotte på grafer slik som operativsystemversjon. Disse metodene har blitt ignorert. 4

5 5

6 1.1 Available processors Denne pluginen viser antall prosessorer som er tilgjengelig for den aktuelle JVM. Dette kan være interessant å overvåke på fysiske maskiner som inneholder flere CPU. Det finnes tilfeller hvor ikke alle prosessorer blir benyttet til enhver tid. Årsaken til at denne variabelen er interessant å overvåke er at oppdragsgiveren har erfart applikasjoner som ikke utnytter alle prosessorer som er tilgjengelig for JVM til enhver tid, noe som har ført til ytelsesproblemer. OperatingSystemMXBean mxbean = ManagementFactory.newPlatformMXBeanProxy(connection, ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME, OperatingSystemMXBean.class); System.out.println("AvailableProcessors.value " + mxbean. getavailableprocessors()); 6

7 2.ThreadMXBean Dette MXBean interfacet inneholder metoder for JVM tråder. Det finnes en instans av dette interfacet for hver JVM. 2.1 DeadlockedThreads Denne pluginen viser antall tråder som er deadlocked. Dette kan være en nyttig graf for å overvåke tråder som har stoppet opp. Dersom en eller flere tråder er deadlocked og forblir deadlocked vil jobber i Java applikasjonen stoppe opp. Dersom denne har en verdi over 0 vil det være lurt å sjekke loggfiler for applikasjonen for hva som har stoppet og eventuelt restarte applikasjonen. ThreadMXBean mxbean=managementfactory.newplatformmxbeanproxy(connection, ManagementFactory.THREAD_MXBEAN_NAME, ThreadMXBean.class); System.out.print("DeadlockedThreads.value "); if(mxbean.findmonitordeadlockedthreads() == null) else System.out.println("0"); + ""); System.out.println(mxbean.findMonitorDeadlockedThreads().length 7

8 2.2CurrentThreadCpuTime Denne pluginen viser den totale CPU tiden tråden i nanosekunder (men er ikke i nanosekund nøyaktighet).dersom Java distribusjonen som er installert på systemet skiller mellom usertime og systemtime blir summen av disse returnert. ThreadMXBean threadmxbean = ManagementFactory.newPlatformMXBeanProxy(connection, ManagementFactory.THREAD_MXBEAN_NAME, ThreadMXBean.class); System.out.println("CurrentThreadCpuTime.value " + mxbean.getcurrentthreadcputime()); 8

9 2.3 CurrentThreadUserTime Denne pluginen viser CPU tiden som tråden har brukt i usermodus. Tiden er ikke nødvendigvis ikke i nanosekund nøyaktighet. ThreadMXBean mxbean = ManagementFactory.newPlatformMXBeanProxy(connection, ManagementFactory.THREAD_MXBEAN_NAME, ThreadMXBean.class); System.out.println("CurrentThreadUserTime.value " + mxbean.getcurrentthreadusertime()); Dette er tilsvarende metode som å kalle: getthreadusertime(thread.currentthread().getid()); Som ville vært ad-hoc metoden dersom man hadde kjørt koden i inneværende JVM. 9

10 2.4 DaemonThreadCount Denne pluginen viser antall kjørende tråder som er daemon tråder. Daemon tråder er tråder som er hjelpetråder for runtime miljøet. Eksempler på daemon tråder er garbage collector tråden og time handler tråden m.m. ThreadMXBean mxbean=managementfactory.newplatformmxbeanproxy(connection, ManagementFactory.THREAD_MXBEAN_NAME, ThreadMXBean.class); System.out.println("DaemonThreadCount.value "+mxbean.getdaemonthreadcount()); 10

11 2.5 PeakThreadCount Denne pluginen viser det høyeste antall tråder som har kjørt i løpet av JVM sin oppetid. Denne vil derfor øke dersom antallet øker til høyere verdi enn tidligere og vil ikke gå ned. Denne verdien kan resettes manuelt og er en alternativ måten å endre verdien til 0 uten å restarte JVM. ThreadMXBean mxbean=managementfactory.newplatformmxbeanproxy(connection, ManagementFactory.THREAD_MXBEAN_NAME, ThreadMXBean.class); System.out.println("PeakThreadCount.value "+mxbean.getpeakthreadcount()); 11

12 2.6 ThreadCount Denne pluginen vil vise antall nåværende kjørende tråder. Dette vil gjelde både daemon tråder og ikke-daemon tråder. ThreadMXBean mxbean=managementfactory.newplatformmxbeanproxy(connection, ManagementFactory.THREAD_MXBEAN_NAME, ThreadMXBean.class); System.out.println("ThreadCount.value "+mxbean.getthreadcount()); 12

13 2.7 TotalStartedThreadCount Denne pluginen vil vise antall tråder som har blitt startet siden JVM startet. Denne grafen vil i normale tilfeller vokse som en tilnærmet lineær linje med små avvik. Dersom applikasjonen blir benyttet med varierende last slik det vanligvis vil være for en applikasjon vil denne grafen øke med ulik stigningstall. For eksempel vil mange applikasjoner toppe belastning klokken 18:00 dersom det er en webapplikasjon. Årsaken kan være at personer kommer hjem fra jobb og skole og benytter seg mer av applikasjonen. Overvåking av denne grafen vil ettersom tiden går bli mindre nyttig da endringer blir mindre prosentvis og små endringer vil ikke komme frem i grafen. ThreadMXBean mxbean=managementfactory.newplatformmxbeanproxy(connection, ManagementFactory.THREAD_MXBEAN_NAME, ThreadMXBean.class); 13

14 System.out.println("TotalStartedThreadCount.value "+mxbean.gettotalstartedthreadcount()); 3. RuntimeMXBean Dette MXBean interfacet inneholder metoder for runtime for JVM. Det finnes èn instans av dette interfacet for hver JVM. 3.1 Uptime Denne pluginen viser oppetiden til JVM. Verdien som blir hentet ut er i millisekunder som senere blir gjort om til dager. 14

15 RuntimeMXBean mxbean = ManagementFactory.newPlatformMXBeanProxy(connection, ManagementFactory.RUNTIME_MXBEAN_NAME, RuntimeMXBean.class); System.out.println("Uptime.value " + mxbean.getuptime()/(1000*60*60*24)); 15

16 4. ClassLoadingMXBean Dette MXBean interfacet inneholder metoder for klassesystemet til en JVM. Det finnes en instans av dette interfacet for hver JVM. 16

17 4.1 LoadedClassCount Denne pluginen viser antall klasser som er lastet inn i JVM. ClassLoadingMXBean mxbean=managementfactory.newplatformmxbeanproxy(connection, ManagementFactory.CLASS_LOADING_MXBEAN_NAME, ClassLoadingMXBean.class); System.out.println("LoadedClassCount.value "+mxbean.getloadedclasscount()); 17

18 4.2 TotalLoadedClassCount Denne pluginen viser antall klasser som har blitt lastet inn siden JVM startet. Denne grafen vil naturligvis bare øke og resettes dersom JVM restartes. ClassLoadingMXBean mxbean=managementfactory.newplatformmxbeanproxy(connection, ManagementFactory.CLASS_LOADING_MXBEAN_NAME, ClassLoadingMXBean.class); System.out.println("TotalLoadedClassCount.value "+mxbean.gettotalloadedclasscount()); 18

19 4.3 UnloadedClassCount Denne pluginen viser antall klasser som har blitt lastet ut av JVM. ClassLoadingMXBean mxbean=managementfactory.newplatformmxbeanproxy(connection, ManagementFactory.CLASS_LOADING_MXBEAN_NAME, ClassLoadingMXBean.class); System.out.println("UnloadedClass.value "+mxbean.getunloadedclasscount()); 5. MemoryMXBean Dette MXBean interfacet inneholder metoder for å hente ut ressursbruk for minne og er et av de viktigste interfacene hva angår overvåking av JVM ressurser. Dette interfacet har metoder for å returnere MemoryUsage objekter som i sin tur kan være Heap og Non-Heap. Det finnes èn instans av dette interfacet for hver JVM. Heap minne er meget interessant å overvåke da det representerer minne for runtime data. Dette inneholder minne for klasser og array. Heap minnet kan i tillegg også økes eller 19

20 minskes etter behov. Derfor er dette meget variable data som burde overvåkes. Dette minnet blir behandlet av garbage collectoren når objektet ikke lenger blir referert til. Non-Heap minnet er den delen av minnet som ikke inngår i heap. Dette blir også kalt for metode-området da det i stor grad lagrer metoder, konstruktører og konstanter. I likhet med heap minnet kan størrelsen av dette minnet endres. Dette minnet blir derimot ikke nødvendigvis behandlet av garbage collectoren. Dette er naturlig da denne type data ofte må ligge i minnet over lengre tid på grunn av sin konstante natur. Ved å overvåke variable som kan returneres via MemoryMXBean interfacet kan man oppdage og tolke: Minneforbruket og forløpet til en applikasjon (JVM). Arbeidsmengden til JVM minnehåndteringssytemet. Minnelekkasje. Pluginene som er generert fra MemoryMXBean interfacet kan og er anbefalt til å bli benyttet når en applikasjon skal lastebalanseres mellom flere JVM. Her kan man enkelt finne utnyttelsesgrenser og fordele arbeidet mellom prosessene ved riktige grenser. På denne måten kan man utnytte JVM instansen til det ytterste uten å påvirke ytelsen. 20

21 21

22 5.1 HeapMemoryUsage Denne pluginen viser variablene comitted, max, init og used for heap minnet. MemoryMXBean mxbean = ManagementFactory.newPlatformMXBeanProxy(connection,ManagementFactory. MEMORY_MXBEAN_NAME, MemoryMXBean.class); System.out.println("Committed.value " + mxbean.getheapmemoryusage().getcommitted()); System.out.println("Max.value " + mxbean.getheapmemoryusage().getmax()); System.out.println("Init.value " + mxbean.getheapmemoryusage().getinit()); System.out.println("Used.value " + mxbean.getheapmemoryusage().getused()); 22

23 5.2 NonHeapMemoryUsage Denne pluginen viser variablene comitted, max, init og used for non-heap minnet. MemoryMXBean mxbean = ManagementFactory.newPlatformMXBeanProxy(connection,ManagementFactory. MEMORY_MXBEAN_NAME, MemoryMXBean.class); System.out.println("Committed.value " + mxbean.getnonheapmemoryusage().getcommitted()); System.out.println("Max.value " + mxbean.getnonheapmemoryusage().getmax()); System.out.println("Init.value " + mxbean.getnonheapmemoryusage().getinit()); System.out.println("Used.value " + mxbean.getnonheapmemoryusage().getused()); 23

24 Forklaringer for heap og non-heap minnet: Comitted minnet viser mengden minne (i byte) som er garantert å være tilgjengelig for JVM. Max er forkortelse for maksimum minne som kan bli brukt for minnehåndtering. Init er forkortelse for initial som er mengden av det initielle minnet som JVM forespør fra operativsystemet for minnehåndtering under oppstart. Used viser mengden minne som er opptatt. 5.3 ObjectPendingFinalizationCount Denne pluginen viser antall objekter som venter på avslutning fra JVM. Denne grafen vil være meget interessant å overvåke i tilfeller hvor minnelekkasjer skjer ofte. En årsak til minnelekkasje er når en klasse inneholder en finalize metode og denne blir misbrukt eller benyttet ofte. Objekter av denne typen vil ikke bli frigitt av garbage collectoren men derimot puttet inn i en kø for finalization som vil bli behandlet ved et senere tidspunkt. Dersom finalizer tråden ikke kan behandle finalization køen raskere enn den blir fylt opp kan heap minneområdet bli overfylt og skape en OutOfMemoryError exception. Dette kan skje i 24

25 tilfeller hvor det blir opprettet tråder med høy prioritet. Verdien i denne grafen er kun en tilnærming av antall objekter som venter på finalization men er allikevel nyttig for å oppdage om en applikasjon er veldig avhengig av finalization. MemoryMXBean mxbean = ManagementFactory.newPlatformMXBeanProxy(connection,ManagementFactory. MEMORY_MXBEAN_NAME, MemoryMXBean.class); System.out.println("Objects.value " + mxbean.getobjectpendingfinalizationcount()); 25

26 6. GarbageCollectorMXBean Dette MXBean interfacet inneholder metoder for å overvåke garbage collectoren. Da garbagecollectoren har en sentral del for JVM, nemlig det å frigjøre objekter som ikke kan nås vil det være naturlig å overvåke hvor mange objekter som har blitt samlet og hvor lang tid det har blitt benyttet for oppgaven. Det finnes et eller flere instanser av dette interfacet for hver JVM. 26

27 27

28 6.1 CollectionCount Denne pluginen viser antall samlinger som har skjedd i tidspunktet. // Denne koden er hentet ut fra GCCount.java men er kun et lite utsnitt av klassen GCCountGet collector = new GCCountGet(connection); String[] temp = collector.gc(); System.out.println("CopyCount.value " + temp[0]); System.out.println("MarkSweepCompactCount.value " + temp[1]); // Denne koden er hentet ut fra GCCountGet.java public String[] GC() throws IOException, MalformedObjectNameException { ObjectName gcname = null; gcname = new ObjectName(ManagementFactory.GARBAGE_COLLECTOR_MXBEAN_DOMAI N_TYPE + ",*"); 28

29 Set mbeans = connection.querynames(gcname, null); if (mbeans!= null) { gcmbeans = new ArrayList<GarbageCollectorMXBean>(); Iterator iterator = mbeans.iterator(); while (iterator.hasnext()) { ObjectName objname = (ObjectName) iterator.next(); GarbageCollectorMXBean gc = ManagementFactory.newPlatformMXBeanProxy(connection, objname.getcanonicalname(), GarbageCollectorMXBean.class); gcmbeans.add(gc); } } int i = 0; for (GarbageCollectorMXBean gc : gcmbeans) { GCresult[i++] = gc.getcollectioncount() + ""; } return GCresult; } 29

30 Forklaring til Minor og MajorCount: Garbagecollectoren utfører hovedsakelig to typer collection. En Minor count som vi har navngitt det i grafen er en enkel innhenting av objekter. Denne heter i Sun sin dokumentasjon Minor Copy collection. En minor collection vil kjøre relativt fort da den vil flytte rundt på objekter i heap minnet mens tråden kjører. En Major count som gruppen har navngitt det i deres graf er en mye mer komplisert algoritme. Denne heter i Sun sin dokumentasjon Major Mark-Sweep-Compact collection. En major sweep garbage collection vil stoppe alle kjørende tråder i JVM mens den utfører sin oppgave. Dette vil derfor påvirke ytelsen til JVM dersom det er mange innhentinger av denne typen. I forhold til ytelse vil det være interessant å overvåke denne variabelen og dersom mulig programmere applikasjonen slik at denne typen innhentinger av garbage collectoren er få, og utføres raskt. 30

31 6.2 CollectionTime Denne pluginen vil vise tiden garbage collectoren har brukt i millisekunder public String[] GC() throws IOException, MalformedObjectNameException { ObjectName gcname = null; gcname = new ObjectName(ManagementFactory.GARBAGE_COLLECTOR_MXBEAN_DOMAI N_TYPE + ",*"); Set mbeans = connection.querynames(gcname, null); if (mbeans!= null) { gcmbeans = new ArrayList<GarbageCollectorMXBean>(); Iterator iterator = mbeans.iterator(); while (iterator.hasnext()) { ObjectName objname = (ObjectName) iterator.next(); GarbageCollectorMXBean gc = ManagementFactory.newPlatformMXBeanProxy(connection, objname.getcanonicalname(), GarbageCollectorMXBean.class); gcmbeans.add(gc); } } 31

32 int i = 0; for (GarbageCollectorMXBean gc : gcmbeans) { GCresult[i++] = formatmillis(gc.getcollectiontime()); } return GCresult; } 32

33 7. CompilationMXBean Dette MXBean interfacet inneholder metoder for kompilering i JVM. Her omtales det just in time(jit) kompilatoren. Det finnes en instans av dette interfacet for hver JVM. 33

34 7.1 TotalCompilationTime Denne pluginen viser tiden som har blitt benyttet for JIT kompilatoren. Denne verdien er ikke en indikasjon på ytelse av JVM og er ikke ment for ytelse sammenligning mellom andre JVMda implementasjoner kan ha ulik definisjon og ulik algoritme for å måle kompilasjonstiden. Verdien blir angitt i millisekunder. CompilationMXBean mxbean = ManagementFactory.newPlatformMXBeanProxy(connection, ManagementFactory.COMPILATION_MXBEAN_NAME, CompilationMXBean.class); System.out.println("TotalCompilationTime.value " + mxbean.gettotalcompilationtime() ); 34

35 8. MemoryPoolMXBean Dette MXBean interfacet inneholder metoder for de forskjellige minnebassengene i JVM. Det finnes èn instans av dette interfacet for hver JVM. Minnebassengene representerer heap og non-heap minnet. Disse går i detaljer og er i stor grad inndelt i tiden objekter har eksistert. Eden Space bassenget inneholder minnet som har blitt opptatt av tidlige objekter. Survivor Space bassenget inneholder minne hvor objekter har overlevd minne fra Eden Space selv etter en garbage collection. Tenured Gen bassenget inneholder objekter som har overlevd mange garbage collections. Perm Gen bassenget inneholder minne for JVM herunder klasser og minneobjekter. Dette vil i stor grad være heap minne, og ikke bli berørt av garbage collector. Herav Perm (Permanent). Disse minnebassengene har i sin tur spesifisert minnebruken slik: Usage Minnebruk Collection Usage Garbage collection minnebruk. Peak usage Topper For hver bassengundergruppe (Usage, Collection Usage og Peak) finnes disse variable: Comitted minnet viser mengden minne (i byte) som er garantert til å være tilgjengelig for JVM. Max er forkortelse for maksimum minne som kan bli brukt for minnehåndtering. Init er forkortelse for initial som er mengden av det initielle minnet som JVM forespør fra operativsystemet for minnehåndtering under oppstart. Used viser mengden minne (i byte) som er opptatt. 35

36 I tillegg finnes variabelen Treshold som kan bli satt manuelt. Dersom denne verdien er satt til et positivt tall vil Treshold sjekk bli automatisk startet for minnebassenget. Den vanlige verdien for denne atributten er 0. class GetCollectionUsage { private ArrayList<MemoryPoolMXBean> mxbean; private String[] GCresult = new String[5]; private MBeanServerConnection connection; private int memtype; public GetCollectionUsage(MBeanServerConnection connection, int memtype) { this.memtype = memtype; this.connection = connection; } public String[] GC() throws IOException, MalformedObjectNameException { ObjectName gcname = null; gcname = new ObjectName(ManagementFactory.MEMORY_POOL_MXBEAN_DOMAIN_TYPE +",*");//GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE + ",*"); 36

37 Set mbeans = connection.querynames(gcname, null); if (mbeans!= null) { mxbean = new ArrayList<MemoryPoolMXBean>(); Iterator iterator = mbeans.iterator(); while (iterator.hasnext()) { ObjectName objname = (ObjectName) iterator.next(); MemoryPoolMXBean gc = ManagementFactory.newPlatformMXBeanProxy(connection, objname.getcanonicalname(), MemoryPoolMXBean.class); mxbean.add(gc); } } int i = 0; GCresult[i++] = mxbean.get(memtype).getcollectionusage().getcommitted()+ ""; GCresult[i++] = mxbean.get(memtype).getcollectionusage().getinit()+""; GCresult[i++] = mxbean.get(memtype).getcollectionusage().getmax()+""; GCresult[i++] = mxbean.get(memtype).getcollectionusage().getused()+""; 37

38 GCresult[i++]= mxbean.get(memtype).getcollectionusagethreshold()+""; return GCresult; } GetCollectionUsage collector = new GetCollectionUsage(connection, 3); String[] temp = collector.gc(); System.out.println("Comitted.value " + temp[0]); System.out.println("Init.value " + temp[1]); System.out.println("Max.value "+temp[2]); System.out.println("Used.value "+temp[3]); System.out.println("Threshold.value "+temp[4]); Gruppen har valgt å fordele variable i flere grafer for hvert basseng. Det ville gjort grafen uoversiktlig dersom alle 12 variable for hvert basseng hadde vært presentert i en graf. 38

39 8.1 Collection Usage 39

40 40

41 8.2 Peak Usage 41

42 42

43 8.3 Usage 43

44 44

45 Kilder: Minnelekkasje forklart. Munin standarder yreporter.java.html Eksempler for polling av data for MemoryPoolMXBean XP programmering Overvåking av JVM Class/ThisVerboseGCclassdemonstratesthecapabilitytogetthegarbagecollectionstatisticsandme moryusageremotely.htm Garbage Collection eksempler Minneovervåking JMX Munin Trunk makefil newplatformmxbeanproxy metoden Mbean server konfigurasjon med eller uten sikkerhet Tomcat JMX konfigurasjon med eller uten sikkerhet Jconsole applikasjonen som benytter samme MXBeans som dette prosjektet forum hvor vi stilte spørsmål 45

46 Ordliste Deamon: Daemon tråder er tråder som er hjelpetråder for runtime miljøet. Garbage collector: GC er en form av automatisk minne behandling. Heap memory: Er minnet som er reservert for et programm under kjøring av programmet. Interface: Refererer til en abstraksjon som en entitet gir av seg til det ytre. Java application: Et java program. JMX: En java teknologi som formidler verktøy for behandling og overvåking av programmer, objekter... JVM: En virtuel maskin som kjøre java byte-code programmer. Memory pool: Minne blokker med samme størrelse. Munin: Et system som overvåker applikasjoner og fremviser info på graffer. Mbean: Presenterer en kilde som kjører i JVM, som en applikasjon eller en Java EE. Kan bli brukt for å hente og sette applikasjoners konfigurasjon for å hente statistikk og feilmeldinger. Non-Heap memory: All minnet som ikke er heap. Plugin: Er et program som kobles til en applikasjon for en viss bruk. Runtime: Tiden et program bruker fra start av kjøring til slutt, kompilasjons tiden. Thread: En sekvens av instruksjoner som kan kjøres parallelt med andre tråder. Threshold: grense 46

Innhold Forord...3 Begreper og akronymer...4 Systembeskrivelse...5 Generelt...5 Funksjonelle krav...7 Ikke-Funksjonelle krav...9 Prioritering...

Innhold Forord...3 Begreper og akronymer...4 Systembeskrivelse...5 Generelt...5 Funksjonelle krav...7 Ikke-Funksjonelle krav...9 Prioritering... Innhold Forord...3 Begreper og akronymer...4 Systembeskrivelse...5 Generelt...5 Funksjonelle krav...7 Ikke-Funksjonelle krav...9 Prioritering...9 2 Forord Denne kravspesifikasjonen har blitt utviklet i

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 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.

Detaljer

Testrapport. periode noe som er et godt tegn i et operativsystem, gruppen har derfor ikke klart å konstruere en slik situasjon for testing.

Testrapport. periode noe som er et godt tegn i et operativsystem, gruppen har derfor ikke klart å konstruere en slik situasjon for testing. Forord Dette dokumentet er skrevet for personer som vil benytte seg av produktet men vil ha en validering av de ulike pluginene før de tas i bruk. Det er forutsatt at produktdokumentet er lest før dette

Detaljer

Forord. Brukerveiledning

Forord. Brukerveiledning Forord Dette dokumentet er ment for brukere og administratorer som vil overvåke ressursene som brukes av JVM. Det gir en rask og generisk introduksjon til installasjonen av de forskjellige verktøyene som

Detaljer

Forord. Javaprogrammering Database Overvåking / Statistikk JSP / Java web teknologi

Forord. Javaprogrammering Database Overvåking / Statistikk JSP / Java web teknologi Forord Prosessrapport for hovedprosjekt våren 2009 ved Høgskolen i Oslo avdeling for ingeniørutdanning, datalinjen. Gruppen består av tre medlemmer, Younes Hajji, Mo Amini og Diyar Amin. Gruppemedlemmene

Detaljer

Litt om Javas class-filer og byte-kode

Litt om Javas class-filer og byte-kode Litt om Javas class-filer og byte-kode INF 5110, 11/5-2010, Stein Krogdahl (Dessverre litt få figurer) Disse formatene ble planlagt fra start som en del av hele Java-ideen Bt Byte-koden gir portabilitet

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Gaustadbekkdalen, januar 22 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår i primærlageret når

Detaljer

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse Dessverre litt få figurer INF 5110, 10/5-2011, Stein Krogdahl Oversikt over Javas class-filer og byte-kode Disse formatene ble planlagt fra start

Detaljer

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse Dessverre litt få figurer INF 5110, 8/5-2012, Stein Krogdahl Byte-koden for Java og.nett (C#) http://en.wikipedia.org/wiki/java_bytecode_instruction_listings

Detaljer

Operativsystemer og grensesnitt

Operativsystemer og grensesnitt Operativsystemer og grensesnitt Ulike måter å bruke OS'et på Application Program Interface (API) Applikasjoner (ofte C-programmer) som f.eks. emacs, som bruker tjenestene i OS ved å kalle på funksjoner

Detaljer

OPPGAVESETT 7 OBJEKTER OG REFERANSER

OPPGAVESETT 7 OBJEKTER OG REFERANSER OPPGAVESETT 7 OBJEKTER OG REFERANSER Oppgavesett 7 i Programmering: objekter og referanser. I dette oppgavesettet blir du introdusert til objekter og referanser i Java. Dette er del 2 av introduksjonen

Detaljer

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Programmering i C++ Løsningsforslag Eksamen høsten 2005 Programmering i C++ Eksamen høsten 2005 Simen Hagen Høgskolen i Oslo, Avdeling for Ingeniørutdanning 7. desember 2005 Generelt Denne eksamensoppgaven består av tre oppgaver, pluss en ekstraoppgave. Det

Detaljer

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode) Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode) Disse foilene er pensum INF 5110, 30/4-2013, Stein Krogdahl Byte-koden for Java og.nett (C#) kan leses her: http://en.wikipedia.org/wiki/java_bytecode_instruction_listings

Detaljer

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Gaustadbekkdalen, januar 27 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår inne i primærlageret

Detaljer

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen? OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.

Detaljer

Tildeling av minne til prosesser

Tildeling av minne til prosesser Tildeling av minne til prosesser Tildeling av minne til prosesser OS må hele tiden holde rede på hvilke deler av RAM som er ledig/opptatt Når (asynkrone) prosesser/run-time system krever tildeling av en

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Array&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

Detaljer

Minnehåndtering i operativsystemer

Minnehåndtering i operativsystemer Minnehåndtering i operativsystemer Minnehåndtering? Minne er en begrenset ressurs i datamaskinen Tilgjengelig minne må fordeles til prosessene som OS-et håndterer, på en korrekt og rettferdig måte Minnet

Detaljer

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

public 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

Detaljer

Objekter og referanser

Objekter og referanser Objekter og referanser Datasegmentet heap Vi har sett at verdier i Java blir kopiert ved prosedyrekall. I programmering, ønsker man imidlertid ikke å kopiere objekter ved prosedyrekall. Dette er fordi

Detaljer

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

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid

Detaljer

Kodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007. Stein Krogdahl, Ifi UiO

Kodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007. Stein Krogdahl, Ifi UiO Kodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007 Stein Krogdahl, Ifi UiO ASU, kap 9.5: Vi generer kode for én og én basal blokk Da er det lett å holde orden

Detaljer

Debugging. Tore Berg Hansen, TISIP

Debugging. Tore Berg Hansen, TISIP Debugging Tore Berg Hansen, TISIP Innhold Innledning... 1 Å kompilere og bygge et program for debugging... 1 Når debugger er i gang... 2 Symbolene i verktøylinjen... 3 Start på nytt... 3 Stopp debugging...

Detaljer

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet består

Detaljer

Tildeling av minne til prosesser

Tildeling av minne til prosesser Tildeling av minne til prosesser Tildeling av minne til en prosess Når en ny prosess opprettes har den et krav til hvor mye minne som skal reserveres for prosessen Memory Management System (MMS) i OS må

Detaljer

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale. Høgskolen i Telemark Fakultet for allmennvitenskapelige fag EKSAMEN I 6108/6108N PROGRAMMERING I JAVA 21. 12. 2015 Tid: 4 timer Sidetall: Hjelpemiddel: Merknader: Framside + 5 sider Alt trykt og skriftlig

Detaljer

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering Kapittel 1 Datamaskiner og programmeringsspråk Dette kapitlet er en kort introduksjon til programmering. Vi vil se på hvordan man skriver, bygger og kjører programmer, samt illustrere noen sentrale programmeringsbegrep

Detaljer

INF våren 2017

INF 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

Detaljer

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 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 =

Detaljer

Java PRP brukermanual

Java PRP brukermanual Java PRP brukermanual 1.1 Introduksjon 1.1.1 Hva er Java PRP Java PRP (Parallel Recursive Procedure) gir oss muligheten til automatisk parallellisering av programmer, som baserer seg på noen rekursive

Detaljer

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

public 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

Detaljer

IN våren 2019 Onsdag 16. januar

IN våren 2019 Onsdag 16. januar IN1010 - våren 2019 Onsdag 16. januar Java Objekter og klasser Stein Gjessing Universitetet i Oslo 1 1 IN1010: Objektorientert programmering Hva er et objekt? Hva er en klasse? Aller enkleste eksempel

Detaljer

IN våren 2018 Tirsdag 16. januar

IN våren 2018 Tirsdag 16. januar IN1010 - våren 2018 Tirsdag 16. januar Java Objekter og klasser Stein Gjessing Universitetet i Oslo 1 1 IN1010: Objektorientert programmering Hva er et objekt? Hva er en klasse? Aller enkleste eksempel

Detaljer

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

Eksekveringsrekkefø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

Detaljer

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering? Dagens tema Dagens tema Kildekode Hva er kompilering? Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Hvordan oppdage feil? Anta at vi lager dette lille

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Array&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

Detaljer

Dagens forelesning. Husk prøveeksamen Fredag 15/3-13 kl 12 i R1. Iterator-teknikken. Eksempel med bruk av Iterator og Iterable-grensesnittene

Dagens forelesning. Husk prøveeksamen Fredag 15/3-13 kl 12 i R1. Iterator-teknikken. Eksempel med bruk av Iterator og Iterable-grensesnittene Dagens forelesning Iterator-teknikken Hva er en Iterator og hvorfor bruke den? Hvordan virker en Iterator? Vi lager en Iterator for tegnene i en String Iterable-grensesnittet og for-løkker Eksempel med

Detaljer

Minnehåndtering i operativsystemer

Minnehåndtering i operativsystemer Minnehåndtering i operativsystemer Minnehåndtering? Minne er en begrenset ressurs i datamaskinen Tilgjengelig minne må fordeles til prosessene som OS-et håndterer, på en korrekt og rettferdig måte Minnet

Detaljer

Argumenter fra kommandolinjen

Argumenter fra kommandolinjen Argumenter fra kommandolinjen Denne veiledningen er laget for å vise hvordan man kan overføre argumenter fra kommandolinjen til et program. Hvordan transportere data fra en kommandolinje slik at dataene

Detaljer

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

INF1010, 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å

Detaljer

Programmeringsspråket C

Programmeringsspråket C Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger

Detaljer

Løsningsforslag for eksamensoppgave, våren 2004

Løsningsforslag for eksamensoppgave, våren 2004 Løsningsforslag for eksamensoppgave, våren 2004 Simen Hagen Høgskolen i Oslo, Avdeling for Ingeniørutdanning Oppgave 1 Node.h // I oppgaven i n d i k e r e s d e t a t en s k a l kunne l a g r e t a l

Detaljer

Oppsummering. 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 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

Detaljer

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

programeksempel 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"

Detaljer

Generiske mekanismer i statisk typede programmeringsspråk

Generiske 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

Detaljer

Enkle generiske klasser i Java

Enkle generiske klasser i Java Enkle generiske klasser i Java Oslo, 7/1-13 Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Del 1: Enkle pekere Før vi tar fatt på det som er nytt i dette notatet, skal vi repetere litt

Detaljer

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Repitisjonskurs. 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

Detaljer

Socket og ServerSocket

Socket og ServerSocket Side 1 av 5, socket og klient-tjener, V. Holmstedt, HiO 2006 Dette dokumentet er revidert den 29.8.2006, kl:12:30. Det er foretatt rettelser i begge versjoner av klassen A_Server. Socket og ServerSocket

Detaljer

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Dagens tema Dagens tema C-programmering Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Adresser og pekere Parametre Vektorer (array-er) Tekster (string-er) Hvordan ser minnet

Detaljer

En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig.

En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig. Synkronisering En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig. Behov for synkronisering Mange prosesser/tråder

Detaljer

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Bokmål UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Fredag 4. desember 2015 Tid for eksamen: 14.30 (4 timer)

Detaljer

INF 1010, vår 2005 Løsningsforslag uke 11

INF 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

Detaljer

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14. Forkurs INF1010 Dag 2 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Gard Inge Rosvold (gardir@ifi.uio.no) Institutt for Informatikk, 14. januar 2016 Forkurs INF1010 - dag 2 Feilmeldinger 2 Forkurs INF1010

Detaljer

Algoritmer og datastrukturer E Løkker i Java

Algoritmer og datastrukturer E Løkker i Java Vedlegg E Løkker i Java Side 1 av 6 Algoritmer og datastrukturer E Løkker i Java E Løkker i Java E.1 For-løkker En for-løkke består av de fire delene initialisering, betingelse, oppdatering og kropp (eng:

Detaljer

Løsningsforslag Test 2

Lø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.

Detaljer

Sortering med Comparable og Comparator

Sortering med Comparable og Comparator Sortering med Comparable og Comparator Denne siden forklarer hvordan grensesnittene java.util.comparable og java.util.comparator bidrar til sortering i Java. Comparable og Comparator er grensesnitt som

Detaljer

Generelt om operativsystemer

Generelt om operativsystemer Generelt om operativsystemer Operativsystemet: Hva og hvorfor Styring av prosessorer (CPU), elektronikk, nettverk og andre ressurser i en datamaskin er komplisert, detaljert og vanskelig. Maskinvare og

Detaljer

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7 Gjennomgang prøveeksamen 2014 oppgave 1, 2, 4, 5, 7 1a: Hva er verdien til tall etter at følgende kode er utført: 17 int tall = 5; tall = (tall*3) + 2; 5 15 17 1b: Anta at følgende programsetninger utføres.

Detaljer

INF Innleveringsoppgave 6

INF Innleveringsoppgave 6 INF1010 - Innleveringsoppgave 6 Frist: Onsdag 16. mars, 10:00 Maks 6 poeng Om obligatorisk oppgave 4, 6 og 7 i INF1010, våren 2016: "Leger og resepter" Du skal jobbe med en problemstilling omkring leger

Detaljer

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER .9.22 LITT OM OPPLEGGET INF EKSTRATILBUD Stoff fra uke - 2. September 22 Siri Moe Jensen Målgruppe: De som mangler forståelse for konseptene gjennomgått så langt. Trening får du ved å jobbe med oppgaver,

Detaljer

Håndtering av minne i et OS

Håndtering av minne i et OS Håndtering av minne i et OS Hva er det som skal håndteres? Minnehåndtering (memory management) utføres av de delene av systemet som har ansvar for å håndtere maskinens primærminne Primærminnet (aka hovedminne,

Detaljer

INF 1000 høsten 2011 Uke september

INF 1000 høsten 2011 Uke september INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus 1 INF1000 undervisningen Forelesningene: Første

Detaljer

Liste som abstrakt konsept/datatype

Liste som abstrakt konsept/datatype Lister Liste som abstrakt konsept/datatype Listen er en lineær struktur (men kan allikevel implementeres ikke-lineært bak kulissene ) Hvert element har en forgjenger, unntatt første element i listen Hvert

Detaljer

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering?

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering? Dagens tema Dagens tema Kildekode Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette

Detaljer

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september INF1000 undervisningen INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Forelesningene: Første

Detaljer

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs BOKMÅL Side 1 av 7 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap KONTINUASJONSEKSAMEN

Detaljer

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Torsdag 12. august 2010, kl. 09:00-13:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikret av Svein Erik Bratsberg. Kontaktperson

Detaljer

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn BOKMÅL EKSAMENSFORSIDE Skriftlig eksamen med tilsyn Emnekode: 108 + 108N Dato: 19.12.201 Ansv. faglærer: Roy M. Istad Campus: Bø Antall oppgaver: 5 Tillatte hjelpemidler (jfr. emnebeskrivelse): Alt trykt

Detaljer

Informasjon Eksamen i IN1000 høsten 2017

Informasjon Eksamen i IN1000 høsten 2017 Informasjon Eksamen i IN000 høsten 207 Tid 8. desember kl. 09.00 (4 timer) Faglærerne vil besøke lokalet ca kl 0. Oppgavene Oppgave 2b og 2c er flervalgsoppgaver. Her får man det angitte antall poeng om

Detaljer

Hva er kompilering? Dagens tema. En kompilator En kompilator leser Minila koden og lager Flok koden.

Hva er kompilering? Dagens tema. En kompilator En kompilator leser Minila koden og lager Flok koden. Dagens tema Dagens tema Kildekode Hva er kompilering? Anta at vi lager dette lille programmet (kalt kildekoden): Hva er kompilering? Hvordan analysere et program? Hvordan programmere dette i Java? Hvordan

Detaljer

Obligatorisk oppgave 1 INF1020 h2005

Obligatorisk oppgave 1 INF1020 h2005 Obligatorisk oppgave 1 INF1020 h2005 Frist: fredag 7. oktober Oppgaven skal løses individuelt, og må være godkjent for å kunne gå opp til eksamen. Før innlevering må retningslinjene Krav til innleverte

Detaljer

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; } Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)

Detaljer

GUI («Graphical User Interface») del 2

GUI («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

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET 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

Detaljer

Generelt om operativsystemer

Generelt om operativsystemer Generelt om operativsystemer Hva er problemet? Styring av maskinvare og ressurser tilknyttet en datamaskin er komplisert, detaljert og vanskelig Maskinvare, komponenter og programvare endres og forbedres

Detaljer

Faglærerne prøver å besøker eksamenslokalet mellom klokka 15 og 16 for å oppklare eventuelle uklarheter og feil i oppgaveteksten.

Faglærerne prøver å besøker eksamenslokalet mellom klokka 15 og 16 for å oppklare eventuelle uklarheter og feil i oppgaveteksten. IN1010/INF1010 v2019 Eksamensinfo Eksamen IN1010/INF1010 våren 2019 Tid: 7. juni kl. 14:30-18:30 (4 timer) PRAKTISK INFORMASJON Hvis du synes noen deler av oppgaven er uklare, kan du legge dine egne forutsetninger

Detaljer

Løsnings forslag i java In115, Våren 1998

Løsnings forslag i java In115, Våren 1998 Løsnings forslag i java In115, Våren 1998 Oppgave 1 // Inne i en eller annen klasse private char S[]; private int pardybde; private int n; public void lagalle(int i) if (i==n) bruks(); else /* Sjekker

Detaljer

INF Obligatorisk innlevering 6

INF Obligatorisk innlevering 6 INF1000 - Obligatorisk innlevering 6 Frist: 16. Oktober kl 22:00 Tema denne uka: Et første objektorientert program. Målet med oppgaven er å utvikle et verktøy for enkel analyse av tekster som vi leser

Detaljer

INF1000 Prøveeksamen Oppgave 7 og 9

INF1000 Prøveeksamen Oppgave 7 og 9 INF1000 Prøveeksamen Oppgave 7 og 9 Høst 2015 Siri Moe Jensen 7a) Skriv en klasse Gave med to variabler som forteller hva som er i gaven, og hvor mye den har kostet. Klassen skal ha en konstruktør med

Detaljer

INF1020 Algoritmer og datastrukturer. Dagens plan

INF1020 Algoritmer og datastrukturer. Dagens plan Dagens plan Prioritetskø ADT Motivasjon Operasjoner Implementasjoner og tidsforbruk Heap-implementasjonen Strukturkravet Heap-ordningskravet Insert DeleteMin Tilleggsoperasjoner Build Heap Anvendelser

Detaljer

Hvordan en prosessor arbeider, del 1

Hvordan en prosessor arbeider, del 1 Hvordan en prosessor arbeider, del 1 Læringsmål Kompilator, interpret og maskinkode CPU, registre Enkle instruksjoner: de fire regnearter Mer informasjon om temaet Internett Lokalnett (LAN) Mitt program

Detaljer

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00 EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 18. mai 2017 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Kalkulator Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer

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

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid

Detaljer

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

I 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

Detaljer

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

Stein 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:

Detaljer

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

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid

Detaljer

Introduksjon til objektorientert programmering

Introduksjon til objektorientert programmering Introduksjon til objektorientert programmering Samt litt mer om strenger og variable INF1000, uke6 Ragnhild Kobro Runde Grunnkurs i objektorientert programmering Strategi: Splitt og hersk Metoder kan brukes

Detaljer

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00 EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 28. mai 2018 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer

Definisjon av prosess

Definisjon av prosess Prosesser og tråder Definisjon av prosess Enkel definisjon: En prosess er et program som kjører på datamaskinen Mer presis definisjon: En prosess er en samling av ressurser som er nødvendige for å utføre

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET 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.

Detaljer

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Dagens tema Kjøresystemer (Ghezzi&Jazayeri.6,.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/5 Repetisjon: Statiske språk uten rekursive

Detaljer

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/25 Forelesning 11 5.11.2003 Repetisjon:

Detaljer

"Nelsons kaffebutikk"

Nelsons kaffebutikk "Nelsons kaffebutikk" et eksempel på systemutvikling med objekter Originale lysark av Jens Kaasbøll - mindre endringer av G. Skagestein og Knut Hegna IN105-javaNelson-1 Nelsons kaffebutikk Området som

Detaljer

Tildeling av minne til prosesser

Tildeling av minne til prosesser Tildeling av minne til prosesser Tildeling av minne til en prosess Når en prosess opprettes har den et krav til hvor mye minne som skal reserveres for prosessen Memory Management System (MMS) i OS må da:

Detaljer

Leksjon 7. Filer og unntak

Leksjon 7. Filer og unntak 6108 Programmering i Java Leksjon 7 Filer og unntak Del2: 7.2 og 7.4 Roy M. Istad 2015 Fil: Permanent lagring av data PrintWriter(filnavn) throws Exception usjekkede/sjekkede unntak? skriver.println(data-i-tekstlinje)

Detaljer

Stack. En enkel, lineær datastruktur

Stack. En enkel, lineær datastruktur Stack En enkel, lineær datastruktur Hva er en stack? En datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi

Detaljer

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00 Ny/utsatt EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 6. januar 2017 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet

Detaljer