Datalogi 1F Forår 2003 G1 Jørgen Sværke Hansen

Slides:



Advertisements
Lignende præsentationer
NemID og Fællesskema 2014 v/Signe Hansen Blegmand
Advertisements

Niveauer af abstrakte maskiner
Hvordan programmerer man?? STREAM - en model. Programmører arbejder ofte i teams Hver programmør arbejder på sin del af en større helhed.
07 – Kort om OO Introduktion.
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
Almindelige ("hårde") links (i filsystemer med i-noder) opg.txt jens: pia: ln /home/pia/opg.txt /home/jens/opg.txt hård link: ny post får i-node-nummer.
1 C-kursus 6. Lektion n Repetition af 5. Lektion n Vi mødes igen kl til gennemgang af 6. Lektion.
1 Rekursion og algoritmedesign. 2 Rekursion Rekursiv definition af X: X defineres i termer af sig selv. Rekursion er nyttig, når en generel version af.
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
Symbolsk maskinsprog.
Datastrukturer Simple-type structs
Distribueret programmering, specielt.NET Remoting Rasmus D. Lehrmann DM
Flerbrugermaskine Fælles maskine Root: webserver Peter: uploader filer Pia: programudvikling 1 langvarig proces, evt. med børneprocesser skiftende behov.
Grundlæggende programmering Efterår 2001
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal.
Hvordan man skriver koden.
Structs Structs allokeres på stakken Memory-allokering sker ved oprettelse af variabel og ikke ved new Der kan defineres metoder incl. Constructor. Eksempel.
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
1 UNION-FIND. 2 inddata: en følge af heltalspar (p, q); betydning: p er “forbundet med” q uddata: intet, hvis p og q er forbundet, ellers (p, q) Eksempel.
GP 10, 7/ Grundlæggende programmering Efterår 2001 Forelæsning 10 onsdag 7/ kl. 9:15 – 12:00.
Operativsystemer [3]: Synkronisering og baglåse Datalogi 1F: Forår 2003 Jørgen Sværke Hansen
Induktion og rekursion
GP12, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 12 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi.
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal.
FEN Rekursion og induktion1 Induktion og (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler.
Delphi og C++ Builder C++ Referencer og pointere.
MATLAB Programmering Anders P. Ravn Institut for Datalogi Aalborg Universitet Forår 2005 d = size(s); for k = 1:d(1), for n = 1:d(2), if (s(k,n) < 0) r(k,n)
Datastrukturer og Collections Rasmus D. Lehrmann DM
Programmering af dynamiske websider pages/tutorials/introducing-aspnet- web-pages-2/intro-to-web-pages- programming.
1 Datalogi C Datastrukturer og algoritmer ved Keld Helsgaun.
1 Sortering I elementære metoder. 2 Plan Terminologi Elementære metoder til sortering -sortering ved udvælgelse -sortering ved indsættelse -Shellsort.
Datalogi 1F Forår 2003 Multiprogrammering[3] Eksempler på multiprogrammeringskerner Jørgen Sværke Hansen
Intro til C# apps Kodegennemgang af simpel C# app
Buttom-up parsning: Hvor er vi Mellem- kode Kald til Runtimesys. Mellemk.- optimering Kode- generering Kode- optimering Leksikalsk- analyse Syntax- analyse.
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel 2.3, , problem 30.1.c] Gerth Stølting Brodal.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
W1b1 PC baseret analyse og simulering. w1b2 Definition Digital Elektronisk beregningsmaskine, der har intern hukommelse til lagring af program og mellem-regninger.
1 PC baseret dataanalyse og simulering Week2 A. 2 SAS input/output filer Inddata -textfil - SAS-program -textfil- SAS datasæt SAS system SAS listing -print.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
FEN KbP/seminar2: design11 Kontraktbaseret programmering Seminar 2 Klassedesign – grundprincipper Eksempler: Stack Dictionary.
Objekter og klasser Rasmus D. Lehrmann DM
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Procestræ under afvikling af cp init login shell cp cp src dest.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
Paradigmer i Programmering 1. Program for idag : Funktioner og udtryk i SML : Øvelse : Frokost – 14.00: Deklarative.
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal Aarhus Universitet.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Per Printz Madsen 1 Linux kernen Monolithic kernel Support for dynamiske moduler Få kerne tråde Preemptive.
Algoritmer og Datastrukturer 2 Del-og-kombiner [CLRS, kapitel , , 28
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Forelæsning 7.1 – repetition
DComNet1 ISA-niveauet (2). dComNet2 Niveauer af virtuelle maskiner ISA niveauet / maskinkodeniveauet / maskinniveau.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Datalogi 1F: Multiprogrammering[3] 1 Planen for idag Kerner uden afbrydelser (KB4 kap. 6): –akernen: kerne med decentralt processkift –bkernen: kerne med.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Multiple processer på web-site Web- server filer Kunde 1 Kunde 2 Kunde p1p2p internet.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Query optimization MICHAEL I
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Præsentationens transcript:

Datalogi 1F Forår 2003 G1 Jørgen Sværke Hansen

Datalogi 1F: G Planen for idag Et gensyn med KFirst G1

Datalogi 1F: G Sidst så vi hvordan man starter den første proces KCurProc = KWaitQ.Get(); KFirst(KCurProc->sp); hvor KFirst er defineret ved: KFirst:ldgp gp, (pv) ldq pv, 0xD8(a0) // Pop pv addq a0, 0xF0,a0 // Skip registre bis a0, 0, sp // Sæt sp jmp (pv) // Hop til processtart

Datalogi 1F: G 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

Datalogi 1F: G Kernealphaerne DIKU’s net udviklings Alpha udviklings Alpha udviklings Alpha Ethernet HUB kerne Alpha kerne Alpha kerne Alpha Konsolboks Alpha nettet Linux PC sniffer

Datalogi 1F: G Alpha’erne Udviklingsalpha’erne: toke vile ve bure borr Prøv: ng2h del1-alpha Kernealpha’erne archimedes diophant eudoxos euklid hypatia ptolemaios pythagoras thales zenon

Datalogi 1F: G

8

9

10

Datalogi 1F: G

Datalogi 1F: G Opgave 1 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

Datalogi 1F: G Opgave 2 Håndoversættelse af en C/C++ funktion til alpha- assembler Funktionen beregner udtryk der er specificeret via binære træer x x

Datalogi 1F: G Knuderne i træet Hver knude har formen: typedef struct node { int value; struct node *left; struct node *right; } exprnode; Hvis knuden er en intern knude (dvs. hvis (left != NULL) && (right != NULL) angiver value en operation: –1 angiver addition –2 angiver multiplikation Hvis knuden er en bladknude, angive value en heltallig værdi

Datalogi 1F: G Beregningsfunktionen int calc(exprnode *root) { int rval, lval; if(root == NULL) return 0; if((root->left == NULL)&&(root->right == NULL)) return root->value; else { lval = calc(root->left); rval = calc(root->right); switch(root->value) { case ADDOP: return lval+rval; case MULOP: return lval*rval; default: return 0; }

Datalogi 1F: G Testeksempler I ~dat1f/G1/trees.h er der angivet en række testtræer: // Tree 0: result 42 exprnode t0_n1_1 = {42, NULL, NULL}; exprnode *t0_root = &t0_n1_1; samt definitionen af exprnode

Datalogi 1F: G Alpha-assembler Beskrives i kursusbog bind 5: –Kapitel 4: Programmering i Alpha- assembler

Datalogi 1F: G Funktionsdefinition i Alpha- assembler.ent calc.globl calc calc: ldgp gp, (pv) ret (ra).end calc

Datalogi 1F: G Funktionskald i alpha-assembler lda pv, calc jsr ra, (pv) ldgp gp, (ra)

Datalogi 1F: G Registrene på en Alpha RegisterNavnFunktionHvem gemmer $0v0Returværdikaldende $1-$8t0-t7Temp. registrekaldende $9-$15s0-s6Mellemregn. overlever funktionsk. kaldte $16-$21a0-a5Funktionsargumenterkaldende $22-$25t8-t11Mellemregningerkaldende $26raReturadressekaldte $27pvAddr. på kaldte procedurekaldende $28atReserveret assemblerkaldende $29gpGlobal pegerkaldende $30spStak pegerKaldte $31zeroEr altid nul

Datalogi 1F: G 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å

Datalogi 1F: G Diverse G1 skal afleveres onsdag 26. februar klokken 14:00 i DIKUs førstedelsadministration Sammen med G1 har I fået fra Kernighan & Ritchie: The C Programming Language (2nd edition) fået udleveret: – Kapitel 5: Pointers and Arrays – Kapitel 6: Structures –Appendiks B: Standard Library

Datalogi 1F: G Lagerallokering: malloc/free eksempel int main (void) { exprnode *enode; enode = (exprnode *) malloc(sizeof(exprnode)); enode->value = 54; enode->left = NULL; enode->right = NULL; printf(”%d\n”, calc(enode)); free(enode); }

Datalogi 1F: G Lagerallokering: new/delete eksempel int main (void) { exprnode *enode; enode = new exprnode; // ingen typecast/size_of enode->value = 54; enode->left = NULL; enode->right = NULL; printf(”%d\n”, calc(enode)); delete enode; }

Datalogi 1F: G Allokering af hukommelse Funktioners lokale variable allokeres typisk på stakken Dynamisk allokerede variable allokeres på hoben HOB KODE STAK

Datalogi 1F: G 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.

Datalogi 1F: G Ledig: NejLedig: Ja Ledig: Nej Eksempel på administration af hob 0x Ledig: Ja 0x x x x Ledig: Ja 0x x p = malloc(0x007.FFF0); p2 = malloc(0x007.FFF0); free(p); free(p2);

Datalogi 1F: G Kommentarer til implementation I kan antage at argumentet til free altid har en korrekt værdi (men ellers kan de klares med f.eks. et magisk tal) Algoritmen lider af intern 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!

Datalogi 1F: G 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

Datalogi 1F: G 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)

Datalogi 1F: G Referencer i C++ void g() { int s = 0; int& sr = s; sr += 5; // sr = 5 efter dette int *ps = &s; *ps += 5; // s == sr == *ps == 10 ps += 5; // addr ps forhøjes med // 5*4 bytes }

Datalogi 1F: G Mere reference void inc(int& val) { val++; } main() { val = 1; inc(val); //val == 2 } void inc(int* val) { (*val)++; } main() { val = 1; inc(&val); //val == 2 }

Datalogi 1F: G Brug nyhedsgruppen diku.dat1f hvis I har problemer eller spørgsmål Vi ses næste gang den 28. februar!!