Computere og Netværk (dcomnet)



Relaterede dokumenter
Maskinarkitektur. Lars Kristensen Christian Storm dmasark 1

Introduktion til Computerarkitektur. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Eksamen dcomnet Q2/2010. Navn

Niveauer af abstrakte maskiner

Operativsystemer - dopsys

Eksamen dcomnet 2012Q4. Årskortsnummer Navn

Eksamen dcomnet Q2/2012. Studiekortsnummer Navn

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet)

Pentium IA-32 Maskinarkitekturen

Mikroarkitektur. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

dcomnet-nr. 6 Talrepræsentation Computere og Netværk (dcomnet)

Computerarkitektur Eksamen 2014Q3. Niels Olof Bouvin. Studienummer Navn

DM502. Peter Schneider-Kamp

Eksamen Computerarkitektur 2013Q4. Niels Olof Bouvin. Studienummer Navn

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Introduktion til Operativsystemer

Multiple Choice Prøver

CPUer og maskinkode DM534. Rolf Fagerberg

Abstrakte datatyper C#-version

Grundlæggende Algoritmer og Datastrukturer. Analyseværktøjer [CLRS, 1-3.1]

Algoritmer og Datastrukturer 1

Computerarkitektur. - en introduktion til computerarkitektur med LINDA

Niveauer af abstrakte maskiner

Indhold. Maskinstruktur Kapitel 1. Assemblersprog Indledning Hop-instruktioner Input og output...

Principper for Samtidighed og Styresystemer

Niveauer af abstrakte maskiner

Introduktion til C programmering

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

BRP Kursusintroduktion og Java-oversigt

Programmering i C. Lektion december 2008

Computer netværk og TCP/IP protokoller. dcomnet 1

Processer og tråde. dopsys 1

Singleton pattern i Java

Løsning af møntproblemet

Introduktion til programmering. Intro

Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i)

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

Programmering 2. dprog2 E

Programmering 2. dprog2 E

Algorithms & Architectures II

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Test af It-komponent

Hvad er Objekter - Programmering

Introduktion til Datalogi

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

Computer netværk og TCP/IP protokoller. dcomnet 1

Hvad er et distribueret objekt? Plan Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation

DM507 Algoritmer og datastrukturer

Grundlæggende Programmering ITU, Efterår Skriftlig eksamen i Grundlæggende Programmering

Bits, bit operationer, integers og floating point

Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft

Tree klassen fra sidste forelæsning

Kvantitative metoder 1

DANMARKS TEKNISKE UNIVERSITET

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

Rekursion og dynamisk programmering

Skriftlig eksamen i Datalogi

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

Arduino Programmering

Kursus 02199: Programmering. Lidt om forelæseren. Velkommen til. Praktisk information: kursusaktiviteter. Praktisk information: forelæsninger

DATALOGI 1E. Skriftlig eksamen mandag den 23. juni 2003

DM507 Algoritmer og datastrukturer

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Design af et ISA. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Transkript:

Computere og Netværk (dcomnet) http://www.cs.au.dk/dcomnet Jens Kargaard Madsen (jkm@iha.dk) Jens Bennedsen (jbb@iha.dk) dcomnet 1

Computere og netværk Beskrivelse At give den studerende kendskab til computere og netværks opbygning og virkemåde. Herunder hvorledes en computer kan opfattes som niveauer af abstrakte maskiner realiseret i hardware og software [...] Læringsmål Deltagerne skal ved afslutningen af kurset kunne: forklare opbygningen af computere som niveauer af virtuelle maskiner, beskrive formål, opbygning og begreber på de enkelte niveauer, anvende begreber og programmere på de enkelte niveauer. forklare opbygningen af større og mindre netværk af computere. dcomnet 2

Undervisningsmateriale Andrew S. Tanenbaum Structured Computer Organisation (SCO) 5. udgave, Prentice-Hall, 2005 Derudover kapitler fra bog omkring TCP/IP netværk. Noter, vejledninger og ugesedler hentes via www-siderne. dcomnet 3

Øvelser Hold DA1, Fredag 12-16, Stibitz-113 Hold DA2, Mandag 8-12, Stibitz-123 Hold DA3, Mandag 8-12, Stibitz-113 Hold DA4, Onsdag 14-18, Stibitz-123 Hold DA5, Torsdag 8-12, Stibitz-123 Hold DA6, Torsdag 14-18, Stibitz-113 Hold DA7, Onsdag 14-18, Stibitz-113 Hold IT1, Torsdag 11-15, Stibitz-123 Hold IT2, Onsdag 8-12, Stibitz-123 Holdbytte kun muligt hvis man har en at bytte med! Nogle af jer er ikke sat på et hold af studiekontoret. Mød op på det hold der passer jer bedst. dcomnet 4

Ugesedler og opgaver Ugeseddel offentliggøres på hjemmesiden senest mandag eftermiddag: Læsestof for fredagens forelæsning Opgaver til øvelser i den efterfølgende uge Der trykkes ikke ugesedler: Tavle- og diskussionsopgaver Ugeopgaver Ugeopgaver er obligatoriske og skal laves i grupper. Dan grupper af 2-3 personer senest ved første øvelsesgang. Grupper er faste og kan ikke gå på tværs af øvelseshold. dcomnet 5

Eksamen Kræver at samtlige seks ugeopgaver er afleveret. Eksamen er multiple choice eksamen (og derved skriftlig) og uden forberedelsestid. Eksamen varer 60 minutter. Selvom det er MC er det IKKE en test af fakta dcomnet 6

Eksempel på eksamensspørgsmål dcomnet 7

Eksamen - vurdering Karakteren gives efter 7-skalaen og eksamen er med ekstern censur. Karakteren bestemmes af to komponenter: Der udbydes hver uge en ugeopgave, der skal afleveres inden den fastsatte tidsfrist (seks i alt). Den bedømmes med op til 10 point (for en fuldstændig, kreativ, gennemarbejdet, afprøvet, korrekt, og veldokumenteret besvarelse). Besvarelserne udarbejdes i grupper på 2-3 studerende og alle medlemmer af gruppen modtager det samme antal point. Ugeopgaverne skal afleveres til den fastsatte deadline og der er ikke mulighed for genaflevering. Det er ikke tilladt at samarbejde med andre grupper om disse opgaver. Alle ugeopgaverne kan tilsammen give 60 point. Efter kurset afholdes en individuel multiple choice prøve af en times varighed uden forberedelse. Besvarelsen bedømmes på en skala fra 0% til 100%, der vægtes til 60 point. Pensum til denne prøve er slides, noter og de angivne afsnit af bogen. Til eksamen må bogen medtages. Noter og slides må medtages på papir, da computer eller andet elektronisk ikke må anvendes. Det er et krav, at der er opnået mindst 30 point for ugeopgaverne og 30 point i den individuelle multiple choice for at bestå kurset (dvs. mindst karakteren 02). Den endelige karakter gives med en ligelig vægt fra ugeopgaverne og multiple choice eksamen under forudsætning af 3. dcomnet 8

dcomnet 9

Computere og netværk Beskrivelse At give den studerende kendskab til computere og netværks opbygning og virkemåde. Herunder hvorledes en computer kan opfattes som niveauer af abstrakte maskiner realiseret i hardware og software [...] Læringsmål Deltagerne skal ved afslutningen af kurset kunne: forklare opbygningen af computere som niveauer af virtuelle maskiner, beskrive formål, opbygning og begreber på de enkelte niveauer, anvende begreber og programmere på de enkelte niveauer. forklare opbygningen af større og mindre netværk af computere. dcomnet 10

Rigtige maskiner transistorer 1948 integrerede kredsløb, 1958 Difference,Analytical Engine, Babbage, 1834 ENIAC, Mauchley, Eckert, 1946 PDP-1, DEC, 1960 PDP-11, DEC, 1970 VLSI, 1980 IBM PC, 1981 dcomnet 11

Typisk opbygning von Neumann maskinarkitektur: First Draft of a Report on the EDVAC, John von Neumann, 1946 Maskiner Afvikle programmer gemt i lageret/hukommelsen. Programmer skrives i et programmeringssprog dcomnet 12

Virtuelle / Abstrakte Maskiner En (virtuel) maskine definerer instruktioner og datatyper. En virtuel maskine kan programmeres som en fysisk maskine. dcomnet 13

Fornuftige spørgsmål om en maskine 1. Hvad skal maskinen bruges til? 2. Hvordan programmeres maskinen? 3. Hvordan er maskinen opbygget? I dcomnet vil vi undersøge de forskellige niveauer udfra disse spørgsmål, fokus afhænger af niveau... dcomnet 14

Niveau 5: Højniveausprog dcomnet 15

Niveau 5: Højniveausprog Java, C, C++, Pascal, SQL, Algol-60, Fortran,... Begreber variabler, typer, værdier,.. tildelingssætninger, if-then-else, while,.. procedurer, funktioner, klasser, objekter,... Programmet er statisk, mens udførelsen er dynamisk k = 6 - i j; værdier gemmes i variabler som ændres under udførelsen. dcomnet 16

Eksempel - Towers of Hanoi Problem: Flyt n skiver fra pind 1 til 3... Algoritme: - flyt n-1 skiver fra pind 1 til 2 - flyt 1 skive fra pind 1 til 3 - flyt n-1 skiver fra pind 2 til 3 dcomnet 17

Eksempel - Towers of Hanoi C kode /* towers.c */ #include <stdio.h> void towers(int n, int i, int j) { int k; Java kode /* Towers.java */ public class Towers { public static void towers(int n, int i, int j) { int k; } if (n == 1) printf ("Move a disk from %d to %d\n", i, j); else { k = 6 - i - j; towers(n-1, i, k); towers(1, i, j); towers(n-1, k, j); } int main(int argc, char *argv[]) { towers(3, 1, 3); } } if (n == 1) System.out.println ("Move a disk from " + i + " to " + j); else { k = 6 - i - j; towers(n-1, i, k); towers(1, i, j); towers(n-1, k, j); } } public static void main(string[] args) { towers(3, 1, 3); } dcomnet 18

Eksempel - Towers of Hanoi (2) Java kode v.2 Java kode v.3 /* Towers.java */public class Towers { public static void towers(int n_, int n, int n ) { int n ; if (n_ == 1)System.out.println("Move a disk from " + n + " to " + n ); else { n = 6 - n - n ; towers(n_-1, n, n ); towers(1, n, n ); towers(n_-1, n, n ); } } public static void main(string[] args) { towers(3, 1, 3); } } /* Towers.java */ public class Towers { { public static void towers(int n, int from, int to) int via; if (n == 1) System.out.println ("Move a disk from " + from + " to " + to); else { via = 6 - from - to; towers(n-1, from, via);//one disc left on from towers(1, from, to); //move the one disc towers(n-1, via, to); //move the rest } } } public static void main(string[] args) { towers(3, 1, 3); } dcomnet 19

Niveau 4: Symbolsk maskinsprog dcomnet 20

Niveau 4: Symbolsk maskinsprog Højniveausprog oversættes til symbolsk maskinsprog gcc -S towers.c javac towers.java; javap -c towers > towers.code Begreber ordrenavne movl $6,%edx registernavne %edx, %eax, %ebp, %esp etiketter (labels).towers,.l3: operander $-4, 16(%ebp) direktiver.string Move... dcomnet 21

towers.s (Pentium).section.rodata.LC0:.string "Move a disk from %d to %d\n".text.align 4.globl towers.type towers,@function towers: pushl %ebp movl %esp,%ebp subl $24,%esp cmpl $1,8(%ebp) jne.l3 addl $-4,%esp movl 16(%ebp),%eax pushl %eax [ ].L3: movl $6,%edx movl %edx,%eax subl 16(%ebp),%eax movl %eax,%edx subl 12(%ebp),%edx movl %edx,-4(%ebp) addl $-4,%esp movl -4(%ebp),%eax pushl %eax movl 12(%ebp),%eax pushl %eax movl 8(%ebp),%eax decl %eax pushl %eax call towers addl $16,%esp addl $-4,%esp [ ] dcomnet 22

Pentium ordrer.l3: movl $6,%edx movl %edx,%eax subl 16(%ebp),%eax movl %eax,%edx subl 12(%ebp),%edx movl %edx,-4(%ebp) [ ] Sammenligning af Intel og AT&T syntax: http://www.ibm.com/developerwor ks/library/l-gas-nasm.html dcomnet 23

Pentium Registre Værdier kan lagres i registre (register maskine). k = 6 - i j; movl $6,%edx movl %edx,%eax subl 16(%ebp),%eax movl %eax,%edx subl 12(%ebp),%edx movl %edx,-4(%ebp) dcomnet 24

Pentium Stak Værdier kan lagres også på stakken... k = 6 - i j; movl $6,%edx movl %edx,%eax subl 16(%ebp),%eax movl %eax,%edx subl 12(%ebp),%edx movl %edx,-4(%ebp) Hver instans af towers har sin eget stakafsnit (stack frame) som udpeges af ebp registret. dcomnet 25

towers.code (JVM) Method void towers(int, int, int) 0 iload_0 1 iconst_1 2 if_icmpne 42 5 getstatic #2 8 new #3 11 dup [ ] 29 iload_2 30 invokevirtual #7 33 invokevirtual #9 36 invokevirtual #10 39 goto 71 42 bipush 6 44 iload_1 45 isub 46 iload_2 47 isub 48 istore_3 49 iload_0 50 iconst_1 51 isub 52 iload_1 53 iload_3 [ ] dcomnet 26

JVM ordrer 42 bipush 6 44 iload_1 45 isub 46 iload_2 47 isub 48 istore_3 dcomnet 27

JVM Stak JVM giver kun mulighed for at lagre værdier på en stak k = 6 - i j; bipush 6 // 6,... iload_1 // i,6,... isub // 6-i,... iload_2 // j,6-i,... isub // 6-i-j,... istore_3 //... dcomnet 28

IJVM Simplificering Java s Virtuelle Maskine (JVM): Senere vil vi behandle Pentium IA-32 markinarkitekturen. dcomnet 29

Niveau 2: Maskinniveau (ISA) dcomnet 30

Niveau 2: Maskinniveau (ISA) Programmer i symbolsk maskinsprog oversættes til absolut maskinkode. von Neumann arkitektur Program lagres som en sekvens af bitmønstre (absolut maskinkode). Begreber lager, lagerceller, registre, ordrer, ordreformat,... dcomnet 31

Pentium ordreformat movl $6,%edx dcomnet 32

JVM / IJVM ordreformat bipush 6 svarer til 00010000 00000110 = 0x10 0x06 dcomnet 33

Udførelse af maskinordrer Via fetch-decode-execute cycle: En aritmetisk/logisk enhed styres af en kontrolenhed... En program counter udpeger den aktuelle ordre i lageret... Typisk via et mikroprogram, der fortolker den aktuelle ordre... dcomnet 34

Niveau 1: Mikroarkitektur niveau dcomnet 35

Niveau 1: Mic-1 Mikroarkitektur Fortolkning af maskininstruktioner: Begreber Busser, registre, dataoverførsel, kontrollager, mikroordrer, clock cykler, fetch-decode-execute, dcomnet 36

Mikroprogrammer 0x64 isub pop two words from stack; push their difference: bipush 20 // 20,... bipush 12 // 12,20,... isub // 8,... Main1... isub1 isub2 isub3 PC=PC+1; fetch; goto (MBR) MAR=SP=SP-1; rd H=TOS MDR=TOS=MDR-H; wr; goto Main1 dcomnet 37

Niveau 0: Digitale niveau dcomnet 38

Niveau 0: Det Digital Niveau Begreber Porte (gates), kombinatoriske kredsløb, lagerkredse, bit, digitale værdier,... dcomnet 39

Kombinatoriske kredsløb og lagre 8-bit ALU 1-bit ALU Clocked D-latch dcomnet 40

Computere og netværk dcomnet 41

TCP/IP Protokolstakken dcomnet 42

? dcomnet 43