Tentamen Datorteknik och realtidssystem, TSEA81 Datum Lokal

Storlek: px
Starta visningen från sidan:

Download "Tentamen Datorteknik och realtidssystem, TSEA81 Datum Lokal"

Transkript

1 Tentamen Datorteknik och realtidssystem, TSEA81 Datum Lokal TER1 Tid Kurskod TSEA81 Provkod TEN1 Kursnamn Datorteknik och realtidssystem Institution ISY Antal uppgifter 5 Antal sidor 17 (inklusive denna sida) Kursansvarig Anders Nilsson Lärare som besöker skrivsalen Anders Nilsson Telefon under skrivtiden Besöker skrivsalen Cirka 15 och 17 Kursadministratör Jeanette Mathisen 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.) Tänk igenom din lösning NOGGRANT och använd dig av de lösningsprinciper som kursen förevisar. Okonventionella och tvetydiga lösningar ger poängavdrag. Svara ALDRIG med pseudokod, om det inte specifikt efterfrågas. Pseudokod blir lätt tvetydig och därmed inte bedömningsbar. Skriv läsbart! Oläsbar text kan inte bedömas och ger därmed inga poäng. Lycka till! 1

2 2

3 Uppgift 1: Teori(8p) (a) (2p) Ibland används ett foreground/background-system som ett alternativ till ett realtidsoperativsystem med processer. Att använda ett realtidsoperativsystem med processer har fördelar och nackdelar jämfört med ett foreground/background-system. Ange minst en fördel och minst en nackdel. (b) (2p) I ett realtidsoperativsystem såsom Simple-OS startas en process/task genom att anropa funktionen si task create med adressen till den funktion som utgör själva processen. Varför kan man inte starta en process genom att bara direkt anropa själva process-funktionen? (c) (2p) Antag att en gemensam resurs används av två processer P1 och P2. Antag att den ena processen, P1, läser från den gemensamma resursen, och den andra processen, P2, skriver till den gemensamma resursen. En semafor, initierad till ett, används av P2 i dess kritiska region när data skrivs. Varför är det viktigt för P1 att använda en semafor även när data läses? Är semaforen nödvändig när data läses av P1 om P1 har högre prioritet än P2? Motivera ditt svar. (d) (2p) När man utför en Await-operation på en händelsevariabel krävs det vanligtvis att Await-operationen utförs inne i en while-sats. Beskriv den typiska situationen och förklara varför det är viktigt att använda en while-sats istället för t ex en if -sats. 3

4 Uppgift 2: Stark/svag semafor(10p) Betrakta följande program i Simple-OS. Antag att semaforerna fungerar på så sätt som beskrivits under kursens föreläsningar. Antag att prioritetsbaserad påtvingad schemaläggning används. #include <simple_os.h> #include <stdio.h> #define STACK_SIZE 5000 /* define task stack spaces */ stack_item p1_stack[stack_size]; stack_item p2_stack[stack_size]; si_semaphore S1; // define semaphore /* do some dummy work for an unspecified time */ void do_work() int i; volatile int dummy; for(i=0; i < ;i++) dummy=i; /* task p1 */ void p1(void) si_sem_wait(&s1); printf("s\n"); si_wait_n_ms(2000); printf("e\n"); si_sem_signal(&s1); printf("m\n"); do_work(); printf("a\n"); si_sem_wait(&s1); printf("f\n"); si_wait_n_ms(2000); printf("o\n"); si_sem_signal(&s1); printf("r\n"); while(1); // wait on semaphore // sleep for 2000 ms // signal on semaphore // do some work for some time // wait on semaphore // sleep for 2000 ms // signal on semaphore // wait for ever 4

5 /* task p2 */ void p2(void) si_wait_n_ms(1000); printf("r\n"); si_sem_wait(&s1); printf("t\n"); do_work(); printf("o\n"); si_sem_signal(&s1); printf("s\n"); while(1); // sleep for 1000 ms // wait on semaphore // do some work for some time // signal om semaphore // wait for ever /* main program */ int main(void) /* initialise simple OS kernel */ si_kernel_init(); /* initialise semaphore to 1 */ si_sem_init(&s1, 1); /* create tasks */ si_task_create(p1, &p1_stack[stack_size-1], 10); // high priority si_task_create(p2, &p2_stack[stack_size-1], 20); // low priority /* start the kernel, also starting tasks */ si_kernel_start(); return 0; (a) (8p) Antag att programmet ovan använder sig av starka semaforer. Beskriv steg för steg vad som händer och vad som skrivs ut från det att de båda processerna p1 och p2 är körklara. Var noga med att tala om vilka processer som är körande, vilka listor dom ligger i vid olika tillfällen samt motivera varför olika händelser sker. Listornas exakta namn är inte viktigt, bara det framgår vad deras syfte är. (b) (2p) Antag att programmet ovan använder sig av svaga semaforer. Vad blir den resulterande utskriften när programmet kör? 5

6 Uppgift 3: Monitor(12p) Man önskar ta fram ett realtidsprogram i C som simulerar det klassiska problemet med ätande filosofer. Filosoferna ägnar sitt liv åt att äta och att filosofera om vartannat. Programmet ska uppfylla följande krav: Filosoferna sitter vid ett runt bord och har var sin tallrik med mat samt var sin gaffel. För att äta måste dock en filosof ha två gafflar, dvs förutom den egna gaffeln, som ligger till vänster, måste en filosof använda gaffeln från sin högra bordsgranne. Det finns totalt N FORKS gafflar. När en filosof ska äta får hen bara ta upp en gaffel åt gången, dvs om filosofen börjar med att ta upp vänster gaffel, så måste någon annan ha möjlighet att ta upp eller lägga ned en gaffel, innan filosofen tar upp den högra gaffeln. Om en filosof bara får tag i en gaffel vid ett försök att börja äta så måste den gaffeln läggas tillbaka innan ett nytt försök görs. Det får inte uppstå deadlock eller svält i systemet. Programmet får inte vara onödigt processorintensivt. En filosof ska alternerande äta och filosofera, men får inte övergå till att filosofera om hen inte först ätit. När filosofen filosoferat ska hen övergå till att äta. En filosof får inte blockera någon annan filosof från att börja äta då det är möjligt. Det tar fyra sekunder för en filosof att äta, samt fyra sekunder för en filosof att filosofera. I övergången från att filosofera till att äta kan det dock ta en obestämd tid beroende på hur snart filosofen får tag på två gafflar. Programmet ska lösas med en monitor, innehållande en semafor och en händelsevariabel. Utöver detta får monitorn förses med nödvända variabler för att lösa uppgfiften. Din uppgift är att skriva filosofprocessen philo task, och deklarera samt initiera monitorn. Det finns ett huvudprogram main som ser ut enligt följande: int main(void) /* initialise kernel */ si_kernel_init(); /* create tasks */ int i; for (i=0; i<n_forks; i++) si_task_create(philo_task, &Philo_stack[i][STACK_SIZE-1], 10+i); /* start the kernel */ si_kernel_start(); 6

7 /* will never be here */ return 0; Du får inte ta bort något av huvudprogrammet main, men eventuella nödvändiga tillägg får göras. Nödvändiga programbibliotek antas vara inkluderade och nödvändiga definitioner för det givna huvudprogrammet antas vara gjorda. Du får deklarera och lägga till egna funktioner. Följande funktioner i Simple-OS finns tillgängliga: /* signal operation on semaphore sem */ void si_sem_signal(si_semaphore *sem) /* wait operation on semaphore sem */ void si_sem_wait(si_semaphore *sem) /* broadcast operation on cv */ void si_cv_broadcast(si_condvar *cv) /* wait operation on cv */ void si_cv_wait(si_condvar *cv) /* makes the calling process wait n_ms milliseconds */ void si_wait_n_ms(int n_ms) /* initialisation of semaphore sem */ void si_sem_init(si_semaphore *sem, int init_val) /*initialisation of condvar cv */ void si_cv_init(si_condvar *cv, si_semaphore *mutex) Glöm inte att programkoden måste vara kommenterad för full poäng. 7

8 Uppgift 4: Periodiska processer(10p) Ett realtidssystem med tre periodiska processer, P1, P2 och P3, ska schemaläggas. Följande krav gäller: P1 ska arbeta/köra under 3 tidsenheter i tidsintervallet [i9, (i + 1)9], där i är ett heltal och i 0. P2 ska arbeta/köra under 2 tidsenheter i tidsintervallet [i6, (i + 1)6], där i är ett heltal och i 0. P3 ska arbeta/köra under 1 tidsenheter i tidsintervallet [i3, (i + 1)3], där i är ett heltal och i 0. Varje process aktiveras (är körklar) vid startpunkten för respektive tidsintervall. Det innebär att P1 aktiveras vid var 9:e tidsenhet, med start vid tidpunkten 0 och P2 aktiveras vid var 6:e tidsenhet, med start vid tidpunkten 0, och P3 aktiveras vid var 3:e tidsenhet, med start vid tidpunkten 0. Varje process har en deadline vid slutet av respektive tidsintervall. Det innebär att P1 har en deadline vid var 9:e tidsenhet, med början vid tidpunkten 9 och P2 har en deadline vid var 6:e tidsenhet, med början vid tidpunkten 6 och P3 har en deadline vid var 3:e tidsenhet, med början vid tidpunkten 3. Tänk på att för varje deluppgift nedan tydligt visa och motivera hur du kommer fram till svaret. Rita en tidslinje där det framgår när och hur länge respektive process kör och var de har sina deadlines. För följande deluppgifter, avgör om processerna uppfyller kraven. Om de uppfyller kraven ange var det finns outnyttjad processortid. Om de inte uppfyller kraven ange vid vilka tidpunkter processerna missar sina deadlines. Eventuellt missade deadlines medför att det arbete som inte utförts inom ett tidsintervall förkastas, dvs det ackumuleras inte till kommande tidsintervall. Ange också den faktiska utnyttjandegraden under ovanstående förutsättningar och krav. (a) (5p) Antag att schemaläggningen Earliest Deadline First (EDF) används. (b) (5p) Antag att schemaläggningen Rate monotonic Scheduling (RMS) används. 8

9 Uppgift 5: Skapa och starta process(10p) Betrakta situationen i figur 1 nedan. Den visar TCB (Task Control Block) för en icke körande process med tillhörande minnesutrymme. Vi kan kalla denna process för P0. Beskriv de olika steg som genomgås för att skapa och sedan starta ytterligare en process P1. Tänk på att i din beskrivning ta med vilka listor som är aktuella, hur minnet påverkas, hur och vilka delar av processorn som används. De olika stegen måste beskrivas i rätt ordning för full poäng. Figur 1: En process, icke körande. 9

10 Lösningsförslag fråga 1: 1a En fördel med ett RTOS är att med processer blir programmet mer modulärt och lättare att underhålla. En annan fördel är att processorn kan utnyttjas mer effektivt då ett RTOS typiskt växlar till en annan process när en process blir väntande. En nackdel med ett RTOS är att risken för deadlock ökar. En annan nackdel är att systemet blir svårare att analysera och felsöka. 1b Om själva process-funktionen anropas, istället för att startas (med si task create), så kommer process-funktionen bara att köras och inte bli en del av de parallela processerna i systemet mellan vilka en schemaläggare kan växla. 1c När P1 läser kan den bli avbruten, och om läsningen inte föregåtts av en Waitoperation som sätter semaforen till 0, kan den avbrytande processen P2 fortsätta förbi sin Wait-operation, modifiera gemensamma data, vilket kan göra det lästa datat inkonsistent för P1 om läsningen inte är atomär. I ett scenario där den läsande P1 har högre prioritet än den skrivande P2 kan P2 avbrytas. Om läsningen i P1 då inte föregås av en Wait-operation så kan P1 läsa ej färdigskrivna data, och datat kan bli inkonsistent för P1. 1d När en Await-operation utförs på en händelsevariabel (vi kallar den C), så blir den anropande processen väntande på C. Vid ett senare tillfälle kan samma process aktiveras (blir redo att köra) via en Cause-operation på C. När processen sedan blir körande, för att en annan process gjort en Signal-operation (på en semafor associerad med C), så fortsätter processen efter anropet till Await. Eftersom det inte går att veta om det villkor som orsakade Await-operationen har ändrats utan att på nytt utvärdera det så måste en while-sats användas. Om en if -sats används sker ingen ny utvärdering och processen går (kanske) felaktigt in i den kritiska regionen. 10

11 Lösningsförslag fråga 2: 2a Eftersom en stark semafor förhindrar svält så kan inte p1 får tillgång till semaforen en andra gång (efter A) eftersom p2 då begärt tillgång till semaforen under tiden som p1 hade tillgång till semaforen första gången. Här finns tre tillfällen som kan orsaka ett processbyte. När en process gör sleep (och en annan process är körklar), när en process anropar wait (och semaforens värde är 0) samt när en process kör signal (och en högre prioriterad process är körklar). Tre listor blir aktuella, en time-list för då sleep anropas (T), en wait-list för semaforen (W) och en ready-lista för körklara processer (R). p1 p2 körande counter T W R 1) p1 1 p1,p2 2) wait p1 0 p1,p2 3) sleep(2) sleep(1) - 0 p1,p2-4) wait (p2) 0 p1 p2 (p2) 5) signal p1 0 p1,p2 6) wait p2 0 p1 p2 7) signal p1 0 p1,p2 8) sleep(2) p2 0 p1 p2 9) signal p1 1 p1,p2 1) Från det att båda processerna är körklara blir p1 (högst prioritet) körande. 2) p1 gör wait (W tom) counter räknar ned 3) printf(s), p1 gör sleep(2), p2 blir körande och gör sleep(1) varpå båda ligger i T 4) p2 vaknar först, printf(r), p2 gör wait (counter==0) och läggs i W 5) p1 vaknar, printf(e), kör signal (p2 i W, så counter oförändrad, p2 till R), och p1 med högst prio fortsätter, printf(m), do work, printf(a) 6) p1 gör wait (counter==0) och läggs i W, så p2 blir körande, printf(t), do work, printf(o) 7) p2 gör signal (p1 i W och högst prio), p1 blir körande (counter oförändrad), printf(f) 8) p1 gör sleep(2) (p1 till S), p2 blir körande, printf(s), p2 går in i oändlig while-loop 9) p1 vaknar, har högst prio och blir körande, printf(o), gör signal (W tom så counter räknar upp), printf(r), p1 går in i oändlig while-loop Utskriften blir alltså: S R E M A T O F S O R 2b Urskriften blir: S R E M A F O R Eftersom en svag semafor tillåter svält så kan p1 få tillgång till semaforen direkt även den andra gången. Processbyte till p2 kommer endast att ske när p1 gör sleep (efter S), därefter kör p1 hela tiden fram till den oändliga while-loopen varefter inga fler processbyten sker. Dvs, p2 fastnar för evigt vid wait. 11

12 Lösningsförslag fråga 3: Nedan redovisas hela programmet. #include <simple_os.h> #include <stdio.h> #include <stdlib.h> #include <string.h> /* any number of forks more than 1 should work */ #define N_FORKS 5 #define STACK_SIZE 5000 stack_item Philosopher_stack[N_FORKS][STACK_SIZE]; /* data structure for dinner table */ typedef struct /* the forks, 0=unused, 1=used */ int fork[n_forks]; /* philosopher id */ int id; /* semaphore for protection of the dinner table */ si_semaphore mutex; /* event variable to indicate if a fork has been put down or lifted up */ si_condvar change; dinner_table_type; typedef dinner_table_type* table_type; table_type table; /* create table: creates a table and initialises the created table */ table_type create_table(void) /* reference to the created table */ table_type table; /* allocate memory */ table = (table_type) malloc(sizeof(dinner_table_type)); /* no forks initially used */ int i; for (i=0; i<n_forks; i++) 12

13 table->fork[i] = 0; /* first philospher id */ table->id = 0; /* initialise semaphore and event variable */ si_sem_init(&table->mutex, 1); si_cv_init(&table->change, &table->mutex); return table; void philosopher_eat(table_type table, int philosopher_id) int left_fork = philosopher_id; int right_fork = (philosopher_id + 1) % N_FORKS; int finished_eating = 0; /* reserve table */ si_sem_wait(&table->mutex); while (!finished_eating) /* left fork available? */ if (table->fork[left_fork] == 0) /* pick up left fork */ table->fork[left_fork] = 1; /* give someone else a chance so pick up or put down a fork */ si_sem_signal(&table->mutex); /* wait a randomised time to avoid deadlock */ si_wait_n_ms((rand() % 2000) + 500); /* reserve table */ si_sem_wait(&table->mutex); /* right for available? */ if (table->fork[right_fork] == 0) /* pick up right fork */ table->fork[right_fork] = 1; /* don t block others while eating */ si_sem_signal(&table->mutex); printf("philosopher %d eating\n", philosopher_id); /* simulate eating */ 13

14 si_wait_n_ms(4000); /* reserve table */ si_sem_wait(&table->mutex); finished_eating = 1; /* put down right fork */ table->fork[right_fork] = 0; /* put down left fork */ table->fork[left_fork] = 0; /* tell others table has changed */ si_cv_broadcast(&table->change); else /* right fork not available, so put down left fork to give someone else a chance to eat */ table->fork[left_fork] = 0; /* tell others table has changed */ si_cv_broadcast(&table->change); if (!finished_eating) /* wait for a change, a chance to eat */ si_cv_wait(&table->change); /* release table */ si_sem_signal(&table->mutex); void philosopher_think(int philosopher_id) printf("philosopher %d thinking\n", philosopher_id); /* simulate thinking */ si_wait_n_ms(4000); void philosopher_task(void) /* reserve table */ si_sem_wait(&table->mutex); /* generate unique id */ 14

15 int id = table->id++; /* release table */ si_sem_signal(&table->mutex); while(1) /* eat */ philosopher_eat(table, id); /* think */ philosopher_think(id); /* main */ int main(void) /* initialise kernel */ si_kernel_init(); /* set the table */ table = create_table(); /* create philosopher tasks */ int i; for (i=0; i<n_forks; i++) si_task_create(philosopher_task, &Philosopher_stack[i][STACK_SIZE-1], 10+i); /* start the kernel */ si_kernel_start(); /* will never be here */ return 0; 15

16 Lösningsförslag fråga 4: 4a Med EDF (Earliest Deadline First) är det möjligt att uppnå 100 procent utnyttjandegrad, vilket också blir fallet här, dvs U e = 1. Alla processer klarar sina deadlines. P P2 P b Med RMS får processerna prioritet utefter hur ofta de ska köras. Kortare periodtid ger högre prioritet. Dvs, P3 > P2 > P1. P2 och P3 klarar sina deadlines, men P1 missar sin deadline vid tidpunkten t=9. EFtersom icke utfört arbete ej ackumuleras (förkastas) så leder det till att det finns outnyttjad processortid under tidsintervallet t= Den faktiska utnyttjandegraden blir därför U e = 17/18. P P2 P

17 Lösningsförslag fråga 5: Att skapa process P1 sker i följande ordning: 1. Skapa ett TCB för P1, fyll i värden för prioritet och tid (typiskt 0). 2. Skapa ett stackutrymme för P1 i minnet. 3. Skriv värdet för PC, dvs startadressen för den funktion som utgör processen, i stacken tillhörande P1. 4. Skriv värden för önskat starttillstånd hos registeruppsättningen, i stacken. 5. Stackpekaren SP pekar nu på toppen av stacken, så spara SP i TCB för P1. 6. Process P1 är nu redo att starta, lägg dess TCB i ReadyList. Att starta process P1 sker i följande ordning: 1. Markera process P1 med en pekare kallad Running. 2. Läs SP från TCB för processen markerad med Running (dvs P1:s TCB) in till processorns stackpekare. 3. Läs in register från P1:s stack till processorn register 4. Läs in PC från P1:s stack till processorn PC. Därmed hoppar exekveringen till processens adress och processen startar. 17

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-04-18 Lokal KÅRA 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

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

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

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

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ö 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

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

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

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

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

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

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

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

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

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

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

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167 GU / Chalmers Campus Lindholmen Tentamen Programutveckling 2016-01-13 LEU 482 / TIG167 Examinator: Henrik Sandklef (0700-909363) Tid för tentamen: 2016-01-13, 08.30 12.30 Ansvarig lärare: Henrik Sandklef,

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

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

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X Algoritmer och Datastrukturer Kary FRÄMLING/Göran PULKKIS (v23) Kap. 7, Sid 1 BINÄRA TRÄD Träd används för att representera olika slags hierarkier som ordnats på något sätt. Den mest använda trädstrukturen

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

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

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

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

Kompilatorer och interpretatorer

Kompilatorer och interpretatorer 1 of 6 Örebro universitet Institutionen för teknik Thomas Padron-McCarthy (Thomas.Padron-McCarthy@oru.se) Tentamen i Kompilatorer och interpretatorer för Dataingenjörsprogrammet m fl lördag 7 november

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

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

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

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

Datorteknik ERIK LARSSON

Datorteknik ERIK LARSSON Datorteknik ERIK LARSSON Inledning Ken Thompson och Dennis M. Ritchie utvecklade C Turingpriset( Nobelpris i datavetenskap ), 1983 Alan Turing (1912-1954) För deras utveckling av generell OS teori och

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

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

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

Operativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp :00-18:00

Operativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp :00-18:00 Operativsystem ID1200/06 och ID2200/06 Tentamen TENA 6 hp 2018-04-03 14:00-18:00 Omtentander på ID2200 TEN1 3.8 hp och ID2206 TEN1 4.5 hp skall inte skriva denna tentamen! Instruktioner Du får, förutom

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

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

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 13 mars 2013, klockan 14:00 19:00 i Vic 2 A-D, 3 A-C. Tillåtna hjälpmedel: på tentan utdelad

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

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

Tentamen ges för: Tentamensdatum: Tid:

Tentamen ges för: Tentamensdatum: Tid: Programmering E 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för: Tentamen TE081B El2 Tentamensdatum: 2012-04-13 Tid: 900 1300 Hjälpmedel: Kursbok Kelley, Pohl: A Book on C, Fourth Edition Tillåtet

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

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

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Onsdagen den 7 mars 2012, klockan 14:00 19:00 i Vic 2, 3. Tillåtna hjälpmedel: på tentan utdelad formelsamling,

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

Lösningar till tentamen i EIT070 Datorteknik

Lösningar till tentamen i EIT070 Datorteknik Lösningar till tentamen i EIT070 Datorteknik Institutionen för Elektro- och informationsteknik, LTH Torsdagen den 13 mars 2014, klockan 14:00 19:00 i MA:10. Tillåtna hjälpmedel: på tentan utdelad formelsamling,

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

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

Concurrency Saker händer samtidigt. Process En instans av ett program

Concurrency Saker händer samtidigt. Process En instans av ett program Concurrency Saker händer samtidigt Hur gör vi flera saker samtidigt på en dator? - Dela på en CPU - Flera CPU Flera processer på en dator. Operativsystemet (OS) tilldelar dem körtid (time slices, prioritet)

Läs mer

Deadlocks. detektera och undvik

Deadlocks. detektera och undvik Deadlocks detektera och undvik Enkla exempel Smal bro med en fil En fyrvägskorsning Fyra vägkorsningar Två lås P: Lock A, Lock B.. Rel. A, Rel. B Q: Lock B, Lock A.. Rel. B, Rel. A Vad motsvarar Resurser?

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

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet.

Datorteknik. Tomas Nordström. Föreläsning 6. För utveckling av verksamhet, produkter och livskvalitet. Datorteknik Tomas Nordström Föreläsning 6 För utveckling av verksamhet, produkter och livskvalitet. Föreläsning 6 Vad händer vid uppstart SoC och Kringkretsar, PIO Programmering i Assembler Lab2 genomgång

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

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

Hjälpmedel: Inga hjälpmedel förutom penna, suddgummi och glatt humör.

Hjälpmedel: Inga hjälpmedel förutom penna, suddgummi och glatt humör. Tentamen Inst. för Informationsteknologi Avdelningen för Datorteknik Herbert P Sander Tel: 070 376 06 87 Ämne: Operativsystem Lokal: Post Scriptum, sal 2 Datum: Måndagen den 13 maj 2002 Tid: Kl 09.00-14.00

Läs mer

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011,

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011, KTH STH TENTAMEN HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011, 8.15-12.15 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny

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

Tentamen i Realtidsprogrammering

Tentamen i Realtidsprogrammering Tentamen i Realtidsprogrammering Omtentamen Datum: 2008-12-13 Tid: 14:00 17:00 Ansvarig lärare: Telefon: 301438 Hjälpmedel: Miniräknare Poäng: Tentamen omfattar 40 poäng fördelade på 5 uppgifter. 20 poäng

Läs mer

Fö 8 TSEA81. Real-time Linux

Fö 8 TSEA81. Real-time Linux Fö 8 TSEA81 Real-time Linux Real-time Linux Olika sätt att åstadkomma Real-time Linux: * Linux 2.6 har CONFIG_PREEMPT option, dvs även processer som gör systemanrop kan preemptas. * Linux 2.6 kan köras

Läs mer

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011, KTH STH TENTAMEN HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011, 8.15-13.15 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny

Läs mer

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167 GU / Chalmers Campus Lindholmen Tentamen Programutveckling 2016-01-13 LEU 482 / TIG167 Examinator: Henrik Sandklef (0700-909363) Tid för tentamen: 2016-01-13, 08.30 12.30 Ansvarig lärare: Henrik Sandklef,

Läs mer

Planering Programmering grundkurs HI1024 HT 2014

Planering Programmering grundkurs HI1024 HT 2014 Planering Programmering grundkurs HI1024 HT 2014 Föreläsning V36 Föreläsning 1 Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande- Interpreterande Programmeringsmiljö Hello World! Att

Läs mer

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012 KTH STH TENTAMEN HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny Panrike och

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

BMI = (vikt i kg) / (längd i m) 2. Lösningsförslag

BMI = (vikt i kg) / (längd i m) 2. Lösningsförslag HI1024 TEN2 2013-10-28 Betygsgränser: Fx-8, E-9, D-11, C-12, B-14, A-16 (MAX-18) Generella rättningsnormer: Mycket dåliga variabelnamn ger -1p totalt på provet vid andra tillfället Inga eller dåliga kommentarer

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

Kompletterande kompendium till kursen Realtidsprogrammering

Kompletterande kompendium till kursen Realtidsprogrammering Kompletterande kompendium till kursen Realtidsprogrammering Mathias Broxvall, Lars Karlsson Örebro Universitet Januari 2010 v2010.1 1 2 Innehåll Innehåll...1 Processer i VxWorks...2 Multitasking...2 Ett

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

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

Realtidssystem. - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 2

Realtidssystem. - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 2 Realtidssystem - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 2 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad

Läs mer

*Pekarvärden *Pekarvariabler & *

*Pekarvärden *Pekarvariabler & * *Pekarvärden *Pekarvariabler & * Motivering Pekare är ett fundamentalt koncept i C (och C++) Multipla returvärden från funktioner. Arrayer hanteras via pekare Dynamiskt minne (kommer i slutet av kursen)

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

Tentamen i. Programmering i språket C

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

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2016-05-31 Lokal Kåra, T1, T2, U1, U15 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal

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

#include <stdio.h> #include <string.h>

#include <stdio.h> #include <string.h> #include #include void fun(char s[]) int i=-1; while(s[++i]!=0) if('a'

Läs mer

Operativsystem ID2206 Tentamen TEN1 4.5 hp :00-18:00

Operativsystem ID2206 Tentamen TEN1 4.5 hp :00-18:00 Operativsystem ID2206 Tentamen TEN1 4.5 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

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

Realtidssystem. - Schemaläggning - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6 Realtidssystem - Schemaläggning - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 6 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt EDA698 (Mats Lilja)

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

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13.00. Omtentamen i Programmering C, Fri, Kväll, 050108.

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13.00. Omtentamen i Programmering C, Fri, Kväll, 050108. 1(8) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13.00. Denna tenta kommer att vara färdigrättad Fr 14/1 och kan då hämtas på mitt tjänsterum,

Läs mer

Realtidssystem. - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-02

Realtidssystem. - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-02 Realtidssystem - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-02 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt EDA698

Läs mer

Realtidsprogrammering

Realtidsprogrammering Realtidsprogrammering En introduktion - Principer och begrepp Realtidsprog. - Anders Arvidsson 1 Vad är ett realtidssystem? Ett system som reagerar på yttre händelser och ger svar inom en bestämd tid.

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2017-08-15 Lokal TER4 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

Kompilatorer och interpretatorer

Kompilatorer och interpretatorer 1 of 8 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Kompilatorer och interpretatorer för Dataingenjörsprogrammet m fl

Läs mer

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman Problemlösning Veckodagsproblemet Gissa talet Siffersumman Veckodagsproblemet Vi vill skriva ett program som kan berätta för oss vad det är för veckodag om x dagar. Arbetsgång Förstå problemet Strukturera

Läs mer

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman Problemlösning Veckodagsproblemet Gissa talet Siffersumman Veckodagsproblemet Vi vill skriva ett program som kan berätta för oss vad det är för veckodag om x dagar. Arbetsgång Förstå problemet Strukturera

Läs mer

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20 LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I 2001-01-20 Betygsgränser: 3 16 poäng 4 23 poäng 5 30 poäng Maxpoäng: 36 poäng Hjälpmedel: inga Lycka till Per Ekeroot Uppgift 1 Kortfrågor

Läs mer

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2015-08-18 Lokal TERE, TER4 Tid 14-18 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 7 Antal sidor (inklusive

Läs mer

Planering Programmering grundkurs HI1024 HT 2015 - data

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

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

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående

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

Tråd C (ms) T (ms) A 4 16 B 3 10 C 4 25 D 2 12

Tråd C (ms) T (ms) A 4 16 B 3 10 C 4 25 D 2 12 LUNDS TEKNISKA HÖGSKOLA Datavetenskap Realtidsprogrammering : EDA040 DAT040 Tentamensskrivning - Realtidsprogrammering 2006-06-01, kl 8.00-13.00 Anvisningar: Tillåtna hjälpmedel: inga utöver Java snabbreferens.

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

Tentamen. Datorteknik Y, TSEA28

Tentamen. Datorteknik Y, TSEA28 Tentamen Datorteknik Y, TSEA28 Datum 2017-10-26 Lokal TER1, TER3 Tid 8-12 Kurskod TSEA28 Provkod TEN1 Kursnamn Provnamn Datorteknik Y Skriftlig tentamen Institution ISY Antal frågor 6 Antal sidor (inklusive

Läs mer

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7) EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7) 1. Motivation ROM. 8kbyte 2 3 2 10 byte 13 Adressbitar [A12,A0] direkt till ROM-kapsel. RWM. 32kbyte 2 5 2 10 byte 15 Adressbitar

Läs mer

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående

Läs mer