Runtimesystemer del III

Like dokumenter
Runtime- systemer del III

Runtime-omgivelser Kap 7 - II

Runtimesystemer - II. Funksjoner som parametere. Virtuelle metoder

Runtimesystemer - II. Parameteroverføring Call by value Call by reference Call by value-result Call by name INF 3110/ INF

Runtime-omgivelser Kap 7 - I

Runtimesystemer Kap 7 - I

Anatomien til en kompilator - I

Semantisk Analyse del III

2012 2a. C rc; void main() { rc = new C (); rc.m2(); } } INF 3110/ INF /28/13 1

Anatomien til en kompilator - I

Med Svarforslag UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet. 3 sider (side 6, 7 og 8, rives ut, fylles ut og leveres)

Diverse eksamensgaver

UNIVERSITETET I OSLO

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

Generiske mekanismer i statisk typede programmeringsspråk

Repitisjonskurs. Arv, Subklasser og Grensesnitt

UNIVERSITETET I OSLO

Litt om Javas class-filer og byte-kode

Datatyper og typesjekking

Datatyper og typesjekking

MED SVARFORSLAG UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

Datatyper og typesjekking

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser

Datatyper og typesjekking

UNIVERSITETET I OSLO

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 2.6, 2.7)

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

Kapittel 7: Mer om arv

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

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

En snarvei til INF2100

INF1010 Arv. Marit Nybakken 2. februar 2004

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

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

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

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

Læringsmål for forelesningen

UNIVERSITETET I OSLO

Kap 6.4: Typesjekking Foiler ved Birger Møller-Pedersen Forelest av Stein Krogdahl 19. og 23. mars Dagens tema: Typer og typesjekking

INF225 høsten 2003 Prosjekt del 4: kodegenerering

Løsningsforslag til eksamen i IN 147(A)

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

Enkle generiske klasser i Java

Skal bindes opp til en deklarasjon av samme navn

INF1010 våren Arv og subklasser del 1

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

Skal bindes opp til en deklarasjon av samme navn

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

INF1010 våren Arv og subklasser - del 2

INF1010 våren Arv, subklasser og grensesnitt - del 2

BOKMÅL Side 1 av 12. Fakultet for informasjonsteknologi,

INF Seminaroppgaver til uke 3

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

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

INF1010 våren Arv og subklasser del 1

Generiske mekanismer i statisk typede programmeringsspråk

IN 147 Program og maskinvare

Generiske mekanismer i statisk typede programmeringsspråk INF5110 April, 2009

klassen Vin må få en ny variabel Vin neste alle personvariable (personpekere) i listeklassen må byttes til Vin

Oppgave 3 a. Antagelser i oppgaveteksten. INF1020 Algoritmer og datastrukturer. Oppgave 3. Eksempelgraf

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

København 20 Stockholm

INF Notater. Veronika Heimsbakk 10. juni 2012

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

Generiske mekanismer i klasser og pakker

J2EE. CMP Entity Beans, Transaksjoner, JSP

UNIVERSITETET I OSLO

Klasser, objekter, pekere og UML. INF gruppe 13

INF1010 våren Arv og subklasser - del 2

Kapittel 9: Sortering og søking Kort versjon

INF Repetisjon: Hvordan bygge treet og analysere? 8. september Typisk situasjon. De problematiske syntaks-diagrammene

Om oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre egne presiseringer. Formulér i så fall disse tydelig i oppgavebesvarelsen din.

2 Om statiske variable/konstanter og statiske metoder.

Generiske mekanismer i statisk typede programmeringsspråk

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

IN1010 våren 2018 Tirsdag 15. mai. Repetisjon av subklasser og tråder. Stein Gjessing Institutt for informatikk Universitetet i Oslo

IN1010 våren 2018 Tirsdag 6. februar. Arv og subklasser - del 2

INF1000 Prøveeksamen Oppgave 7 og 9

Runtimesystemer Kap 7 - I

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

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

INF1010 våren Arv og subklasser - del 2

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

OPPGAVE 5b og 8b Java Kode

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

UNIVERSITETET I OSLO

Objekter og referanser

INF1010 våren 2017 Torsdag 2. februar. Arv og subklasser - del 2

Dagens tema C, adresser og pekere

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

Obligatorisk oppgave 1 INF1020 h2005

Tildeling av minne til prosesser

IN våren 2019 Onsdag 16. januar

IN våren 2018 Tirsdag 16. januar

INF1010 notat: Binærsøking og quicksort

Oppsummering del 2. Læringsmål Viktigste Java-elementer Eksamen Til sist. Læringsmål Hovedpunkter Tilbakemelding Eksamen. IN1010 uke 17 våren 2019

INF1010 våren Generalisering -spesialisering Gjenbruk av klasser. Ved arv. Klasse-hierarkier. Stein Gjessing.

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

Transkript:

Runtimesstemer del III Dnamisk minnehåndtering og objekt-orientering Kapittel 7.4 30.04.2015 - Ragnhild Kobro Runde 1

VIRTUELLE METODER 30.04.2015 - Ragnhild Kobro Runde 2

Objekt-orientering Klasser og subklasser Tpede pekere Virtuelle og ikke-virtuelle metoder A B C class A { int,; void f(s,t) {...K...; virtual void g(p,q) {...L... class B etends A{ int z; void f(s,t) {...Q...; redef void g(p,q) {...M...; virtual void h(r) {...N... class C etends B{ int u; redef void h(r) {...P... A ra B rb C rc A - objekt 30.04.2015 - Ragnhild Kobro Runde 3 B - objekt z C - objekt z u

Metode-kall hvilken gjelder? Kall på ikke-virtuelle metoder (bruk pekerens tpe) ra.f(1,2) rb.f(1,2) rc.f(1,2) Kall på virtuelle metoder (bruk objektets tpe) ra.g(3,4) rb.g(3,4) rc.g(3,4) ra.h(5) rb.h(5) rc.h(5) class A { int,; void f(s,t) {...K...; virtual void g(p,q) {...L... class B etends A{ int z; void f(s,t) {...Q...; redef void g(p,q) {...M...; virtual void h(r) {...N... class C etends B{ int u; redef void h(r) {...P... 30.04.2015 - Ragnhild Kobro Runde 4

Implementasjon: virtuell-tabell class A { int,; void f(s,t) {...K...; virtual void g(p,q) {...L... A-objekt L 0 class B etends A{ int z; void f(s,t) {...Q...; redef void g(p,q) {...M...; virtual void h(r) {...N... class C etends B{ int u; redef void h(r) {...P... ra.g(...) implementeres slik: call(ra.virttab[g_offsett]) Kompilatoren vet: g_offset = 0 h_offset = 1 B-objekt 30.04.2015 - Ragnhild Kobro Runde 5 z z u C-objekt M N M P 0 1 0 1

Impl. av virtuelle metoder som i boken (C++) Virtuell-tabell pekeren har relativ-adresse som kan beregnes av kompilatoren Pekeren til virtuell-tabellen ligger ikke først i objektet, da bare objekter med virtuelle funksjoner har en virtuell-tabell. 30.04.2015 - Ragnhild Kobro Runde 6

Utpede pekere (f.eks. Smalltalk) Ikke-virtuelle metoder finnes ikke Problem med virtuell-tabeller: Alle virtuell-tabeller måtte innholde alle metoder i alle klasser, altså for stor. I tillegg: I Smalltalk kan man legge til metoder underveis Derfor (antar at f er fjernet): r.g(...) implementeres slik: 1. Gå til objektets klasse 2. Let etter g ut gjennom superklassene A-objekt z B-objekt z u C-objekt super g(...) L super g(...) M h(...) N super h(...) P 30.04.2015 - Ragnhild Kobro Runde 7

OPPGAVE 7.13 + OPPGAVE 3(B-E) EKSAMEN 2005 30.04.2015 - Ragnhild Kobro Runde 8

GARBAGE COLLECTION 30.04.2015 - Ragnhild Kobro Runde 9

Noen alternativer Når blir plass ledig? 1. Brukeren sier selv fra (alloc/free) Kan lett bli feil og inkonsistenser 2. Sstemet finner automatisk hva som blir ledig Krever ekstra administrasjon/informasjon Gjenbruk av frigjort plass 1. Man fltter aldri objekter Fører lett til fragmentering 2. Man fltter sammen de objekter som skal bevares Krever ekstra administrasjon/informasjon Alle pekere til flttede objekter må forandres All ledig plass samlet i et område 30.04.2015 - Ragnhild Kobro Runde 10

Garbage Collection: mark (and sweep) Deler ut plass ukritisk så lenge det er plass. Når det ikke er plass mer tar vi en større opprdning Starter altid med et fullt rekursivt gjennomløp, der vi finner alle objekter som kan nåes fra variable vi kan nå direkte (røtter) Alle objekter som kan nåes merkes. Krever eget bit i hvert objekt. røtter (bl.a fp) NB: Krever at man kan finne ut hva som er pekere i et gitt objekt 30.04.2015 - Ragnhild Kobro Runde 11

Garbage Collection: (mark and) sweep Etter merkingen gjøres et sekvensielt gjennomløp av lageret, der plassen til de umerkede objekter frigjøres. Må slå sammen ledig naboplass. Ledig plass holdes f.eks. i en eller flere frilister. I stedet for sweep kan man gjøre compaction : fltte alle objektene tett sammen. NB: Da må man også forandre alle pekere til det stedet objektet flttes til. 30.04.2015 - Ragnhild Kobro Runde 12

Garbage Collection: stop-and-cop (two-space) To-delt lager Deler plassen i to og bruker bare halvparten av gangen mark og compaction kan da gjøres i ett rekursivt gjennomløp A B C Hvert objekt må ha et ledig bit ( er flttet ) Da angir neste ordet adressen det er flttet til 30.04.2015 - Ragnhild Kobro Runde 13