T.P. Kød - TP Netmarked

Computere og Netværk (dComNet)
http://www.cs.au.dk/dComNet
Jens Kargaard Madsen ([email protected])
Jens Bennedsen ([email protected])
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 DA6, Torsdag 14-18, Stibitz-113
Hold DA2, Mandag 8-12, Stibitz-123
Hold DA7, Onsdag 14-18, Stibitz-113
Hold DA3, Mandag 8-12, Stibitz-113
Hold IT1, Torsdag 11-15, Stibitz-123
Hold DA4, Onsdag 14-18, Stibitz-123
Hold IT2, Onsdag 8-12, Stibitz-123
Hold DA5, Torsdag 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,
ENIAC,
PDP-1,
Babbage, 1834
Mauchley, Eckert, 1946
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
Java kode
/* towers.c */
/* Towers.java */
#include <stdio.h>
public class Towers {
void towers(int n, int i, int j)
{
int k;
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);
}
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);
}
}
}
int main(int argc, char *argv[])
{
towers(3, 1, 3);
}
public static void main(String[] args) {
towers(3, 1, 3);
}
}
dComNet
18
Eksempel - Towers of Hanoi (2)
Java kode v.2
/* 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); } }
Java kode v.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
registernavne
etiketter (labels)
operander
direktiver
movl $6,%edx
%edx, %eax, %ebp, %esp
.towers, .L3:
$-4, 16(%ebp)
.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
movl
subl
movl
subl
movl
$6,%edx
%edx,%eax
16(%ebp),%eax
%eax,%edx
12(%ebp),%edx
%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
movl
subl
movl
subl
movl
$6,%edx
%edx,%eax
16(%ebp),%eax
%eax,%edx
12(%ebp),%edx
%edx,-4(%ebp)
dComNet
24
Pentium Stak
Værdier kan lagres også på stakken ...
k = 6 - i – j;
movl
movl
subl
movl
subl
movl
$6,%edx
%edx,%eax
16(%ebp),%eax
%eax,%edx
12(%ebp),%edx
%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
dComNet
42
44
45
46
47
48
49
50
51
52
53
bipush 6
iload_1
isub
iload_2
isub
istore_3
iload_0
iconst_1
isub
iload_1
iload_3
[…]
26
JVM ordrer
42
44
45
46
47
48
bipush 6
iload_1
isub
iload_2
isub
istore_3
dComNet
27
JVM Stak
JVM giver kun mulighed for at lagre værdier på en stak…
k = 6 - i – j;
bipush 6
iload_1
isub
iload_2
isub
istore_3
//
//
//
//
//
//
6,...
i,6,...
6-i,...
j,6-i,...
6-i-j,...
...
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
bipush 12
isub
// 20, ...
// 12,20, ...
// 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
Clocked D-latch
1-bit ALU
dComNet
40
Computere og netværk
dComNet
41
TCP/IP Protokolstakken
dComNet
42
?
dComNet
43