Tentamen. Datorteknik och realtidssystem

Storlek: px
Starta visningen från sidan:

Download "Tentamen. Datorteknik och realtidssystem"

Transkript

1 Tentamen Datorteknik och realtidssystem, TSEA81 Datum Lokal KÅRA Tid Kurskod TSEA81 Provkod TEN1 Kursnamn Datorteknik och realtidssystem Institution ISY Antal frågor 5 Antal sidor (inklusive denna sida) 14 Kursansvarig Anders Nilsson Lärare som besöker skrivsalen Anders Nilsson Telefon under skrivtiden Besöker skrivsalen Cirka 15 och 17 Kursadministratör Gunnel Hässler Tillåtna hjälpmedel Betygsgränser Inga Poäng Betyg U Viktig information Alla svar ska ha en motivation om inget annat anges. Om du svarar med programkod räknas kommentarer i programkoden som motivation. Svar som ej är motiverade kan leda till poängavdrag Om inget annat anges ska du anta att schemaläggningsmetoden som används är priority based, preemptive, scheduling Om du är osäker på det exakta namnet för en viss funktion, skriv en kommentar om vad funktionen gör så kommer vi troligtvis att förstå vad du menar. (Detsamma gäller syntaxen för programspråket C.) Skriv läsbart! Oläsbar text kan inte bedömas och ger därmed inga poäng. Lycka till! 1

2 Fråga 1: Semaforer(10p) Användning av semaforer och händelsevariabler kan ibland, och ibland inte, resultera i ett processbyte. T ex, en Await-operation på en händelsevariabel resulterar alltid i ett processbyte eftersom man då tvingas att vänta på händelsevariabeln. (a) (2p) Beskriv en situation där en Signal-operation på en semafor resulterar i ett processbyte. (b) (2p) Beskriv en situation där en Signal-operation på en semafor inte resulterar i ett processbyte. (c) (3p) En Await-operation används normalt på följande sätt: while (condition) Await(change) där condition utgör ett villkor (sant eller falskt) som resultatet från ett försök till access av gemensamma data. Ge två exempel på varför det är viktigt att gemensamma data är reserverade, med en Waitoperation på semaforen associerad med händelsevariabeln, när en Await-operation utförs. (d) (3p) Antag att en buffer skyddas av en semafor S. Det finns processer som skriver till buffern, vi kallar dom producenter, och processer som läser från buffern, vi kallar dom konsumenter. Producenter måste vänta när buffern är full, och konsumenter måste vänta när buffern är tom. En händelsevariabel, vi kallar den Change, associeras med semaforen S, och kan användas för detta syfte i pseudokod på följande sätt för producenter: while (buffer full) Await(Change) write to buffer Cause(Change) och på följande sätt för konsumenter: while (buffer empty) Await(Change) read from buffer Cause(Change) för att implementera villkorliga kritiska regioner. Antag en situation där det finns producenter och konsumenter som väntar på Change, på grund av att buffern varit full eller tom när dessa processer försökt att accessa buffern. Antag också att buffern innehåller exakt ett data-element och att en annan konsument läser detta data-element. När konsumenten sedan gör: Cause(Change) kommer alla väntande processer, konsumenter som producenter, att aktiveras. Detta är ju till synes onödigt eftersom buffern nu är tom och det finns egentligen ingen anledning att aktivera några konsumenter. Modifiera implementationen av pseudokoden för producenter och konsumenter ovan genom att använda två händelsevariabler, Non Full och Non Empty, så att konsumenter enbart aktiverar producenter, och producenter enbart aktiverar konsumenter. 2

3 Fråga 2: Periodiska processer(10p) Ett realtidssystem med tre periodiska processer, P1, P2 och P3, ska implementeras. Följande krav gäller: P1 ska köras under 1 tidsenhet i tidsintervallet [i4, (i + 1)4], där i är ett heltal och i 0. P2 ska köras under 2 tidsenheter i tidsintervallet [i8, (i + 1)8], där i är ett heltal och i 0. P3 ska köras under n tidsenheter i tidsintervallet [i12, (i + 1)12], där i är ett heltal och i 0. Varje process aktiveras vid startpunkten för respektive tidsintervall. Det innebär att P1 aktiveras vid var 4:e tidsenhet, med start vid tidpunkten 0, P2 aktiveras vid var 8:e tidsenhet, med start vid tidpunkten 0, och P3 aktiveras vid var 12:e tidsenhet, med start vid tidpunkten 0. Varje process har en deadlline vid slutet av respektive tidsintervall. Det innebär att P1 har en deadline vid var 4:e tidsenhet, med början vid tidpunkten 4, P2 har en deadline vid var 8:e tidsenhet, med början vid tidpunkten 8, och P3 har en deadline vid var 12:e tidsenhet, med början vid tidpunkten 12. Tänk på att för varje deluppgift nedan tydligt visa och motivera hur du kommer fram till svaret. (a) (5p) Antag att prioritetsbaserad påtvingad schemaläggning (priority-based preemptive scheduling) används. Antag också att P1 har högre prioritet än P2, och att P2 har högre prioritet än P3. Bestäm största möjliga värde på n, förutsatt att processernas krav uppfylls och att de klarar sina respektive deadlines. (b) (5p) Antag att schemaläggningen EDF (earliest deadline first) används. Bestäm största möjliga värde på n, förutsatt att processernas krav uppfylls och att de klarar sina respektive deadlines. 3

4 Fråga 3: Meddelandehantering(12p) Ett realtidsprogram som använder meddelandehantering ska implementeras, och programmet ska använda en buffer för att hantera data. En producent-process ska skriva data till buffern och en konsument-process ska läsa data från buffern. Om buffern är full när producent-processen försöker skriva data till buffern så ska producentprocessen vänta tills buffen inte är full längre. Därefter ska den försöka att skriva data igen. Om buffern är tom när konsument-processen försöker läsa data från buffern så ska konsumentprocessen vänta tills buffern inte är tom längre. Därefter ska den försöka att läsa data igen. En process ska hantera själva buffern. En buffer-datatyp finns deklarerad enligt följande: /* buffer data type */ typedef struct char data[buf_size]; int write_pos; int read_pos; int count; buf_data_type; typedef buf_data_type* buf_type; En funktion för att initiera buffern finns deklarerad enligt följande: /* buffer initialisation */ void buf_init(buf_type buf) buf->write_pos = 0; buf->read_pos = 0; buf->count = 0; Bufferns status, tom eller full, kan kontrolleras med följande funktioner: /* returns true if buf is empty, false otherwise */ int buf_empty(buf_type buf) return buf->count == 0; /* returns true if buf is full, false otherwise */ int buf_full(buf_type buf) return buf->count == BUF_SIZE; En funktion för att skriva till buffern finns deklarerad enligt följande: /* write buf_item to buf, provided buf is not full */ void buf_write(buf_type buf, char buf_item) if (buf->count < BUF_SIZE) buf->data[buf->write_pos] = buf_item; buf->write_pos++; if (buf->write_pos == BUF_SIZE) 4

5 buf->write_pos = 0; buf->count++; En funktion för att läsa från buffern finns deklarerad enligt följande: /* read an item from buf, provided buf is not empty */ char buf_read(buf_type buf) char buf_item = \0 ; if (buf->count > 0) buf_item buf->read_pos++; if (buf->read_pos == BUF_SIZE) buf->read_pos = 0; buf->count--; return buf_item; = buf->data[buf->read_pos]; Meddelande-typer finns deklarerade enligt följande: /* message types */ #define READ_MESSAGE 0 #define WRITE_MESSAGE 1 #define OK_MESSAGE 2 #define REPEAT_MESSAGE 3 En datatyp för meddelanden finns deklarerad enligt följande: /* message data type */ typedef struct int type; char buf_item; message_data_type; En global variabel för att spara process-id för buffer-processen finns deklarerad enligt följande: int Buffer_Task_Id; Producent-processen finns deklarerad enligt följande: void producer_task(void) message_data_type message; int length; int send_task_id; char string_to_send[] = "Houston we have a pr\n"; int i; 5

6 while(1) printf("sending %s\n", string_to_send); for (i = 0; i < strlen(string_to_send); i++) do message.type = WRITE_MESSAGE; message.buf_item = string_to_send[i]; si_message_send((char *) &message, sizeof(message), Buffer_Task_Id); si_message_receive((char *) &message, &length, &send_task_id); while (message.type == REPEAT_MESSAGE); si_wait_n_ms(10000); Konsument-processen finns deklarerad enligt följande: void consumer_task(void) message_data_type message; int length; int send_task_id; int n_chars = 0; while(1) do message.type = READ_MESSAGE; si_message_send((char *) &message, sizeof(message), Buffer_Task_Id); si_message_receive((char *) &message, &length, &send_task_id); while (message.type == REPEAT_MESSAGE); /* print received character and running number */ printf("%c-%d", message.buf_item, n_chars++); Huvudprogrammet skapar tre processer - buffer-processen, producent-processen och konsumentprocessen. Detta finns implementerat enligt följande: /* main */ int main(void) /* initialise kernel */ si_kernel_init(); /* initialise message handling */ si_message_init(); /* create tasks */ si_task_create(buffer_task, &Buffer_Stack[STACK_SIZE-1], 10); Buffer_Task_Id = 1; si_task_create(producer_task, &Producer_Stack[STACK_SIZE-1], 20); si_task_create(consumer_task, &Consumer_Stack[STACK_SIZE-1], 30); 6

7 /* start the kernel */ si_kernel_start(); /* will never be here */ return 0; Din uppgift är att implementera (skriva koden för) buffer-processen. Själva buffern ska deklareras som en lokal variabel, av typen buf data type, i buffer-processen. Det är inte tillåtet att använda några globala variabler, förutom Buffer Task Id och stackarna för respektive process. Det kan i buffer-processen antas att det bara finns en producent-process och en konsument-process. När det färdiga programmet kör ska följande utskrift fås: Sending Houston we have a pr H-0o-1u-2s-3t-4o-5n-6-7w-8e-9-10h-11a-12v-13e-14-15a-16-17p-18r-19-20Sending Houston we have a pr H-21o-22u-23s-24t-25o-26n-27-28w-29e-30-31h-32a-33v-34e-35-36a-37-38p-39r-40-41Sending Houston we have a pr H-42o-43u-44s-45t-46o-47n-48-49w-50e-51-52h-53a-54v-55e-56-57a-58-59p-60r-61 7

8 Fråga 4: Prioriteter(8p) Antag att följande testprogram implementeras i ett realtidsoperativsystem, t ex Simple OS. Testprogrammet innehåller en resurs som skyddas av en semafor: /* semaphore for protecting resource */ si_semaphore Mutex; /* resource */ int The_Resource; Testprogrammet innehåller tre processer. Processen P1 har högst prioritet och finns implementerad enligt följande: /* p1_task: first task */ void p1_task(void) /* infinite loop */ while(1) console_put_string("p1 trying to reserve R\n"); si_sem_wait(&mutex); console_put_string("p1 has reserved R\n"); The_Resource = 1; si_sem_signal(&mutex); console_put_string("p1 has released R\n"); si_wait_n_ms(2000); Processen P3 har lägst prioritet och finns implementerad enligt följande: /* p3_task: third task */ void p3_task(void) /* infinite loop */ while(1) console_put_string("p3 trying to reserve R\n"); si_sem_wait(&mutex); console_put_string("p3 has reserved R\n"); si_wait_n_ms(100); The_Resource = 3; si_sem_signal(&mutex); console_put_string("p3 has released R\n"); si_wait_n_ms(1000); Processen P2 har en prioritet mellan P1 och P3 och finns implementerad enligt följande: /* p2_task: second task */ void p2_task(void) /* infinite loop */ while(1) console_put_string("p2 starting to do work\n"); 8

9 do_work(); där funktionen do work används i syfte att belasta processorn genom att utföra diverse beräkningar. Funktionen do work använder inte semaforen Mutex eller den gemensamma resursen The Resource. När programmet körs erhålls följande utskrift: P3 trying to reserve R P3 has reserved R P1 trying to reserve R P2 starting to do work P2 starting to do work P2 starting to do work P2 starting to do work (a) (3p) Förklara varför programmet beter sig enligt ovan, och förklara hur det kommer sig att processen P2 blir körande och blockerar accessen för P1 till resursen trots att P2 inte använder resursen och dessutom har lägre prioritet än P1. (b) (1p) Vad kallas fenomenet? (c) (4p) Namnge och beskriv hur en vanlig mekanism fungerar för att förhindra att problemet uppstår, dvs så att P2 inte kan blockera P1. Du kan använda de tre specifika processerna P1, P2 och P3 i din beskrivning. 9

10 Fråga 5: Processbyte(10p) Betrakta situationen i figur 1 nedan. Två processer finns i ReadyList och en är körande, markerad med pekaren Running. CPU:n har under körning använt den körande processens stack och därmed kanske skrivit över tidigare värden för (Reg) och (PC) varför dessa satts inom parentes då de nu får anses vara inaktuella. Utgå från denna situation och beskriv steg för steg hur ett processbyte går till, med avseende på vad som händer i CPU:n, processernas stackar och TCB. Om du vill kan du i din beskrivning förutom pekarna Running och ReadyList använda pekarna Current (som tillfällig markering under bytet av körande process), Next (för att markera nästkommande körande process) samt WaitList eller eventuellt TimeList. Figur 1: Två processer, en körande. 10

11 Lösningsförslag fråga 1: 1a En Signal-operation på en semafor resulterar i ett processbyte då det finns processer som väntar på semaforen och om någon av de processer som därefter finns i readylistan har högre prioritet än den process om utförde Signal-operationen. 1b En Signal-operation på en semafor resulterar inte i ett processbyte om väntelistan för semaforen är tom, eller om ingen av de processer som finns väntelistan för semaforen har högre prioritet än den process som utförde Signal-operationen. 1c Ett skäl är att utvärderingen av condition behöver läsa gemensamma data, och dessa måste då vara reserverade när det sker. Ett annat skäl är att en Await-operation medför en implicit Signal-operation. Det medför att om gemensamma data då inte först är reserverade med Wait när Await utförs, så kan ju väntelistan vara tom och semaforen då få värdet 2, vilket framledes kan ge okontrollerad access till gemensamma data. 1d Båda händelsevariablerna, Non Full och Non Empty associeras med semaforen S. För producenter bli sedan psudokoden enligt följande: while(buffer full) Await(Non_Full) write to buffer Cause(Non_Empty) och för konsumenter enligt följande: while (buffer empty) Await(Non_Empty) read from buffer Cause(Non_Full) På detta sätt kommer konsumenter enbart att aktivera producenter och producenter enbart att aktivera konsumenter. Lösningsförslag fråga 2: 2a Körschemat för de tre processerna kommer att upprepa sig efter 24 tidsenheter. Då P1 har högst prioritet kommer den att köra vid tidsintervallen 0-1, 4-5, 8-9, 12-13, och Processen P2 kommer att köra i tidsintervallen 1-3, 9-11 och Det utelämnar 5 tomma tidsenheter under tidsintervallet 0-12, och 7 tomma tidsenheter under tidsintervallet för processen P3. För att alltid kunna uppfylla villkoren måste n sättas till det lägre av dessa alternativ, dvs n = 5. 11

12 2b Med EDF (Earliest Deadline First) är det möjligt att uppnå 100 procent utnyttjandegrad. Största värdet på n ges då av följande ekvation: vilket ger n = 6. Körschemat blir enligt följande: n 12 = 1 Tid dp1 dp2 dp3 Process Kommentar P1 P1 kortast tid till deadline P2 P1 ej körklar, P2 kortast tid till deadline P2 P1 ej körklar, P2 kortast tid till deadline P3 P1 och P2 ej körklara, P3 kortast tid till deadline P1 P2 ej körklar, P1 körklar och kortast tid till deadline P3 P1 och P2 ej körklara, P3 kortast tid till deadline P3 P1 och P2 ej körklara, P3 kortast tid till deadline P3 P1 och P2 ej körklara, P3 kortast tid till deadline P3 P2 körklar, P1 körklar och samma tid som P3 till deadline, P3 fortsätter P3 P2 körklar, P1 körklar och samma tid som P3 till deadline, P3 fortsätter P1 P2 körklar, P3 ej körklar, P1 kortast tid till deadline P2 P1 och P3 ej körklara, P2 kortast tid till deadline P2 P3 körklar, P1 körklar och samma tid som P2 till deadline, P2 fortsätter P1 P3 körklar, P2 ej körklar, P1 kortast tid till deadline P3 P1 och P2 ej körklara, P3 kortast tid till deadline P3 P1 och P2 ej körklara, P3 kortast tid till deadline P1 P1 och P2 körklara, P1 kortast tid till deadline P2 P1 ej körklar, P2 och P3 samma tid till deadline, välj t ex P P2 P1 ej körklar, P2 och P3 samma tid till deadline, P2 fortsätter P3 P1 och P2 ej körklar, P3 kortast tid till deadline P3 P2 ej körklar, P1 körklar och samma tid som P3 till deadline, P3 fortsätter P3 P2 ej körklar, P1 körklar och samma tid som P3 till deadline, P3 fortsätter P3 P2 ej körklar, P1 körklar och samma tid som P3 till deadline, P3 fortsätter P1 P2 och P3 ej körklara, P1 kortast tid till deadline Lösningsförslag fråga 3: När buffern är full eller tom så kan buffer-processen inte omedelbart ge respons till producent- eller konsument-processen, eftersom ingen av dem då kommer att stanna/blockera. Vi håller istället håller reda på när access sker till en full eller tom buffer och skickar ett svarsmeddelande till producentrespektive kosument-processen när buffern inte är full respektive tom längre. Buffer-processen kan implementeras enligt följande: void buffer_task(void) buf_data_type buffer; message_data_type message; int lenght; int send_task_id; int consumer_task_id = -1; int producer_task_id = -1; int consumer_waiting = 0; 12

13 int producer_waiting = 0; char buf_item; buf_init(&buffer); while(1) si_message_receive((char *) &message, &length, &send_task_id); switch(message.type) case READ_MESSAGE: if (buf_empty(&buffer)) /* note that consumer is waiting, and store its task id */ consumer_waiting = 1; consumer_task_id = send_task_id; else buf_item = buf_read(&buffer); message.type = OK_MESSAGE; message.buf_item = buf_item; si_message_send((char *) &message, sizeof(message), send_task_id); if (producer_waiting) /* if a producer is waiting, let this producer re-send its last item */ message.type = REPEAT_MESSAGE; si_message_send((char *) &message, sizeof(message), producer_task_id); producer_waiting = 0; break; case WRITE_MESSAGE: if (buf_full(&buffer)) /* note that a producer is waiting, and store its task id */ producer_waiting = 1; producer_task_id = send_task_id; else buf_item = message.buf_item; buf_write(&buffer, buf_item); message.type = OK_MESSAGE; si_message_send((char *) &message, sizeof(message), send_task_id); if (consumer_waiting) /* if a consumer is waiting, let this consumer read again */ message.type = REPEAT_MESSAGE; si_message_send((char *) &message, sizeof(message), consumer_task_id); consumer_waiting = 0; break; default: 13

14 printf("illegal message type!\n"); exit(1); Lösningsförlag fråga 4: 4a När programmet startar så reserverar P3 resursen R. Sedan försöker P1 reservera R, men tvingas vänta eftersom semaforen nu har värdet 0. När P2 aktiveras så tillåts den exekvera, eftersom den har högre prioritet än nuvarande körande process P3, och eftersom P1 (trots att den har högre prioritet än P2 ) inte är redo då den väntar på semaforen. Så länge som P2 kör, hindras P3 att släppa resursen och P1 fortsätter att vara blockerad. 4b Prioritetsinversion (priority inversion) 4c Mekanismen som efterfrågas är prioritetsärvning (priority inheritance). Den fungerar enligt följande: I samband med att P3 reserverar resursen så höjs prioriteten på P3 till samma prioritet som den process som har högst prioritet av de som kan använda resursen, i detta fall P1. Därmed kan inte P2 avbryta P3 varvid P3 kan slutföra sitt arbete. När P3 sedan släpper resursen så återtar P3 sin tidigare prioritet. Därefter kan P1 reservera resursen och köra, alternativt P2 köra och bli avbruten av P1. P1 blir inte längre blockerad av P2. Lösningsförslag fråga 5: Processbytet sker i följande ordning: 1. Justera fälten i TCB för körande process, om det behövs. T ex för att si wait n ms() har anropats eller att prioriteten har ändrats. 2. Flytta TCB för körande process från ReadyList till en annan lista: TimeList om si wait n ms() har anropats, eller någon WaitList beroende på vad man väntar på. 3. Leta upp nästa process, den med högst prioritet i ReadyList, och markera den med Next. 4. Markera nu körande process med Current, och markera den process som ska bli körande, dvs Next, med Running. 5. Kopiera PC i CPU till stacken för nu körande process, dvs den markerad med Current. (görs t ex via PUSH) 6. Kopiera Reg i CPU till stacken för nu körande process, dvs den markerad med Current. (görs t ex via PUSH) 7. Sätt SP i TCB för körande process (Current) till samma som SP i CPU. 8. Sätt SP i CPU till SP i TCB för den process som ska starta (Next). 9. Kopiera Reg från stacken för den process som ska starta (Next) till Reg i CPU. (görs t ex via POP) 10. Kopiera PC från stacken för den process som ska starta (Next) till PC i CPU. (görs t ex via POP) I och med sista steget så sker ett hopp till den nya process som ska köra, dvs den som nu är markerad med Running. Pekarna Next och Current har längre ingen betydelse. 14

Tentamen Datorteknik och realtidssystem, TSEA81 Datum Lokal

Tentamen Datorteknik och realtidssystem, TSEA81 Datum Lokal Tentamen Datorteknik och realtidssystem, TSEA81 Datum 2018-04-0 Lokal G6 Tid 14-18 Kurskod TSEA81 Provkod TEN1 Kursnamn Datorteknik och realtidssystem Institution ISY Antal uppgifter 5 Antal sidor 16 (inklusive

Läs mer

Tentamen. Datorteknik och realtidssystem

Tentamen. Datorteknik och realtidssystem Tentamen Datorteknik och realtidssystem, TSEA81 Datum 2017-08-18 Lokal TER2 Tid 14-18 Kurskod TSEA81 Provkod TEN1 Kursnamn Datorteknik och realtidssystem Institution ISY Antal frågor 5 Antal sidor (inklusive

Läs mer

Tentamen Datorteknik och realtidssystem, TSEA81 Datum Lokal

Tentamen Datorteknik och realtidssystem, TSEA81 Datum Lokal Tentamen Datorteknik och realtidssystem, TSEA81 Datum 2018-08-24 Lokal TER1 Tid 14-18 Kurskod TSEA81 Provkod TEN1 Kursnamn Datorteknik och realtidssystem Institution ISY Antal uppgifter 5 Antal sidor 17

Läs mer

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Fö 5+6 TSEA81. Real-time kernel + Real-time OS Fö 5+6 TSEA81 Real-time kernel + Real-time OS Stackens användningsområde * JSR / RTS : returadress * Temporärdata (push / pop) void myfunc(void) { int i; // hamnar nog i register int test[10]; // hamnar

Läs mer

Tentamen. Datorteknik och realtidssystem

Tentamen. Datorteknik och realtidssystem Tentamen Datorteknik och realtidssystem, TSEA81 Datum 2017-01-09 Lokal U1 Tid 08-12 Kurskod TSEA81 Provkod TEN1 Kursnamn Datorteknik och realtidssystem Institution ISY Antal frågor 5 Antal sidor (inklusive

Läs mer

Fö 7 TSEA81. Scheduling

Fö 7 TSEA81. Scheduling Fö 7 TSEA81 Scheduling Reflektion Lab 3 Operation Linux Simple OS * wait pthread_mutex_lock si_sem_wait * signal pthread_mutex_unlock si_sem_signal * await pthread_cond_wait si_ev_await * cause pthread_cond_broadcast

Läs mer

Fö 5+6 TSEA81. Reflektion av Lab 2. clock.c (module) Real-time kernel + Real-time OS

Fö 5+6 TSEA81. Reflektion av Lab 2. clock.c (module) Real-time kernel + Real-time OS Fö 5+6 TSEA81 Real-time kernel + Real-time OS Reflektion av Lab 2 main.c void * clock_task(void *unused) int hours, minutes, seconds; while(1) clock_get_time(&hours,&minutes,&seconds); display_time(hours,minutes,seconds);

Läs mer

Tentamen Grundläggande programmering

Tentamen Grundläggande programmering Akademin för Innovation Design och Teknik Tentamen Grundläggande programmering Kurskod: DVA103 Datum 2012-06-11 Tid 14.10 16.30 Examinator: Lars Asplund Maxpoäng: 48 Betygsgränser: Betyg 3: 20 Betyg 4:

Läs mer

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel Data- och Programstrukturer Provmoment: Ladokkod: Tentamen ges för: Omtentamen NDP011 Systemarkitektprogrammet 7,5 högskolepoäng Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum:

Läs mer

Exam Concurrent and Real-Time Programming

Exam Concurrent and Real-Time Programming LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Exam Concurrent and Real-Time Programming 2018 08 23, 14.00 19.00 1. Vad är prioritetsinversion? Illustrera med ett enkelt exempel. Redogör

Läs mer

Fö 7+8 TSEA81. Scheduling + Real-time Linux. wait. } else { sem->wait_list, WAIT_LIST_SIZE, pid); // semaphore waiting list

Fö 7+8 TSEA81. Scheduling + Real-time Linux. wait. } else { sem->wait_list, WAIT_LIST_SIZE, pid); // semaphore waiting list Fö 7+8 TSEA81 Scheduling + Real-time Linux wait void si_sem_wait(si_semaphore *sem) int pid; DISABLE_INTERRUPTS; // wait operation on semaphore sem // process id // atomic section begins if (sem->counter

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

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det? Föreläsning 10 Datalogi 1 DA2001 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer på skärmen print( Hej ) print( Hur är det?

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

Tentamen i Introduktion till programmering

Tentamen i Introduktion till programmering Tentamen i Introduktion till programmering Kurskod: Skrivtid: D0009E 09:00-13:00 (4 timmar) Totalt antal uppgifter: 7 Totalt antal poäng: 38 Tentamensdatum: 2014-05-17 Jourhavande lärare: Tillåtna hjälpmedel:

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

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling

Läs mer

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad. 5(16) Tentamen på kurserna Programmeringsteknik med C och Matlab Programmering i C Tid: 2/11-11, kl. 9-13 Lärare: Jonny Pettersson Totalt: 60 poäng Betyg 3: 30 poäng Betyg 4: 39 poäng Betyg 5: 48 poäng

Läs mer

Aktivitetsschemaläggning för flerkärninga processorer

Aktivitetsschemaläggning för flerkärninga processorer Lunds Tekniska Högskola Datorarkitekturer med Operativsystem EDT621 Aktivitetsschemaläggning för flerkärninga processorer Tobias Lilja 5 december 2016 Innehåll 1 Inledning 3 1.1 Syfte................................

Läs mer

Tentamen i TDIU16 Process- och operativsystemprogrammering

Tentamen i TDIU16 Process- och operativsystemprogrammering Linköpings universitet Institutionen för datavetenskap 2017-06-03 Tentamen i TDIU16 Process- och operativsystemprogrammering Datum 2017-06-03 Tid 14-18 Institution IDA Kurskod TDIU16 Provkod TEN1 Examinator

Läs mer

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk Föreläsning 2 steknik och C DD1316 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program

Läs mer

Enkla datatyper minne

Enkla datatyper minne Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

Tentamen. Datorteknik och realtidssystem

Tentamen. Datorteknik och realtidssystem Tentamen Datorteknik och realtidssystem, TSEA81 Datum 2014-01-13 Lokal KÅRA Tid 8-12 Kurskod TSEA81 Provkod TEN1 Kursnamn Datorteknik och realtidssystem Institution ISY Antal frågor 4 Antal sidor (inklusive

Läs mer

Kurskod D0010E Datum 2012-05-15 Skrivtid 5tim

Kurskod D0010E Datum 2012-05-15 Skrivtid 5tim LULEÅ TEKNISKA UNIVERSITET Tentamen i Objektorienterad programmering och design Totala antalet uppgifter: 5 Lärare: Håkan Jonsson, 491000, 073-820 1700 Resultatet o entliggörs senast: 2012-05-29. Tillåtna

Läs mer

Tentamen Lösningar EDA698 Realtidssystem

Tentamen Lösningar EDA698 Realtidssystem LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen Lösningar EDA698 Realtidssystem 13 10 22, 14:00 19:00 1. Prioriteter, korrekthet a) Realtidsproblemet kvarstår. Det finns ingen garanti

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

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

tentaplugg.nu av studenter för studenter

tentaplugg.nu av studenter för studenter tentaplugg.nu av studenter för studenter Kurskod Kursnamn D0017E Inledande programmering för ingenjörer Datum 2014-10-31 Material Tentamen Kursexaminator Betygsgränser Tentamenspoäng 3 14; 4??; 5?? 25/25

Läs mer

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > = ==!= Resultatets datatyp är boolean

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

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

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

Realtidsprogrammering Ordinarie tentamen

Realtidsprogrammering Ordinarie tentamen Tentamen i Realtidsprogrammering Ordinarie tentamen Datum: 2006-10-20 Tid: 08:00 13:00 Ansvarig lärare: Telefon: 1438 (kontor) Hjälpmedel: Miniräknare Poäng: Tentamen omfattar 40 poäng fördelade på 7 uppgifter.

Läs mer

Synkronisering - Semaforen. Om att vänta men inte i onödan

Synkronisering - Semaforen. Om att vänta men inte i onödan Synkronisering - Semaforen Om att vänta men inte i onödan Dörrvakten Har order uppifrån pga brandregler: Släpp in max 40 personer Garanterar att det aldrig är fler insläppta än order angivit Kommer fler

Läs mer

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN HI1024 Programmering, grundkurs TEN2 2016-01-09 KTH STH Haninge 8.15-13.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King

Läs mer

PROGRAMMERING-JAVA TENTAMINA

PROGRAMMERING-JAVA TENTAMINA PROGRAMMERING-JAVA TENTAMINA Nicolina Månsson 2010-08-16 (Kontaktperson Nicolina Månsson, tel. 0768-530640) Tentamensinstruktioner Poängsättning Hela tentamen omfattar 42 poäng. Poäng för varje uppgift

Läs mer

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk Föreläsning 2 steknik DD1310 Python introduktion Variabler Datatyper Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program är

Läs mer

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2012-03-14 Skrivtid: 0800-1100 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Tentamen ID1004 Objektorienterad programmering October 29, 2013 Tentamen för ID1004 Objektorienterad programmering (vilande kurs), 29 oktober 2013, 9-13 Denna tentamen examinerar 3.5 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av tre sektioner.

Läs mer

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Programmering I Tobias Wrigstad fredag, 2009 augusti 28 Programmering I Tobias Wrigstad tobias@dsv.su.se Vad är programmering? Lågnivåspråk och högnivåspråk Kompilering och interpretering Variabler Notation för flödesschema (flow chart) Kontrollstrukturer (conditionals,

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2008-05-27 Skrivtid: 4 timmar Kontakt person: Nicolina Månsson, tel. 035-167487 Poäng / Betyg:

Läs mer

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011 1 of 7 Örebro universitet Akademin för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen

Läs mer

Operativsystem ID1200/06 Tentamen :00-18:00

Operativsystem ID1200/06 Tentamen :00-18:00 Operativsystem ID1200/06 Tentamen 2018-01-12 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 sidor,

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

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University Datum för tentamen Date of exam Sal Room Tid Time Kurskod Course code Provkod LADOK code

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

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.) Outline för D2, ICT2, E3 och Mek3 Nicholas Wickström Högskolan i Halmstad Sverige p.1/18 Förra föreläsningen Specifikation -Kravspecifikation -Funktionsspecifikation -Blockdiagram Operativsystem -Grunder,

Läs mer

Föreläsning 3: Booleans, if, switch

Föreläsning 3: Booleans, if, switch TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt

Läs mer

Tentamen vid Institutionen för Datavetenskap, Linköpings universitet

Tentamen vid Institutionen för Datavetenskap, Linköpings universitet TENTAMEN TDDC47 Realtids- och processprogrammering Datum: 2009-04-14 Tid: 14-18 Lokal: TER2 Jourhavande-lärare: Simin Nadjm-Tehrani (Tel: 070-2282412) Hjälpmedel: Poängantal: Miniräknare/Calculator 40p

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

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014 TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt. Använd

Läs mer

Realtidssystem. - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 5

Realtidssystem. - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 5 Realtidssystem - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 5 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad på: Föreläsningsmaterial

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

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) Uppgift 1 ( Betyg 3 uppgift ) I filerna queue_handling.ads och queue_handling.adb finns en datastruktur som motsvarar en kö. Det finns fyra operationer som kan utföras på en kö. 1) Enqueue som stoppar

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

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

Realtidssystem. - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6

Realtidssystem. - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6 Realtidssystem - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 6 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad på: Föreläsningsmaterial

Läs mer

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2012-06-04 Skrivtid: 1400-1700 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

Symboliska konstanter const

Symboliska konstanter const (5 oktober 2010 T11.1 ) Symboliska konstanter const Tre sätt som en preprocessormacro med const-deklaration med enum-deklaration (endast heltalskonstanter) Exempel: #define SIZE 100 const int ANSWER =

Läs mer

Realtidsstöd i Minix. En laborationrapport. Oktober 2012

Realtidsstöd i Minix. En laborationrapport. Oktober 2012 Realtidsstöd i Minix En laborationrapport Karl Zylinski Hampus Gustafsson Oktober 2012 1 Innehåll 1 Introduktion 3 1.1 Problem................................ 3 1.1.1 Skapa ett testprogram....................

Läs mer

Visual Basic, en snabbgenomgång

Visual Basic, en snabbgenomgång Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika

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

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2010-03-16 Skrivtid: 4 timmar Kontaktperson: Nicolina Månsson Poäng / Betyg: Max 44 poäng

Läs mer

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004 Lösningsförslag Programmeringsmetodik, KV: Java och OOP 17 januari 2004 Examinator: Johan Karlsson Skrivtid: 9-15 Hjälpmedel: En av följande böcker: Barnes & Kölling: Objects First With Java a practical

Läs mer

Summering av fält. Synkronisering. Summering av fält. Bounded Buffer. Bounded Buffer (get) Bounded Buffer (put)

Summering av fält. Synkronisering. Summering av fält. Bounded Buffer. Bounded Buffer (get) Bounded Buffer (put) Summering av fält Synkronisering Ordning och reda function sum_low is begin for i in 0..999_999_999 sum += array[i] end sum_low function sum_high is begin for i in 1_000_000_000..1_999_999_999 sum += array[i]

Läs mer

Summering av fält 1.1. Synkronisering - Semaforen. Summering av fält 1.3. Summering av fält 1.2. Summering av fält 2.3 (INTE GK)

Summering av fält 1.1. Synkronisering - Semaforen. Summering av fält 1.3. Summering av fält 1.2. Summering av fält 2.3 (INTE GK) Summering av fält 1.1 Synkronisering - Semaforen Om a6 vänta men inte i onödan Vi har en stor array: int array[2_000_000_000] Vi har variabler för a6 lagra summor och delsumor av arrayen. Dessa iniferas

Läs mer

Lösningsförslag. TDDC74 Programmering: Abstraktion och modellering. Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum:

Lösningsförslag. TDDC74 Programmering: Abstraktion och modellering. Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum: Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum: 2013-03-12 Lösningsförslag Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum: 2013-03- 12 Läs alla frågorna först och bestäm dig för den ordning som passar dig

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

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

Programmering i C, 7,5 hp

Programmering i C, 7,5 hp Programmering i C, 7,5 hp Föreläsning 4 VÄLKOMNA! 31 switch-satsen Antag att vi har en heltalsvariabel a som skall styra programflödet Antag vidare att a kan anta tex 5 olika värden 1,2,3,4,5 printf( Mata

Läs mer

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen Tentamen för teknisk kemi, 10p, moment 1 29 november 1999 Skrivtid 9-15 Hjälpmedel: av följande böcker. - U. Bilting och J. Skansholm: Vägen till C - A. Kelley & I. Pohl: A Book on C Maxpoäng: Gräns för

Läs mer

Programmering, grundkurs, 8.0 hp HI1024, TEN1. Fredagen den 2 mars 2012

Programmering, grundkurs, 8.0 hp HI1024, TEN1. Fredagen den 2 mars 2012 Programmering, grundkurs, 8.0 hp HI1024, TEN1 Fredagen den 2 mars 2012 Tentamen består av två delar, del A och del B. Del A innehåller 4 kryssfrågor på olika teman inom C programmering. Varje fråga är

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

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript? Innehåll JavaScript En introduktion till skriptspråket JavaScript och till DOM Scripting Introduktion till JavaScript och DOM JavaScript Syntax DOM och DOM Scripting Händelsehantering och CSS Historia

Läs mer

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

Läs mer

Omtentamen i Realtidsprogrammering för Au3, D3, E3

Omtentamen i Realtidsprogrammering för Au3, D3, E3 Omtentamen i Realtidsprogrammering för Au3, D3, E3 Datum: 2004-01-14 Tid: 0800-1300 Ansvarig lärare: Telefon: 1438 (kontor) Hjälpmedel: Inga särskilda hjälpmedel är tillåtna. Poäng: Tentamen omfattar 40

Läs mer

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2012 05 28, 8.00 13.00 Del 1 1. Time To Live (TTL) anger hur många routrar ett multicastpaket

Läs mer

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk Föreläsning 2 steknik DD1310 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer funktioner betyder att instruera en dator Ett program

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

Tentamen i Realtidsprogrammering för Au3, D3, E3

Tentamen i Realtidsprogrammering för Au3, D3, E3 Tentamen i Realtidsprogrammering för Au3, D3, E3 Ordinarie Tentamen Datum: 2005-10-21 Tid: 14:00-19:00 Ansvarig lärare: Telefon: 1438 (kontor) Hjälpmedel: Miniräknare Poäng: Tentamen omfattar 40 poäng

Läs mer

(Lösningsförslag finns sist i denna fil.)

(Lösningsförslag finns sist i denna fil.) (Lösningsförslag finns sist i denna fil.) Läser externa signaler. Har 64 ingångar (kanaler), från 0 till 63. Kan bara avläsa en ingång i taget. Avlästa värdet positivt 16-bitars tal. Varje läsning tar

Läs mer

Grundläggande datalogi - Övning 1

Grundläggande datalogi - Övning 1 Grundläggande datalogi - Övning 1 Björn Terelius October 30, 2008 Python är ett tolkat språk som kan köras interaktivt. tcs-ray:~/grudat08>python >>> 11+3*4 23 >>> a = 15 >>> b=a >>> print "a =", a, "b

Läs mer

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University

Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University Försättsblad till skriftlig tentamen vid Linköpings Universitet Cover page for written exam at Linköping University Datum för tentamen Date of exam Sal Room Tid Time Kurskod Course code Provkod LADOK code

Läs mer

Föreläsning 2 Programmeringsteknik och C DD1316

Föreläsning 2 Programmeringsteknik och C DD1316 Föreläsning 2 Programmeringsteknik och C DD1316 Föreläsning 2 Programmeringsteknik och C Datatyp Aritmetiska operatorer Omvandling av typer Reserverade ord Mikael Djurfeldt Logiska operatorer

Läs mer

Fö 2 TSEA81 Datorteknik och realtidssystem

Fö 2 TSEA81 Datorteknik och realtidssystem Fö 2 TSEA81 Datorteknik och realtidssystem Shared Resources Shared resources En gemensam resurs är något som används av en eller flera processer. Det kan t ex var: Data: variabel, buffer, databas Hårdvara:

Läs mer

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2014-10-17 Skrivtid: 0800-1300 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper.

Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper. Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10 Skrivtid: 0800-1300 Inga hjälpmedel. Tänk på följande Maximal poäng är 40. För betygen 3 krävs 18 poäng. För betygen 4, 5 kommer något

Läs mer

Grundläggande programmering med C# 7,5 högskolepoäng

Grundläggande programmering med C# 7,5 högskolepoäng Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)

Läs mer

TENTAMEN. Luleå tekniska universitet

TENTAMEN. Luleå tekniska universitet TENTAMEN Luleå tekniska universitet Kurskod: D0019N Kursnamn: Programutveckling med Java Tentamensdatum: 2009-12-21 Skrivtid: 4 timmar Tillåtna hjälpmedel: Deitel & Deitel: Java How to Program (valfri

Läs mer

Grundkurs Programmering

Grundkurs Programmering HI124 Grundkurs Programmering F7b: Funktioner på djupet! A. Cajander, STH 6 1 5 42 3.14f a float char short circuit order of subexp eval. Dagens fokus = + - * / % ++ -- + - * / % & ^ > ==!= > < >=

Läs mer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik II 2018-10-19 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng Lunds Universitet LTH Ingenjörshögskolan, Helsingborg Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng Skrivtid: 08.00-13.00 Tillåtna hjälpmedel: Inga. Maximalt

Läs mer

Systemutvecklare SU13, Malmö

Systemutvecklare SU13, Malmö Systemutvecklare SU13, Malmö Tentamen, delkurs Programmeringsteknik C#, del 1 (30 YH-poäng) Plats: Plushögskolan Malmö Tid: 3 oktober 2014, kl. 9.00-13.00 Tillåtna hjälpmedel: Papper, penna, suddgummi,

Läs mer

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN HI1024 Programmering, grundkurs TEN2 2016-12-22 KTH STH Flemingsberg 8.15-13.00 Tillåtna hjälpmedel: Kursboken C PROGRAMMING A Modern Approach K. N. King helt utan anteckningar Alternativt C från början

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2015-06-01 Lokal Tid 14-18 Kurskod Provkod Kursnamn Provnamn Institution Antal frågor 6 Antal sidor (inklusive denna sida) 6 Kursansvarig Lärare som besöker skrivsalen

Läs mer

HI1024 Programmering, grundkurs TEN2 2015-10-30

HI1024 Programmering, grundkurs TEN2 2015-10-30 HI1024 Programmering, grundkurs TEN2 2015-10-30 KTH STH Haninge 8.15-13.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King

Läs mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2013-12-16, 14:00 18:00. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker tentamenssalarna ca 15:00 och

Läs mer