Contention. Small-Scale Shared Address Space Multiprocessor (MIMD) Bandbredd till minnet & cacheminnen i multiprocessors

Storlek: px
Starta visningen från sidan:

Download "Contention. Small-Scale Shared Address Space Multiprocessor (MIMD) Bandbredd till minnet & cacheminnen i multiprocessors"

Transkript

1 Small-Scale Shared Address Space Multiprocessor (MIMD) Föreläsning 3: Small-Scale Shared Address Space Multiprocessors & Shared memory programming (OpenMP + POSIX threads) Processorerna kopplade via dynamiskt nätverk/buss till ett gemensamt minne Kommunikation och koordination genom gemensamma variabler i minnet Användaren (kompilatorn) garanterar att data skrivs och läses i rätt ordning (barriärer, semaforer,..) UMA: Alla processorer har samma accesstid till alla minnesmoduler (CC-)NUMA: Processerna har olika accesstid till olika minnesmoduler Datalokalitet (temporal+spatial) viktigt för att erhålla hög prestanda Memory (modules) Memory bus P P P P P Contention Processor-minne kommunikation proportionell mot # proc. Bandbredd ökar proportionell med # processorer Communication Contention Flera processorer vill utnyttja samma länk samtidigt Memory Contention Flera processorer accessar samma minnesmodul samtidigt Serialisering Organisation av minne + nätverk viktiga komponenter för att minska contention Maximalt hundratalet processorer (i praktiken mycket färre), kräver annat än bara en buss Bandbredd till minnet & cacheminnen i multiprocessors Utnyttja lokalitet och inför lokala privata cacheminnen > Minskar accesser till minnet minskar trycket på nätverket Cache-coherence problemet > Flera kopior av ett gemensamt block samtidigt 1

2 Programmering av SMM Multi och Microtasking Stora likheter med programmering av OS Utförs genom mindre utökningar av befintliga programspråk, OS & bibliotek skapa processer/trådar som exekverar parallellt Olika processer/trådar kan tilldelas olika processorer synkronisera och lås kritiska regioner och data UNIX - Grovkornigt (Multitasking) Lediga processorer tilldelas nya processer kontinuerligt Jobbkö, heavy weight tasks Dynamisk lastbalansering, grovkornig Heterogena tasks gör olika saker Dyrt att skapa i både tid och minne (kopierar allt från föräldrern förutom process ID) POSIX threads - Finkornigt (Microtasking) Light weight processes Parallellitet inom applikation (homogena tasks) En applikation är en serie av fork, join Billigt att skapa i både tid och minne (delar minnesutymme och globala variabler) UNIX Process & shared memory UNIX-process har tre segment: text, exekverbar kod data stack, aktiveringspost + dynamiska data Processer är oberoende och har inga gemensamma adresser fork() - code skapar en exakt kopia av data processen ( pid undantaget) stack l UNIX-process + gemensamt data segment l Vid fork() kopieras allt utom det gemensamma code private data private stack shared data code private data private stack Introducing multiple threads l En tråd är en sekvens av instruktioner som exekveras inom ett program l En normal UNIX-process innehåller en enda tråd En process kan innehålla flera trådar Olika delar av samma kod kan exekveras samtidigt Trådarna bildar en process och delar adressrymden, filer, signalhantering mm. Exempelvis: När en tråd öppnar en fil, är den omedelbart tillgänglig för alla trådar När en tråd skriver till en global variabel, är den läsbar av alla trådar Trådarna har egna IP (instruction pointers) och stackar 2

3 Exekvering av trådar Master thread Skapa arbetartrådar med phtread_create() Arbetartrådarna startar Arbetartrådarna gör sitt jobb Arbetartrådarna terminerar Join:a arbetarstrådarna med phtread_join() Master thread Koordinering av parallella processer Lock Mekanism för att upprätthålla en policy för hur gemensamma data får läsas/skrivas Determinism Accessordningen är densamma vid varje körning Nondetermenism Accessordningen slumpmässig Indeterminism (inte bra...) Resultatet av nondetermenism vilket medför att olika resultat kan erhållas vid olika körningar. Safe, Live, and Fair Kritisk sektion, Vägkorsning Safe Lock deterministiska resultat (kan leda till unfairness) Unfair Lock ett jobb får vänta i evighet medan andra gör upprepade accesser. Fair Lock alla får accessa i ungefär den ordning de kom + högerregeln (kan leda till deadlocks= alla väntar på grannen till höger ) Live Lock förhindrar deadlocks. Högerregeln Safe but unfair Högerregeln + först till kvarn (FIFO) Safe, fair but not live Högerregeln + först till kvarn + prioritetsordning Safe, fair and live Tvingas vänta i evighet på oändligt många bilar Alla kommer exakt samtidigt och alla tvingas vänta på varandra deadlock 3

4 Exempel, Spin lock Unsafe Exempel, Spin lock Safe while C do; % spin while C is true C := TRUE; % Lock (C),only one access CR; % Critical section C := FALSE; % unlock(c) l Unsafe båda kommer åt kritisk sektion l Race processerna tävlar om CR Flag[me] := TRUE; while Flag[other] do; CR; Flag[me] := False; % set my flag % Spin % Critical sect. % Clear lock Safe endast en har tillgång till CR; Not live risk för deadlock om alla exekverar 1:a raden samtidigt Exempel på Atomic test and set, Safe och Live Atomic (uninterruptable operation) test and set lock char *lock *lock = UNLOCKED Atomic_test_and_set_lock(lock, LOCKED) % TRUE om lock redan är LOCKED % FALSE om lock ändras från UNLOCKED till LOCKED while Atomic_test_and_set_lock(lock, LOCK); CR; Atomic_test_and_set_lock(LOCK, UNLOCK) % Unlock Locks för samtidig läsning Queue Lock struct q_lock{ int head; int tasks[nprocs]; } lock; void add_to_q(lock, myid) while (head_of_q(lock)!= myid); CR; void remove_from_q(lock, myid); Safe, Live &Fair Kön gör att ingen behöver vänta i evighet på tillträde till CR Nackdel Spinning Hur implementera kön? 4

5 Multiple Readers Lock SkrivQ Krav Väntrum Flera läsare access till CR samtidigt När skrivare dyker upp tillåts inga fler läsare LäsQ Access Room När läsare i CR är klara har skrivare exklusiv rätt till CR Väntrumsanalogin safe, endast en Writer tillåts träda in i Access Room åt gången fair, när en Writer finns i väntrummet så måste Reader i väntrummet tillåta Writer att gå före, utom då en Writer redan är i Access Room fair, när en Reader finns i väntrummet så måste Writer i väntrummet tillåta Reader att gå före, utom då en Reader redan är i Access Room live, inga deadlocks. Alla som kommit in i väntrummet garanteras tillträde till Access Room Shared memory programming - tools OpenMP POSIX threads OpenMP En portabel fork-join parallell modell för arkitekturer med delat minne Portabel Fortran 77 och C/C++ bindings Många implementationer, alla arbetar på samma sätt (i teorin) Fork-join modell Exekvering startar med en tråd Parallell regioner fork:ar nya trådar vid inträdet Trådarna joinas vid slutet av regionen Delat minne (Nästan allt) minne kan nås av alla trådar OpenMP Två sorters parallellism: Grovkornig (task parallelism) Dela i programmet i segment (trådar) som kan exekveras parallellt Implicit join vid slutet av segmentet, eller explicita synkpunkter (såsom barriärer) Ex: låt två olika trådar anropa varsin subrutin parallellt Finkornig (loopparallellism) Exekvera oberoende iterationer av DO-loopar parallellt Flera val av uppdelning Datamiljöer för bägge sorterna: Delat data Privat data 5

6 Thread 1 Thread 2 OpenMP i bilder Thread 3 I = 1I = 2I = 3I = 4I = 5I = 6I = 7I = 8 Design of OpenMP A flexible standard, easily implemented across different platforms Kontrollstrukturer Minimalistiska för enkelhet PARALLEL, DO (for), SECTIONS, SINGLE, MASTER Datamiljöer Nya accessmöjligheter för forkade trådar SHARED, PRIVATE, REDUCTION Task parallelism Loop parallelism Design av OpenMP II Synkronisering Enkel implicit synk vid slutet av kontrollstrukturer Explicit synk för mer komplexa mönster: BARRIER, CRITICAL, ATOMIC, ORDERED, FLUSH Lås subrutiner för finkornig kontroll Runtime environment och bibliotek Hanterar inställningar för forkning och för schemaläggning Ex: OMP_GET_THREAD_NUM(), OMP_SET_NUM_THREADS(intexpr) OpenMP-kapacitet kan (i princip) läggas till valfritt språk I verkligheten har OpenMP applicerats till Fortran och C OpenMP är först och främst en mängd direktiv till kompilatorn I Fortran: strukturerade kommentarer som tolkas av kompilatorn C$OMP directive [clause[,],clause[,],..] I C: pragmas som skickar information till kompilatorn: #pragma omp directive [clause[,],clause[,],..] Kontrollstrukturer I PARALLEL / END PARALLEL Fork och join Antalet trådar ändras ej inom regionen? SPMD-exekvering inom regionen SINGLE / END SINGLE (Kort) sekventiell sektion inom parallell region MASTER / END MASTER SINGLE på master-processor (oftast 0) #pragma omp parallel { S1(); #pragma omp single { S2(); } S3(); } PARALLEL S1 S1 S1 S2 S3 S3 S3 END C$OMP PARALLEL CALL S1() C$OMP SINGLE CALL S2() C$OMP END SINGLE CALL S3() C$OMP END PARALLEL 6

7 Kontrollstrukturer II Kontrollstrukturer III DO / END DO Den klassiska parallella loopen Iterationsrymden delas mellan trådar Statiskt, dynamiskt, guidat Loopindex är normalt privat till trådarna Mer om andra variabler senare C$OMP PARALLEL C$OMP DO DO J = 1, 12 CALL FOO(J) END DO C$OMP END DO C$OMP END PARALLEL PARALLEL END SECTIONS / END SECTIONS Task-parallellism SECTION markerar uppgifter (tasks) Inom en parallell region Nästlad parallellism PARALLEL Kräver en ny parallell region (dvs nytt PARALLEL direktiv) Stöds (tyvärr) inte av alla OpenMP-implementationer END Om det inte stöds, så är den inre PARALLEL:en meningslös PARALLEL END PARALLEL END OpenMP Datamiljöer Delat minne kan vara PRIVATE eller SHARED Deklarera detta i OpenMP-direktiven för parallellism Val SHARED Nås av alla trådar i laget Normalfallet DEFAULT kan ändra detta PRIVATE Varje tråd har en egen kopia Normalt kopieras privata data inte in/ut ur parallella regioner, rörs aldrig av andra trådar FIRSTPRIVATE kopiera det globala värdet till första iterationen LASTPRIVATE - kopierar värdet från sista iterationen Riktlinjer för klassificering av variabler Generellt sätt är stora saker SHARED Huvudmatriserna, de som tar allt utrymme Automatiskt Lokala variabler till subprogram är parallella PRIVATE-variabler Automatiskt Små temporärer är normalt PRIVATE Det krävs oftast en kopia av looptemporärer för varje tråd Automatiskt, för iterationsvariabler 7

8 OpenMP Datamiljöer II REDUCTION-variabler i DO (for) konstruktioner En lokal fas som följs av en global fas. Initieringen hanteras som förväntat Fortran REDUCTION ops/fcns: +, *, -,.AND.,.OR.,.EQV.,.NEQV., MAX, MIN, IAND, IOR, IEOR C reduction operators: +, *, -, &,, ^, &&, OpenMP Datamiljöer III (Fortran) INTEGER X(3), Y(3), Z C$OMP PARALLEL DO DEFAULT(PRIVATE), SHARED(X), & C$OMP REDUCTION(+:Z) DO K = 1, 3 X(K) = K Y(K) = K * k Z = Z + X(K) * Y(K) END DO C$OMP END PARALLEL DO Shared Memory Thread 0 y 1 z 1 Z 36 X Thread 1 y 4 z 8 Thread 2 y 9 z 27 OpenMP Synkronisering Implicita barriärer väntar på alla trådar i laget vid slutet av varje konstruktion DO (for), SECTIONS, SINGLE, MASTER NOWAIT vid END kan bortkoppla synkroniseringen Explicita direktiv för finare kontroll BARRIER Väntar på alla trådar i laget CRITICAL (name), END CRITICAL Endast en tråd i taget ATOMIC - Single-statement kritisk sektion för reduktion ORDERED För att ordna (starten av) loopiterationer Och låsrutiner för att ge accesskontroll OpenMP summering Baserat på fork-join-parallellism i delat minne Trådar börjar i början av en parallell region, kommer tillbaka vid slutet Mappar viss hårdvara bra Länkat till traditionella språk För mer information: 8

9 POSIX threads (IEEE standard) Det är billigare att skapa trådar än att forka nya processer Anrop för att skapa och ta bort trådar Anrop för att synkronisera trådar och för att låsa resurser Anrop för att hantera trådschema etc Pthread: Basala rutiner Funktion: pthread_create() int pthread_create(pthread_t * thread, const pthread_attr_t * attr, void * (*start_routine)(void *), void * arg); pthread_create() skapar en ny tråd inom en process. Tråden startar i rutinen start_routine som tar ett startargument arg. attr specar attribut, eller default-attribut om NULL (se Lab 1). Om pthread_create()-rutinen lyckas, returneras 0 och den nya trådens ID läggs i thread, annars returneras en felkod. Att avsluta en tråd Funktion: pthread_exit() void pthread_exit(void * status); Avslutar den för närvarande körande tråden och gör status tillgängligt till den tråd som joinar, pthread_join(), med den terminerande tråden. Ett annat sätt att avsluta: return. Threads som inte joinas kallas detached. Bör användas om man inte explicit behöver joina dem: mer effektivt! Hello World... or World Hello? void *print_message_function( void *ptr ); main() { pthread_t thread1, thread2; char *message1 = "Hello, *message2 = "World"; void *status1, *status2; pthread_create(&thread1, NULL, print_message_function, (void*) message1); pthread_create(&thread2, NULL, print_message_function, (void*) message2); pthread_join(thread1, &status1); pthread_join(thread2, &status2); return 0; } void *print_message_function( void *ptr ) { char *message; message = (char *) ptr; printf("%s ", message); } 9

10 Joining threads Funktion: pthread_join() int pthread_join(pthread_t thread, void ** status); Om måltråden thread ej är detached ( avkopplad ) så väntar pthread_join() på att måltråden thread ska avslutas. Identifying and comparing threads Funktion: pthread_self() and pthread_equal() pthread_t pthread_self(void); returnerar id för den anropande tråden. int pthread_equal(pthread_t thread_1, pthread_t thread_2); jämför id för thread_1 and thread_2 och returnerar nollskilt värde om id:na representerar samma tråd Pthread: Synkroniseringsroutiner Funktion: pthread_mutex_init() int pthread_mutex_init(pthread_mutex_t * mutex, const pthread_mutex_attr *attr); Skapar en ny mutex (mutually exclusive lock), där attr specificerar attribut, eller defaultattribut om attr är NULL. int pthread_mutex_destroy(pthread_mutex_t * mutex); int pthread_mutex_lock(pthread_mutex_t * mutex); Låser mutexen mutex. Om mutex redan är låst, blockas den anropande tråden till mutex blir tillgänglig. int pthread_mutex_trylock(pthread_mutex_t * mutex); critical section (one thread only at one time) int pthread_mutex_unlock(pthread_mutex_t * mutex); Condition variables Tillståndsvariabler associeras med en specifik mutex kan låsa en tråd tills en signal ges från annan tråd Funktion: pthread_cond_init(). Skapar en ny tillståndsvariabel: int pthread_cond_init(pthread_cond_t * cond, const pthread_cond_attr *attr); int pthread_cond_signal(phtread_cond_t * cond ); int pthread_cond_destroy(pthread_cond_t * cond); int pthread_cond_wait(pthread_cond_t * cond, pthread_mutex_t * mutex); 10

11 Pthreads - allmänt #include <pthread.h> först i programmet Länka med lpthread På chips: Använd kompilatorerna xlc_r (cc_r) / xlf_r Kontrollera alltid felkoder! Mer info: Getting Started With POSIX Threads, man-sidor Typiska prestandaproblem Problem: Otillräcklig parallellism Symptom: flat scaling Åtgärd: parallellisera andra sektioner / nästlad parallellism Problem: För dyr synkronisering Symptom: kostnaden ökar med fler processorer Åtgärd: NOWAIT / kombinera konstruktioner / parallellisera på högre nivå / bättre synkroniseringscheman Problem: Dåligt cacheanvändande Symptom: dålig enprocessor-prestanda Åtgärd: justera loopar / ändra datastrukturer och/eller accesser till dessa Pros n cons Portabilitet OpenMP: Bra C/FORTRAN-kompilatorer Pthreads: bibliotek. Nu även med FORTRAN bindings Funktionalitet OpenMP: Perfekt för HPC-applikationer! Pthreads: Lite mer generellt, men viss funktionalitet saknas (exempel: barriärer) Prestanda OpenMP är bättre än pthreads för finkorniga problem. Skapar dessutom inte parallellism i onödan Nyare versioner av pthreads är även de effektiva Standard OpenMP är relativt nytt som standard Pthreads är stabilt. Cache-aspekter 11

12 Varför cache:ar? Cache Coherence Problemet Cache-minnen tjänar till att: Öka bandbredden mot minnet, samtidigt minska belastningen på minnesbuss. Korta latensen (fördröjning) Memory Bra för både gemensamt och privat data. Men hur hålls datat överensstämmande? (consistent) Memory bus $ $ $ $ $ P P P P P Delning kan resultera i flera kopior av samma, gemensamma, block i ett eller flera cacheminnen samtidigt. För att ge en följdriktig vy av minnet, måste kopiorna överensstämma. Existerar olika lösningar från Hårdvara Mjukvara Cache Coherence Problemet Thanks to Erik Hagersten, TDB in Uppsala, for the pictures Följdriktighet vadå? Informellt En read måste returnera senaste write För strikt, och för svårt att implementera Bättre En write måste, till slut, kunna ses av en read Alla writes måste ses i ordning ( serialisering ) Två regler 1. Om P1 skriver x och P2 läser x, kommer P1s write att ses om read och write är tillräckligt långt ifrån varandra 2. Writes till en adress är serialiserade. l Senaste writen syns, annars kan man se gamla värden efter nya 12

13 Hårdvarubaserade protokoll Garantera minnesföljdriktighet utan mjukvarustyrning Snoopy cache protocol ( snooping ) Directory schemes Cache-coherent network architecture data delas in i block av samma storlek blocken är den enhet som skickas mellan minne och cache godtyckligt många kopior av ett block tillåts existera samtidigt Uppdateringar inom blocken hålls synliga för alla Cache coherence-policies Write Invalidate: läsning utföres lokalt om block existerar vid uppdatering ogiltigförklaras (invalidate) alla andra kopior ytterligare uppdateringar kan göras ty alla andra kopior ogiltiga Write Update: uppdaterar alla kopior istället för ogiltigförklarar (broadcast) Consistency Commands Ett enkelt c.c.-protokoll invalidation & update commands Buss-baserade arkitekturer Broadcasta alla consistency commands alla cache måste processa alla meddelanden Snokar i nätverket "snoopy cache protocol" Switching networks-baserade arkitekturer Skickar consistency commands endast till de som har en kopia kräver book-keeping, directory schemes Buss-kommandon: 1. A) Skicka förfrågan till ägaren att returnera data till minnet. (BRB) B) Läs data från minnet. 2. Bus Invalidate (BInv) 13

14 False Sharing Olika delar av samma block (cache line) används av olika processorer Om en processor skriver till en del av blocket, så måste kopior av det (kompletta blocket) antingen uppdateras eller invalideras. Detta trots att data egentligen inte delas. Repetitionsuppgifter Beskriv enkelt uppbyggnaden av en parallellmaskin med gemensamt minne! Vad är cache conherency problemet och hur löser man det? Vad är fork-join? Tentauppgift , 4a m, n Frobeniusnormen av en m x n matris A definieras A = a F i, j i= 1, j= 1 Implementera en subrutin som beräknar Frobeniusnormen av A parallellt på en maskin med gemensamt minne m h a OpenMP eller pthreads! 2 14

Strategier för att utnytja parallella system. Peter Kjellström NSC Upplysning 2010-04-27

Strategier för att utnytja parallella system. Peter Kjellström NSC Upplysning 2010-04-27 Strategier för att utnytja parallella system Peter Kjellström NSC Upplysning 2010-04-27 Problemet Människor tänker normalt i seriella banor 2-24 cores i en vanlig desktop/server Det finns massor med seriell

Läs mer

MESI i Intel Core 2 Duo

MESI i Intel Core 2 Duo MESI i Intel Core 2 Duo Sammanfattning Denna rapport beskriver en processor (Intel Core 2 Duo) vars cache coherence protokoll är MESI. Rapporten beskriver hur processorn är uppbyggd, hur många kärnor den

Läs mer

Föreläsning 15: Parallella subrutiner. Parallellitet. Varför parallella underprogram?

Föreläsning 15: Parallella subrutiner. Parallellitet. Varför parallella underprogram? Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden Parallellitet Ofta är det nödvändigt eller önskvärt att programdelar exekveras

Läs mer

Cache-koherens protokoll MESI och MOSI

Cache-koherens protokoll MESI och MOSI Handledare: Erik Larsson Lunds Tekniska Högskola HT2016 Cache-koherens protokoll MESI och MOSI Författare: Adnan Mohamed Abstrakt Cache koherens protokoll hanterar cacheminnet i ett multiprocessor system,

Läs mer

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

Läs mer

Cache coherence hos multicoreprocessorer

Cache coherence hos multicoreprocessorer Cache coherence hos multicoreprocessorer Benjamin Holmqvist, EDT621 December 5, 2016 1 Contents 1 Inledning 3 2 Syfte 3 3 Cache Coherence 3 3.1 Implementering.......................... 4 3.2 Snoop baserade..........................

Läs mer

MESI-protokollets funktion i multiprocessorer

MESI-protokollets funktion i multiprocessorer LUNDS TEKNISKA HÖGSKOLA CAMPUS HELSINGBORG MESI-protokollets funktion i multiprocessorer Jacob Petersson EDT621 Datorarkitekturer med Operativsystem 2016-HT Abstract Denna rapport syftar till att visa

Läs mer

Mekanismer. (implementation)

Mekanismer. (implementation) Mekanismer (implementation) Repetition Semafor Räknar tillgängliga resurser Initieras med startvärde Vid förbrukning: väntar tills resurs finns Användning: invänta händelse Lås Markerar att en variabel/datastruktur

Läs mer

SYNKRONISERING I EN SHARED MEMORY MULTIPROCESSOR

SYNKRONISERING I EN SHARED MEMORY MULTIPROCESSOR SYNKRONISERING I EN SHARED MEMORY MULTIPROCESSOR EN INBLICK I HUR INTERCONNECTION OCH NUMA FUNGERAR DEN 5 DECEMBER 2016 FÖRFATTARE: NIKLAS SCHLIKER Examinator: Erik Larsson Innehåll Abstrakt:... 2 1.1

Läs mer

Posix Threads. En studie i förvirring eller Halleluja! Peter Eriksson, Signum Support AB 1

Posix Threads. En studie i förvirring eller Halleluja! Peter Eriksson, Signum Support AB 1 Posix Threads En studie i förvirring eller Halleluja! Peter Eriksson, Signum Support AB 1 Innehåll l Översikt l Programmering l Kompilering l Vanliga problem l Dokumentation l Övrigt Peter Eriksson, Signum

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data via

Läs mer

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:

Läs mer

F5: Högnivåprogrammering

F5: Högnivåprogrammering 1 F5: Högnivåprogrammering Parameteröverföring Koppling mellan låg- och högnivåprogrammering Lokala variabler Heapen Datatyper 1 Subrutin, parameteröverföring: 1(3) Via register genom värde Skicka data

Läs mer

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

Fö 4 TSEA81. Monitors and Message passing

Fö 4 TSEA81. Monitors and Message passing Fö 4 TSEA81 Monitors and Message passing Condition variables - händelsevariabler Kan användas för att implementera villkorliga kritiska regioner Tre operationer: Initiering(C, S) interna data för villkorsvariabeln

Läs mer

Rapport (1,5 HP) Lunds Universitet HT15

Rapport (1,5 HP) Lunds Universitet HT15 Rapport (1,5 HP) Lunds Universitet HT15 Cache-koherens protokoll i Intel Core i7 En rapport om cache-koherens och protokollet som används i Intel Core i7 processorer för att hålla minnet koherent Författare:

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00 Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen 2019-04-16 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Anteckningarna lämnas

Läs mer

Föreläsning 2. Operativsystem och programmering

Föreläsning 2. Operativsystem och programmering Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data

Läs mer

Trådar och Multiprocessorer. Föreläsning 6

Trådar och Multiprocessorer. Föreläsning 6 Trådar och Multiprocessorer Föreläsning 6 Trådar och multiprocessorer Hur skriver man program som hanterar många saker samtidigt, t.ex. en web-server som hanterar många samtidiga begäran från olika klienter?

Läs mer

Synkronisering. Ordning och reda

Synkronisering. Ordning och reda Synkronisering Ordning och reda Banköverföring struct account { int balance; char* owner; }; struct account account[ NUM_ACCOUNTS ]; bool transfer( int amount, unsigned from, unsigned to ); 2 Banköverföring

Läs mer

Trådar. Aktiva objekt

Trådar. Aktiva objekt Föreläsning 11 Trådar 1 Aktiva objekt Det är välkänt från vardagslivet att saker händer samtidigt. Aktiva objekt gör saker på eget initiativ, medan passiva objekt endast gör saker när de blir ombedda.

Läs mer

Improved-MOESI Cache koherens Protokoll

Improved-MOESI Cache koherens Protokoll Improved-MOESI Cache koherens Protokoll Abstrakt I en multicore, flerkärninga processor med delat minne kan koherens problem förekomma. En lösning till detta är att implementera cache koherens protokoll.

Läs mer

Vad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet

Vad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet Vad händer när man kör ett program? Program och processer När man kompilerar ett program och sedan länkar ihop det så stoppar länkaren in lite extra kod i programmet. Det är denna kod som i sin tur anropar

Läs mer

TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl

TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl TDDIU81 Processer och trådar Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl Sammanfattning Den här rapporten innehåller en kort genomgång av allmän process och trådhantering

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta

Läs mer

Fö 4 TSEA81. Monitors and Message passing. Condition variables - händelsevariabler

Fö 4 TSEA81. Monitors and Message passing. Condition variables - händelsevariabler Fö 4 TSEA81 Monitors and Message passing Condition variables - händelsevariabler Kan användas för att implementera villkorliga kritiska regioner Tre operationer: Initiering(C, S) interna data för villkorsvariabeln

Läs mer

En kort text om programmering i C.

En kort text om programmering i C. En kort text om programmering i C C skapades 1972 av Brian Ritchie och Dennis Kerighan på Bell Labs i USA Det blev det språk som är mest använt genom tiderna Det finns många olika språk Pascal, FORTH,

Läs mer

Systemnära programmering 2012-11-05. Tentamen. Systemnära programmering, 7.5hp 5 november 2012

Systemnära programmering 2012-11-05. Tentamen. Systemnära programmering, 7.5hp 5 november 2012 Tentamen Systemnära programmering, 7.5hp 5 november 2012 Skrivtid: 9 13 Hjälpmedel: EN av följande böcker Bilting & Skansholm: Vägen till C ELLER J.R. Hanly & E.B. Koffman: C Program Design for Engineers

Läs mer

Pipelining i Intel Pentium II

Pipelining i Intel Pentium II Pipelining i Intel Pentium II John Abdulnoor Lund Universitet 04/12/2017 Abstract För att en processor ska fungera måste alla komponenter inuti den samarbeta för att nå en acceptabel nivå av prestanda.

Läs mer

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

Läs mer

MESI-Protokollet. Richard Elvhammar. Lund Universitet 4/12-16

MESI-Protokollet. Richard Elvhammar. Lund Universitet 4/12-16 MESI-Protokollet Richard Elvhammar Lund Universitet 4/12-16 Abstract För att ett system snabbt ska kunna hantera information så används, å sidan åt primärminnet och sekundärminnet, ett cacheminne. I modern

Läs mer

DIG IN TO Administration av nätverk- och serverutrustning

DIG IN TO Administration av nätverk- och serverutrustning DIG IN TO Administration av nätverk- och serverutrustning CCNA 1 1.- CISCO 2.- Router 3.- IOS 4.- Grundkonfigurationer 5.- Routing och Ethernet 5a.- Statisk routing 5b.- Route summarization i classful

Läs mer

Parallellprogrammering i C++ 17 EDT621 Datorarkitekturer med Operativsystem Viktor Lindgren

Parallellprogrammering i C++ 17 EDT621 Datorarkitekturer med Operativsystem Viktor Lindgren Parallellprogrammering i C++ 17 EDT621 Datorarkitekturer med Operativsystem Viktor Lindgren 2016-12-05 Sammanfattning I följande rapport introduceras de tillägg som planeras genomföras i kommande C++ 17

Läs mer

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll PARALLELL OCH SEKVENTIELL DATABEHANDLING Innehåll Parallellism i VHDL Delta delays och Simuleringstid VHDLs simuleringscykel Aktivering av Processer Parallella och sekventiella uttryck 1 Controller PARALLELLISM

Läs mer

Typkonvertering. Java versus C

Typkonvertering. Java versus C Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då

Läs mer

Schemaläggnings metoderna AMP & SMP i en Multiprocessor

Schemaläggnings metoderna AMP & SMP i en Multiprocessor EDT621 Datorarkitekturer med operativsystem 7,5 HP 2015-12-05 Schemaläggnings metoderna AMP & SMP i en Multiprocessor Författare: Simon Plato Sammanfattning Rapporten beskriver två schemaläggnings metoder.

Läs mer

Institutionen för elektro- och informationsteknologi, LTH

Institutionen för elektro- och informationsteknologi, LTH Datorteknik Föreläsning 5 Realtidssystem och realtidsprogrammering Mål Att du ska förstå hur avbrott används för - Mätning - Styrning - Stöd för körning av flera processer Att du ska förstå begreppet tråd

Läs mer

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH.

Datorteknik. Föreläsning 5. Realtidssystem och realtidsprogrammering. Institutionen för elektro- och informationsteknologi, LTH. Datorteknik Föreläsning 5 Realtidssystem och realtidsprogrammering Mål Att du ska förstå hur avbrott används för - Mätning - Styrning - Stöd för körning av flera processer Att du ska förstå begreppet tråd

Läs mer

Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer

Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer Dagens OS En översikt av dagens OS Titt på hur de gör Unix, Linux och Windows Unix Många varianter Mycket gemensamt Unix En del som skiljer Vanliga program, shell, etc System calls Interupts and traps

Läs mer

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum: Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60 Superscalar vs VLIW Cornelia Kloth IDA2 Inlämningsdatum: 2018-12-05 Abstract Rapporten handlar om två tekniker inom multiple issue processorer

Läs mer

Tentamen *:58/ID100V Programmering i C Exempel 3

Tentamen *:58/ID100V Programmering i C Exempel 3 DSV Tentamen *:58/ID100V Sid 1(5) Tentamen *:58/ID100V Programmering i C Exempel 3 Denna tentamen består av fyra uppgifter som tillsammans kan de ge maximalt 22 poäng. För godkänt resultat krävs minst

Läs mer

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

Läs mer

Repetition C-programmering

Repetition C-programmering Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition

Läs mer

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen 68000 Arkitektur F2: Motorola 68000 I/O signaler Processor arkitektur Programmeringsmodell Assembler vs. Maskinkod Exekvering av instruktioner i 68000 Instruktionsformat MOVE instruktionen Adresseringsmoder

Läs mer

Föreläsning 6: Introduktion av listor

Föreläsning 6: Introduktion av listor Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.

Läs mer

Det finns många flaggor till g++,

Det finns många flaggor till g++, C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.

Läs mer

HF0010. Introduktionskurs i datateknik 1,5 hp

HF0010. Introduktionskurs i datateknik 1,5 hp HF0010 Introduktionskurs i datateknik 1,5 hp Välkommna - till KTH, Haninge, Datateknik, kursen och till första steget mot att bli programmerare! Er lärare och kursansvarig: Nicklas Brandefelt, bfelt@kth.se

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Pekare och Listor Eric Elfving Institutionen för datavetenskap 1 / 20 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 20 Internminne

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Underprogram - Funktioner Eric Elfving Institutionen för datavetenskap 18 september 2014 Översikt 2/22 Återblick till satsblocken Funktioner - Namngivna satsblock

Läs mer

Datorarkitekturer med operativsystem ERIK LARSSON

Datorarkitekturer med operativsystem ERIK LARSSON Datorarkitekturer med operativsystem ERIK LARSSON Pipelining Tid SSA P Pipelining FI DI CO FO EI WO FI DI CO FO EI WO FI DI CO FO EI WO FI DI CO FO EI WO Superscalar pipelining FI DI CO FO EI WO FI DI

Läs mer

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013 Rahim Rahmani (rahim@dsv.su.se) Division of ACT Department of Computer and Systems Sciences Stockholm University SVAR TILL TENTAMEN I DATORSYSTEM, VT2013 Tentamensdatum: 2013-03-21 Tentamen består av totalt

Läs mer

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000

Läs mer

Olika OS. Unix, Linux och Windows. Unix. Unix. En översikt av ett par OS. Titt på hur de gör. Många varianter. Mycket gemensamt. En del som skiljer

Olika OS. Unix, Linux och Windows. Unix. Unix. En översikt av ett par OS. Titt på hur de gör. Många varianter. Mycket gemensamt. En del som skiljer Olika OS En översikt av ett par OS Titt på hur de gör Unix, Linux och Windows Unix Många varianter Mycket gemensamt Unix En del som skiljer Begrepp Hur skapas en process Deamon rocess Föräldrar & barn

Läs mer

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om

Läs mer

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6 Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6? DAGENS AGENDA Komplexitet Ordobegreppet Komplexitetsklasser Loopar Datastrukturer Några nyttiga regler OBS! Idag jobbar

Läs mer

JAVAUTVECKLING LEKTION 4

JAVAUTVECKLING LEKTION 4 JAVAUTVECKLING LEKTION 4 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Iterationer (loopar) Algoritmer Mer om felsökning 1 WHILE-SATSEN String s = JOptionPane.showInputDialog("Talet

Läs mer

1.1 Runnable och Thread

1.1 Runnable och Thread 1 Trådar 1.1 Runnable och Thread I övningen är ShoutThread hårdkodad att använda just ShoutRunnable. Det typiska förfarandet brukar annars vara att skicka över din Runnable i konstruktor-anropet till Thread:

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner

Läs mer

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00 Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen 2019-04-16 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Anteckningarna lämnas

Läs mer

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade) Datorsystem 2 CPU Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur CPU Visning av Akka (för de som är intresserade) En dators arkitektur På en lägre nivå kan vi ha lite olika

Läs mer

Cacheminne Intel Core i7

Cacheminne Intel Core i7 EDT621 Datorarkitekturer med operativsystem 7,5 hp 2015-12-07 Cacheminne i Intel Core i7 Författare: Adnan Karahmetovic Handledare: Erik Larsson Innehåll 1. Inledning... 1 1.1 Syfte... 1 1.2 Frågeställning...

Läs mer

Operativsystem (IS1350) :00-12:00

Operativsystem (IS1350) :00-12:00 Operativsystem (IS1350) 2017-03-15 08:00-12:00 Namn: Instruktioner Betyg Du får endast ha med dig skrivmateriel. Mobiler etc skall lämnas till tentamensvakterna. Svaren skall lämnas på dessa sidor, använd

Läs mer

Introduktion C-programmering

Introduktion C-programmering Introduktion C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. 2 C Standarder

Läs mer

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00

Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen :00-18:00 Operativsystem ID1200/06 (ID2200/06 6hp) Tentamen 2019-01-11 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Anteckningarna lämnas

Läs mer

Operativsystem (ID2200/06) XX XX:00-XX:00

Operativsystem (ID2200/06) XX XX:00-XX:00 Operativsystem (ID2200/06) 2017-01-XX XX:00-XX:00 Namn: Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4-sida med anteckningar. Mobiler etc skall lämnas till

Läs mer

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem. Omgivningar Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem. (define (sqrroot c) (define (fixpoint guess c eps) (define

Läs mer

Föreläsning 10. Pekare (Pointers)

Föreläsning 10. Pekare (Pointers) Föreläsning 10 Pekare (Pointers) Dagens kluringar int a=5; int f(int b) a--; b++; return b; int main() int a=3; printf("%d,",f(a)); printf("%d",a); return 0; int f(int a) if(a==1) return a; else return

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Pekare och Listor Eric Elfving Institutionen för datavetenskap 1 / 21 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 21 Internminne

Läs mer

Minnet från processorns sida Datorteknik

Minnet från processorns sida Datorteknik Minnet från processorns sida Datorteknik ERIK LARSSON Processorn ger kommandon/instruktioner med en adress och förväntar sig data. Exempel: READ(ADR) -> DATA Fysisk adress Logisk adress READ 00001000 READ

Läs mer

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT TIDAA Planering Programmering grundkurs HI1024 HT 2016 - TIDAA Föreläsning V35 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning

Läs mer

PARALLELLISERING AV ALGORITMER PROCESSORER FÖR FLERKÄRNIGA

PARALLELLISERING AV ALGORITMER PROCESSORER FÖR FLERKÄRNIGA PARALLELLISERING AV ALGORITMER FÖR FLERKÄRNIGA PROCESSORER 870928 3017 Johan Gustafsson 870303 4952 Gustaf David Hallberg 880525 8210 Per Hallgren 801117 0597 Wuilbert Lopez 1/7 Innehållsförteckning Table

Läs mer

Operativsystem ID2200 Tentamen TEN1 3.8 hp :00-18:00

Operativsystem ID2200 Tentamen TEN1 3.8 hp :00-18:00 Operativsystem ID2200 Tentamen TEN1 3.8 hp 2018-04-03 14:00-18:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Svaren skall lämnas på dessa

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

Möte 7: Uppföljning av föreläsningen med Peer Instruction - (PI)

Möte 7: Uppföljning av föreläsningen med Peer Instruction - (PI) Möte 7: Uppföljning av föreläsningen med Peer Instruction - (PI) Som sagt så kommer den här kursen endast innehålla en enda föreläsning och det var förra gången. Från och med nu så kommer vi förutsätta

Läs mer

C++ Slumptalsfunktioner + switch-satsen

C++ Slumptalsfunktioner + switch-satsen C++ Slumptalsfunktioner + switch-satsen Veckans avsnitt består av ett antal lite udda funktioner man kan ha nytta av när man skriver program. Det är en slumptalsgenerator och lite annat smått och gott.

Läs mer

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse GRUNDER I VHDL Innehåll Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse KOMPONENTMODELL Modell för att beskriva komponenter Externt interface Intern funktion

Läs mer

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då Agenda Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer Övningar nu och då 1 Motivering I de flesta problem ingår att hantera multipla data I de

Läs mer

Operativsystem Lektion 1. Lärare. Schema. Kurssajten Finns på adressen. Jan Erik Moström. Set Norman

Operativsystem Lektion 1. Lärare. Schema. Kurssajten Finns på adressen. Jan Erik Moström. Set Norman Operativsystem Lektion 1 1 Lärare jem@cs.umu.se, B449 Lektioner etc Set Norman set@cs.umu.se, NAdv105 Labbar, labhandledning 2 Schema Notera att det finns ändringar i schemat!! Under perioden 1-8 mars

Läs mer

Skizz till en enkel databas

Skizz till en enkel databas Skizz till en enkel databas Data: Register En vektor Funktioner: Databas Initiera huvudloop Avsluta Poster (struct( struct) val Mata in Skriv ut Spara Hämta Ändra Radera Enligt diskussion 1999-11-23 Bertil

Läs mer

Minnets komponenter. Digitala System: Datorteknik. Programexekvering. Programexekvering. Enhet för utdata. Enhet för indata CPU.

Minnets komponenter. Digitala System: Datorteknik. Programexekvering. Programexekvering. Enhet för utdata. Enhet för indata CPU. Digitala System: Datorteknik Minnets komponenter ERIK LARSSON Enhet för indata CPU Enhet för utdata Sekundärminne Programexekvering Program i högnivåspråk.. Z:=(Y+X)*3. Kompilator Exekverbart program i

Läs mer

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare Funktionspekare, inledning: funktionsanropsmekanismen Vid funktionsanrop läggs aktuella argumentvärden och återhoppsadressen på stacken, därefter sker ett hopp till adressen för funktionens första instruktion.

Läs mer

Parallellism, återblick

Parallellism, återblick Parallellism, återblick Josef Svenningsson December 11, 2012 Lab7 Det är problem med lab7. Gå med i den grupp som ni använt tidigare. DEMO Flera saker händer samtidigt Ofta hanterar program olika indata

Läs mer

Software Technology. Josef Svenningsson

Software Technology. Josef Svenningsson Software Technology Josef Svenningsson Software Technology Software Technology Området Software Technology handlar i mångt och mycket om följande frågeställning: Hur designar man programmeringsspråk för

Läs mer

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 - Inbyggda system - Analog till digital signal - Utvecklingssystem, målsystem - Labutrustningen - Uppbyggnad av mikrokontroller - Masinkod, assemblerkod

Läs mer

Tentamen den 18 mars svar Datorteknik, EIT070

Tentamen den 18 mars svar Datorteknik, EIT070 Lunds Universitet LTH Tentamen den 18 mars 2015 - svar Datorteknik, EIT070 Skrivtid: 14.00-19.00 Tillåtna hjälpmedel: Inga. Maximalt antal poäng: 50 poäng För betyg 3 krävs 20 poäng För betyg 4 krävs 30

Läs mer

Tentamen PC-teknik 5 p

Tentamen PC-teknik 5 p Tentamen PC-teknik 5 p Namn:. Klass:... Program: Di2, Em3, Et3 Datum: 03-08-15 Tid: 13:30-18:30 Lokal: E171 Hjälpmedel: Linjal, miniräknare, Instruktionsrepertoar för 8086 (utdelas), Lathund, Pacific C

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

Läs mer

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar Gabriel Gerhardsson Cacheprobe p.1/38 Abstract Kan analytiskt ta reda på associativitet, line storlek och storlek på processorns cacheminnen

Läs mer

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser

Läs mer

Länkning av Prolog under C

Länkning av Prolog under C Länkning av Prolog under C Kent Boortz Swedish Institute of Computer Science Box 1263, S-164 28 Kista, Sweden 1 september 1991 T91:14 Sammanfattning SICStus länkmoduler ger möjlighet att blanda Prolog-

Läs mer

Digitalteknik och Datorarkitektur 5hp

Digitalteknik och Datorarkitektur 5hp Digitalteknik och Datorarkitektur 5hp Minnes-hierarkier och Cache 12 maj 2008 karl.marklund@it.uu.se issa saker använder vi ofta Dessa saker vill vi ha nära till hands Storleken har betydelse Litet är

Läs mer

Imperativ programmering. Föreläsning 2

Imperativ programmering. Föreläsning 2 Imperativ programmering 1DL126 3p Föreläsning 2 Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner.

Läs mer

Inledande programmering med C# (1DV402) Tärningarna ska kastas

Inledande programmering med C# (1DV402) Tärningarna ska kastas Tärningarna ska kastas Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll

Läs mer

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar Dynamiskt minne Agenda Vad är dynamiskt minne Motivering Hur gör man i C Övningar Minne Datorns primärminne används till olika ändamål De flesta system partitionerar minnet efter användningen: Programkoden

Läs mer

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010 Programsystemkonstruktion med C++: Övning 1 Karl Palmskog palmskog@kth.se september 2010 Programuppbyggnad Klassens uppbyggnad en C++-klass består av en deklaration och en definition deklaration vanligtvis

Läs mer

Fö 2: Minnen. Introduktion. Primärminnet. Interna och externa minnen. Introduktion, Klassificiering

Fö 2: Minnen. Introduktion. Primärminnet. Interna och externa minnen. Introduktion, Klassificiering Fö 2: Minnen Introduktion, Klassificiering Primärminne Sekundärminne Minneshiearki Cache-minne Introduktion Primärminnet används för att lagra program och data som är aktuella att använda. Sekundärminnet

Läs mer

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A Mål Datorteknik Föreläsning 5 Att du ska förstå hur avbrott används för - Mätning - Styrning - Stöd för körning av fle processer Att du ska förstå begreppet tråd Att du ska veta hur odelba resurser kan

Läs mer

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap TDP004 Minne och pekare Eric Elfving Institutionen för datavetenskap 1 / 23 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 23 Internminne - RAM Datorns internminne (RAM,

Läs mer