Kernealphaerne Indhold af G1

Relaterede dokumenter
Planen for idag. Indhold af G1. Kernealphaerne. Alpha erne. Datalogi 1F Forår 2003

Lageret i maskinarkitekturen. Beregningsenhed, lagre (registre, RAM, disk), ydre enheder

Skriftlig eksamen i Datalogi

DM507 Algoritmer og datastrukturer

Sortering af information er en fundamental og central opgave.

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:

DM507 Algoritmer og datastrukturer

Sortering af information er en fundamental og central opgave.

Skriftlig eksamen i Datalogi

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

MIPS, registerallokering og MARS

Lageradministration. dopsys

Abstrakte datatyper C#-version

DM507 Algoritmer og datastrukturer

Projekt arbejde til kurset Advanced Models and Programs, SASP-AMP 2008 Poul Brønnum, IT Universitetet i København, Maj Indholdsfortegnelse

Om binære søgetræer i Java

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

Programmering i C. Lektion december 2008

DATALOGI 1F. Skriftlig eksamen tirsdag den 10. juni % 2 10 % 3 25 % 4 10 % 5 30 %

Sider og segmenter. dopsys 1

Danmarks Tekniske Universitet

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

DM507 Algoritmer og datastrukturer

Skriftlig eksamen i Datalogi

Danmarks Tekniske Universitet

Algoritmisk geometri

DM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed

SWC Elementer i klassedefinition

Sider og segmenter. dopsys 1

Lageradministration Paging og segmentering

DM507 Algoritmer og datastrukturer

Planen for i dag. Logiske og fysiske adresser. Systemarkitektur. Binding af programkode til lager. Hardware understøttelse af lageradministration

Oversættere Skriftlig eksamen onsdag d. 19. april 2006

Rekursion og dynamisk programmering

Operativsystemer of C Efterår 2013 Virtuel hukommelse (kap. 9)

21. Introduktion til arrays

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Danmarks Tekniske Universitet

Vejledende løsninger

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen. I3PRG3 + I3DTM3 + I3ISY1-3. semester

Programmering i C. Kursusintroduktion. Lektion september Målgruppe 2 Indhold 3 Form 4 Materiale. Målgruppe Indhold Form Materiale

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Danmarks Tekniske Universitet

Programmering i C Intro og grundlæggende C 5. marts 2007

Specialeforsvar: Fundamentet for et fleksibelt container bibliotek

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Invarianter. Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af) dens udførelse. Udgør ofte kernen af ideen bag algoritmen.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Processer og tråde. dopsys 1

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Kerner med afbrydelser. Planen for i dag. Kerne med afbrydelser. Tætkoblede drivprogrammer. Uheldig rækkefølge. Synkronisering med ydre enheder

Ugeseddel 4 1. marts - 8. marts

Datastrukturer (recap)

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

DM507 Algoritmer og datastrukturer

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Programmering i C. Lektion september 2009

Programmering i C. Lektion oktober 2008

Introduktion til funktioner, moduler og scopes i Python

Arduino Programmering

Programmering i C. Lektion september 2009

Introduktion til datastrukturer

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

SWC eksamens-spørgsmål. Oversigt

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.

Pointers. Programmering i C. 11. december Lektion 5. Eksempel: denne plads. Getting the address of a variable:

Datastrukturer (recap)

Introduktion til C programmering

Python programmering. Per Tøfting. MacFest

Danmarks Tekniske Universitet

Prioritetskøer og hobe. Philip Bille

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer.

Danmarks Tekniske Universitet

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Systemkald DM Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/ Afleveret af: Jacob Christiansen,

Lageradministration Intel Pentium og Unix/Linux

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

A Profile for Safety Critical Java

16/04/12 50% 50% Waveform Chart Waveform Graph XY Graph Indicator Graph 33% 17% 88% 13%

Oversigt. Operativsystemer [6]: Virtuelt lager. Virtuel lager. Virtuelt lager. Virkemåde. Virtuelt lager eksempel virtuelt lager

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Divide-and-Conquer algoritmer

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Oversættere Skriftlig eksamen onsdag d. 25. januar 2006

Skriftlig eksamen i Datalogi

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

Transkript:

Kernealphaerne Indhold af G1 3 små opgaver: 1. Oversæt en kerne og afvikl den på en kernealpha 2. Håndoversæt en C/C++ funktion til alpha assembler 3. Implementer procedurer til dynamisk lagerallokering og anvend dem (inkl. aflusning) i en eksisterende kerne DIKU s net udviklings nettet udviklings udviklings kerne Ethernet HUB Linux PC sniffer Konsolboks kerne kerne Ethernet HUB 1 2 3 4 5 6 erne Udviklingsalpha erne: vile ve bure borr Prøv: ng2h del1-alpha Kernealpha erne archimedes diophant eudoxos euklid hypatia ptolemaios pythagoras thales zenon 1

7 Opgave 1 Opgave 2 Hent d-kernen, oversæt den og kør den på en kerne-alpha: d-kernen findes i ~dat1f/kb4/kerner Kursusbog bind 5: Afsnit 3.5 beskriver hvordan man generelt oversætter, overfører og udfører et program på en kerne-alpha Afsnit 3.6 beskriver hvordan man oversætter, overfører og udfører en af kursusbog-kernerne på en kerne-alpha 8 Håndoversættelse af en C/C++ funktion til alphaassembler Funktionen finder den mindste værdi blandt et antal poster i et søgetræ 3 9 værdi nøgle 31 11 134 89 241 27 890 56 314 10 Gennemsøgningsfunktion Knuderne i træet keynode* findmin(keynode *root) { keynode *childmin; keynode *tempmin; Hver knude har formen: typedef struct node { int key; int value; struct node *left; struct node *right; keynode; tempmin = root; if(root->left!= NULL) { childmin = findmin(root->left); if(childmin->value < tempmin->value) tempmin = childmin; if(root->right!= NULL) { childmin = findmin(root->right); if(childmin->value < tempmin->value) tempmin = childmin; return tempmin; left og right posterne er NULL hvis der ikke er et barn til den side 11 12 2

Testeksempler - assembler I ~dat1f/g1/trees.h er der angivet en række testtræer: // Tree 0: result 42 keynode t0_n1_1 = {4, 42, NULL, NULL; keynode *t0_root = &t0_n1_1; Beskrives i kursusbog bind 5: Kapitel 4: Programmering i assembler samt definitionen af keynode 13 14 findmin: Funktionsdefinition i assembler.ent findmin.globl findmin ldgp gp, (pv) <gem udvalg af registre på stakken> <programkode for findmin> <reetabler registre fra stakken> ret (ra).end findmin Funktionskald i alpha-assembler <gem udvalgte registre på stak> <initialiser argumentregistre> lda pv, findmin jsr ra, (pv) ldgp gp, (ra) <processering af returværdi (v0)> <retabler udvalgte registre fra stak> 15 16 Register $0 $1-$8 $9-$15 $16-$21 $22-$25 $26 $27 $28 $29 $30 $31 Registrene på en Navn v0 t0-t7 s0-s6 a0-a5 t8-t11 ra pv at gp sp zero Funktion Returværdi Temp. registre Mellemregn. overlever funktionsk. Funktionsargumenter Mellemregninger Returadresse Addr. på kaldte procedure Reserveret assembler Global peger Stak peger Er altid nul Hvem gemmer kaldte kaldte Kaldte 17 Opgave 3 Bibliotek til dynamisk lagerallokering To funktioner: void *malloc(size_t size): allokerer en klods lager af størrelsen size på hoben void free(void *p): frigiver den klods lager, som p peger på 18 3

Diverse G1 skal afleveres fredag 20. februar klokken 14:00 i DIKUs førstedelsadministration Tidligere på ugen har I fra Kernighan & Ritchie: The C Programming Language (2nd edition) fået udleveret: Kapitel 5: Pointers and Arrays Kapitel 6: Structures Appendiks B: Standard Library 19 Lagerallokering: malloc/free eksempel int main (void) { keynode *knode; knode = (keynode *) malloc(sizeof(keynode)); knode->key = 4; knode->value = 54; knode->left = NULL; knode->right = NULL; printf( %d\n, findmin(knode)->value); free(knode); 20 Lagerallokering: new/delete eksempel int main (void) { keynode *knode; knode = new keynode; // ingen typecast/size_of knode->key = 4; knode->value = 54; knode->left = NULL; knode->right = NULL; printf( %d\n, findmin(knode)->value); Allokering af hukommelse Funktioners lokale variable allokeres typisk på stakken Dynamisk allokerede variable allokeres på hoben HOB KODE delete knode; 21 STAK 22 Allokering af objekter på hoben: simpel algoritme Hoben består af en samling klodser af data, der enten: er allokerede (dvs. optaget) er frie (ikke optaget) Ved et kald til malloc skal der findes en fri blok, der har mindst samme størrelse som den forespurgte (og helst samme størrelse). Ved et kald til free markeres blokken som værende fri. 23 Dynamisk lagerallokering First-fit: en proces tildeles det første hul, der er stort nok Best-fit: en proces tildeles det hul, der passer bedst (efterlader det mindste nye hul). Kræver en gennemsøgning af alle frie blokke medmindre blokke er sorteret efter størrelse. Worst-fit: en proces tildeles det hul, der passer dårligst (efterlader det største nye hul). Kræver også gennemsøgning af alle frie blokke 24 4

Fragmentering Ekstern fragmentering: opdelingen af arbejdslageret efterlader huller mellem allokerede blokke: Måske ikke er store nok til at tilfredsstille forespørgsler efter yderligere lager Intern fragmentering: pga. effektivitetshensyn uddeles arbejdslageret kun i blokke af en vis størrelse S. I værste fald spildes S-1 bytes hver gang der allokeres lager Ekstern fragmentering kan afhjælpes: omorganisering af lager på køretidspunkt: sammenlægning af frie blokke til en stor blok kræver at lagerafbildning kan ændres på køretidspunkt lagerområder kan være bundet af I/O aktivitet (I/O enheder arbejder typisk med fysiske adresser) 25 Algoritme anvendt i G1 Prøv at allokere en klods(klodsstørrelse) { Register at der ikke er fundet en mindste blok af passende størrelse For hver klods i hoben Hvis klodsen er større end klodsstørrelse, klodsen ikke allerede er i brug og klodsen er mindre end den nuværende mindste klods Så Register klodsen som værende den aktuelt mindste brugbare klods. Hvis klodsstørrelse er lig størrelsen på den fundne klods Hop ud af for-løkken. Hvis ingen klods blev fundet Returner NULL. Ellers Marker den fundne blok som værende i brug Hvis klodsstørrelse er mindre end størrelsen af den fundne klods Så Den fundne klods klippes over i to dele og en ny tom klods oprettes. Returner den fundne klods. 26 Eksempel på administration af hob p = malloc(0x007.fff0); p2 = malloc(0x007.fff0); free(p); free(p2); 0x040.0000 0x038.0000 0x036.0000 0x038.0000 0x000.0000 Ledig: Nej Ja 0x000.0000 0x036.0000 Ledig: Nej Ja 0x000.0000 Ledig: Ja Kommentarer til implementation I kan antage at argumentet til free altid har en korrekt værdi Algoritmen lider af fragmentering: I er velkomne til f.eks. at sammenlægge blokke, men det er ikke et krav I kan IKKE flytte rundt på allokerede blokke! 27 28 Udførsel på kernealphaerne Programmer på kernealphaerne har kun de funktioner til rådighed, der er implementeret i den benyttede kerne: intet standardbibliotek eller køretidsbibliotek er tilgængeligt for jeres kode der er f.eks. ikke indbyggede standard funktioner for new og delete destruktøren for en klasse kalder en funktion builtin_delete, der ikke er defineret konstruktører og destruktører kaldes ikke automatisk for statisk allokerede klasser 29 Aflusning Til aflusning af kode på udviklingsalphaerne: gdb Til aflusning af kode på kernealpha erne: ladebug (fjerndebugger med kildetekstsupport der styres fra en udviklingsalpha) debug monitor på alphaerne Lav først en version, der virker på udviklingsalpha erne (se evt. testprogram.cc for at se hvordan det kan gøres) 30 5

Brug nyhedsgruppen diku.dat1f hvis I har problemer eller spørgsmål Vi ses næste gang den 23. februar!! 31 6