Realtidsstöd i Minix. En laborationrapport. Oktober 2012

Storlek: px
Starta visningen från sidan:

Download "Realtidsstöd i Minix. En laborationrapport. Oktober 2012"

Transkript

1 Realtidsstöd i Minix En laborationrapport Karl Zylinski Hampus Gustafsson Oktober

2 Innehåll 1 Introduktion Problem Skapa ett testprogram Se till att varje process känner till sitt realtidskrav Lägga till systemanrop vars syfte är att sätta deadline Förändra Minix schemaläggare så att den prioriterar processer med realtidskrav Utförande Skapa ett testprogram Se till att varje process känner till sitt realtidskrav Lägga till systemanrop vars syfte är att sätta deadline Förändra Minix schemaläggare så att den prioriterar processer med realtidskrav Analys Vår utökade schemaläggare Program och processer Appendix A: Kod tillagd i Minix kärna och tjänster kernel/proc.h servers/pm/table.c servers/pm/proto.h servers/pm/misc.c include/minix/com.h kernel/system.h kernel/system.c kernel/system/do setdl.c include/minix/callnr.h lib/posix/ setdl.c lib/posix/makefile.in kernel/system/do fork.c kernel/main.c kernel/proc.c Appendix B: Användarprogram deadline.c deadlinetest.c

3 1 Introduktion Detta är en rapport som beskriver och diskuterar utförandet av en laborationsuppgift i kursen operativsystem vid Högskolan i Skövde. Det är således en väldigt teknisk rapport och kunskap om såväl operativsystem som programmering är nödvändigt för att ta till sig innehållet. Rapporten består av fyra delar; Den introduktion du just nu läser, som även inenhåller en problembeskrivning, en huvuddel som beskriver vilka val som gjordes och hur arbetet utfördes, en resultat-del där bland annat körexempel demonstreras samt en reflektiv analys-del. Det finns även en appendix-del i slutet där all kod som lagts till eller ändrats går att finna. 1.1 Problem Vårt problem var undersöka hur realtidsstöd i Minix skulle gå att tillhandahålla genom att utöka kärna och tjänster samt på detta vis tillhandahålla detta. Realtidsstödet skulle realiseras genom att ge användare av operativsystemet en möjlighet att sätta en deadline för processen. Under nedanstående rubriker delas uppgiften upp i flera delproblem och deluppgifter Skapa ett testprogram Uppgiftsbeskrivningen inkluderade ett komplett exempelprogram (deadline.c, 5.1, sidan 12) som varje sekund satte deadline till en sekund. Om denna deadline missades så stängde programmet av sig och skrev ut ett felmeddelande. Om programmet under 100 sekunder lyckades hålla alla deadlines så skrevs ett meddelande ut och varpå det avslutades. Detta program använde sig av en icke-existerande biblioteksfunktion vid namn setdl för att sätta sin deadline. En av våra deluppgifter var att se till att denna funktion existerar och att den sätter deadline för processen. Enligt uppgiften skulle realtidsstödet testas genom att starta flera samtida ovan beskrivna exempelprogram och se till att samtliga håller sin deadline. Utan realtidsstödet så klarade sig på vår hårdvara maximalt 8 program, vi skulle se till att minst 15 program klarade kravet. En av deluppgifter var således att skapa ett program som startar flera exempelprogram och väntar på att de kör klart, detta program kallas hädanefter för testprogrammet Se till att varje process känner till sitt realtidskrav För att kunna sätta en deadline på en process så måste en process på något vis kunna ta emot och spara undan denna deadline. Detta krävde alltså att vi på något vis skulle förändra den datastruktur som representerar processtabellen och införa en representation av deadline. 3

4 1.1.3 Lägga till systemanrop vars syfte är att sätta deadline Eftersom vårt exempelprogram ville sätta sin deadline med en icke-existerande biblioteksfunktion setdl var vi tvungna att lägga till denna funktion. Denna funktion skulle i sin tur vara kopplad till ett systemanrop från användarrymd till servicerymd. Servicerymd-funktionen skulle i sin tur vara kopplad från servicerymd till kärnrymd. I kärnrymden skulle processtabellen modifieras och vår nya deadline sättas Förändra Minix schemaläggare så att den prioriterar processer med realtidskrav Det sista steget i laborationen var att förändra systemets schemaläggare. En schemaläggare är ansvarig för att bestämma vilken process som skall få CPUtid härnäst. Vanliga problem med schemaläggning är svält, att en process aldrig får CPU-tid eftersom algoritmen konstant bestämmer att andra processer skall få CPU-tid. Det finns många olika algoritmer för att göra detta, Minix använder sig av en algoritm som kallas Multilevel Feedback Queue Scheduling som väldigt väl undviker svält. Algoritmen bygger på en round-robin algoritm, en sådan algoritm går igenom alla processer och ger alla processortid. Processerna är tilldelade ett tidskvanta, överskrids detta så byter processorn till nästa process i kön. Utöver detta delar algoritmen in processerna i cirka 15 olika köer där varje kö representerar en prioritetsnivå, då en process missar sitt tidskvanta så bestraffas den genom att nedprioriteras. Prioritetsnivån med högst värde är de lägst prioriterade kön, den med lägst värde är det högst prioriterade. Minix schemaläggare är på grund av detta väldigt rättvis. Det är en del av problemet med uppgiften, det vill säga att förändra en väldigt rättvis schemaläggare så att den favoriserar processer med en deadline och därmed realiserar realtidskravet. Det är också viktigt att processer med en deadline inte bestraffas då överskrider tilldelat tidskvanta. 2 Utförande Här beskrivs under samma rubriker som problem-avsnittet (1.1, sida 3) hur vi gick till väga för att lösa problemen. 2.1 Skapa ett testprogram Vårt testprogram är väldigt enkelt. Det loopar ett antal gånger och skapar för varje varv i loopen en ny process som startar en instans av det program som angivits som parameter (förmodligen exempelprogrammet). Programmet väntar innan det avslutas på de processer som tidigare startats. Källkoden för detta program finns i avsnitt 5.2 på sidan 13 (deadlinetest.c). 4

5 2.2 Se till att varje process känner till sitt realtidskrav För att ge en process kännedom om sitt realtidskrav så behövde vi lägga till en variabel för detta i dess Process Control Block. Detta är den datastruktur där information nödvändig för kontext byten, schemaläggning och dylikt finns. I Minix så är detta en struct som innehåller ett antal variabler som håller reda på saker som prioritet, kvarvarande tidskvanta (för fair-share schemaläggningen) och minneslayouten för text, stack och kod. Vi lade längst ner i Process Control Block, i proc.h, till en variabel av typen long vid namn p_deadline. Vi valde typen long och inte int eftersom den måste kunna lagra lika stora tal som systemklockan. Tanken är då en deadline sätts så adderas nuvarande systemtid till hur lång deadline som angivits, det slutgiltiga klockslaget lagras sedan i p_deadline. 2.3 Lägga till systemanrop vars syfte är att sätta deadline Exempelprogrammet anropar en biblioteksfunktion vid namn setdl, denna funktionen saknas och vi var därför tvungna att lägga till den i Minix POSIXbibliotek. Funktionen ser vi i figur 1. PUBLIC int s e t d l ( int d e a d l i n e ) message m; m. m1 i2 = d e a d l i n e ; return ( s y s c a l l (MM, SETDL, &m) ) ; Figur 1: Vår implementation av setdl Funktionen skapar ett nytt meddelande och lagrar deadline i ett av meddelandets medlemsvariabler. Därefter görs själva systemanropet till servicerymd och processhanteraren. SETDL är i vår implementation definierad till 67, detta är alltså index i processhanterarens avbrottsvektor. Notera att det är möjligt att från användarrymden skriva _syscall-raden direkt, det är dock mer intuitivt att tillhandahålla en biblioteksfunktion. I processhanteraren tas sedan detta systemanrop emot av funktionen do_- setdl i processhanteraren, som är knuten till avbrott nummer 67/SETDL, funktionen ser vi i figur 2. Det enda funktionen gör att ta emot det meddelande vi i tidigare steg skapade varpå det lägger till endpoint-värdet från processhanterarens processtabell. Endpoint är för vare process ett unikt värde som identifierar processen, detta värde kan kärnan översätta till ett för kärnan användbart processnummer. Anledningen till att endpoint behövs är att kärnan och processhanteraren har olika stora tabeller eftersom processhanteraren inte känner till kärnans processer. Meddelandet skickas därefter vidare till kärnan med hjälp av ett så kallat taskcall, det vill säga ett anrop till kärnan. 5

6 PUBLIC int d o s e t d l ( ) m in. m1 i1 = mp >mp endpoint ; t a s k c a l l (SYSTASK, SYS SETDL, &m in ) ; return (OK) ; Figur 2: Funktionen do setdl i processhanteraren #include.. / system. h #include <s t d i o. h> #include <c l o c k. h> PUBLIC int d o s e t d l ( m ptr ) register message * m ptr ; struct proc * proctab ; int p proc ; /* T r a n s l a t e endpoint to p r o c e s s number */ i f (! i s o k e n d p t ( m ptr >m1 i1, &p proc ) ) return EINVAL; /* Get p r o c e s s t a b l e a d r e s s f o r p r o c e s s number p proc */ proctab = proc addr ( p proc ) ; /* Error i f p r o c t a b i s empty */ i f ( isemptyp ( proctab ) ) return EINVAL; i f ( m ptr >m1 i2 == 0) proctab >p d e a d l i n e = 0 ; else proctab >p d e a d l i n e = get uptime ( ) + m ptr >m1 i2 ; return (OK) ; Figur 3: Vårt taskcall (anrop till kärnan) som hittar processen med hjälp av endpoint och sätter deadline för funnen process För att skapa ett nytt taskcall måste vi först ge anropets avbrott ett unikt värde. Detta görs i filen com.h (4.5, sida 10). Därefter skapade vi en ny funktionsdeklaration i system.h (4.6, sida 10), denna funktion kopplas sedan samman med det avbrottsnumret med hjälp av funktionen map som vi ser i filen system.c (4.7, sida 10). Efter detta kunde själva implementationen av vårt taskcall skrivas, vilket visas i figur 3. Vi översätter från endpoint (lagrad i m_ptr->m1_i1) till ett processnummer med hjälp av funktionen isokendpt, därefter använder vi processnumret för att hämta ut pekaren till korrekt processtabell, vilket görs med funktionen proc_addr. Hittar vi med hjälp av dessa funktioner en korrekt 6

7 pekare till en processtabell så används sedan denna pekare till att sätta vår deadline, vi sätter helt enkelt värdet på p_deadline som vi tidigare lade till i alla processers tabell. 2.4 Förändra Minix schemaläggare så att den prioriterar processer med realtidskrav För att realisera realtidskravet så behöver processen först och främst ha hög prioritet, så att den hamnar i en av de högst prioriterade redoköerna. I Minix så är den högst prioriterade kön en användarprocess får använda satt till USER_Q, som vanligen är definierad till 7. Vi valde att helt enkelt tvinga in realtidsprocesserna i denna kö. Utöver detta behöver även processerna med realtidskrav sorteras efter deadline så att de med kortast deadline ligger först i kön. Alla förändringar vi gjorde av schemaläggaren gjordes i filen proc.c. En komplett lista av dessa förändringar finns i avsnitt 4.14 på sidan 11. Vi började med att i proc.c skapa en funktion vid namn is_rtp som kontrollerar om en process är av realtidstyp, i denna kontroll ingår att se till så att den inte är en process tillhörande kärnan samt att deadlinen inte har överskridits. Därefter förändrade vi funktionen sched enligt figur 4. sched är en funktion som anropas då processer skall läggas till i en redokö. Den bestämmer i vilken kö samt var i kön en ny process skall läggas. Vi lade i funktionen till en if-sats som särbehandlar processer som är av realtidstyp. Funktionen sätter för dessa processer prioriteten (som bestämmer vilken kö processen kommer hamna i) till USER_Q och återställer deras tidskvanta, så att processen aldrig får slut på tidskvanta. i f ( i s r t p ( rp ) ) rp >p p r i o r i t y = USER Q ; rp >p t i c k s l e f t = ; t i m e l e f t = 1 ; Figur 4: Våra förändringar i funktionen sched, den sätter för alla realtidsprocesser prioriteten till USER_Q (vanligen 7) samt återställer dess tidskvanta, så att detta inte kan överskridas Det enda som kvarstod efter detta var att se till så att realtidsprocesserna då de läggs till i en redokö (det vill säga kö nummer USER_Q) läggs till först i kön. Vi lade för detta till koden i figur 5 i funktionen enqueue. Det enqueue gör är att den med hjälp av sched lägger till processer på en korrekt plats. Standardbeteendet för enqueue och sched var det som beskrevs i på sidan 4. Det som lades till i funktionen var en if-sats som kontrollerar om processtabellen rp (pekare till den process som skall läggas till) är av realtidstyp, vilket gör med hjälp av funktionen is_rtp. Därefter hämtas en pekare till en pekare 7

8 register struct proc ** r t s o r t p ; i f ( i s r t p ( rp ) ) r t s o r t p = &rdy head [ q ] ; while (* r t s o r t p!= NIL PROC && (* r t s o r t p ) >p d e a d l i n e < rp >p d e a d l i n e ) r t s o r t p = &(* r t s o r t p ) >p nextready ; rp >p nextready = * r t s o r t p ; * r t s o r t p = rp ; i f ( rp >p nextready == NIL PROC) r d y t a i l [ q ] = rp ; else Figur 5: Våra förändringar i funktionen enqueue, den loopar för realtidsprocesser igenom vald prioritetskö tills den hittar en process med längre deadline än den som skall läggas till och lägger då före denna till processen. till huvudet i den redokö där processen skall läggas till ut (rt_sort_p). Denna variabel är en pekare till en pekare därför att vi vill kunna byta värdet på själva elementet i redokön, detta hade i en vanlig array gått att göra med ett index, men i en länkad lista finns det inga index. while-loopen i den tillagda koden loopar så länge rt_sort_p har en kortare deadline än processen vi vill lägga till, för varje varv i loopen tas nästa element i listan ut och rt_sort_p sätts till en pekare till en pekare till detta element. När loopen är klar har vi antingen funnit det första elementet med längre deadline än den process som skall läggas till alternativt nått slutet av redokön. Därefter sätts p_nextready för rp till det hittade elementet. Detta gör att det hittade elementet ligger efter rp i den länkade listan, därefter byter rt_- sort_p och rp plats med hjälp av raden *rt_sort_p = rp;. Elementet har nu lagts till på korrekt position i listan. Notera att p_nextready för rp kommer att vara NIL_PROC om loopen ovan fann slutet på listan, detta gör att den länkade listan nästan automatiskt får ett korrekt slut, vi behöver dock justera redoköns ände-variabel (rdy_tail) manuellt, vilket är det sista som görs i den tillagda koden. 3 Analys 3.1 Vår utökade schemaläggare Vår schemaläggare låter processer med kortare deadline gå före de med längre deadline, vilket är en simpel lösning som tyvärr kan skapa svält hos de processer som saknar deadline. En potentiell lösning till detta är att skapa en separat kö 8

9 för endast realtidsprocesser, hur mycket detta skulle hjälpa är dock osäkert med tanke på att processorn fortfarande måste gå igenom kön med realtidsprocesser innan den kan ta sig an övriga. 3.2 Program och processer Konceptet med program och processer är en viktig del att förstå i ett operativsystem. En process är till skillnad får ett program inladdat i minnet och kan därför köras på processorn. Ett program är alltså inte inladdat i minnet utan ligger inaktivt på sekundära minnet och har minst en exekveringstråd, stack, heap och programräknare. Fördelarna med algoritmen är att den är hyfsat snabb eftersom nya realtidsprocesser får rätt plats i kön utan att kön behöver sorteras separat och att den är ganska simpel. 4 Appendix A: Kod tillagd i Minix kärna och tjänster 4.1 kernel/proc.h Tillagt längst ner i struct proc long p d e a d l i n e ; 4.2 servers/pm/table.c Tillagt i tabellen d o s e t d l, /* 67 = s e t d l */ 4.3 servers/pm/proto.h Under /* misc.c */ lade vi till PROTOTYPE( int d o s e t d l, ( void ) ) ; 4.4 servers/pm/misc.c PUBLIC int d o s e t d l ( ) m in. m1 i1 = mp >mp endpoint ; t a s k c a l l (SYSTASK, SYS SETDL, &m in ) ; return (OK) ; 9

10 4.5 include/minix/com.h # define SYS SETDL (KERNEL CALL + 50) /* s y s s e t d l ( ) */ #define NR SYS CALLS kernel/system.h /* t a s k c a l l f o r s e t t i n g d e a d l i n e */ PROTOTYPE( int d o s e t d l, ( message * m ptr ) ) ; 4.7 kernel/system.c map(sys SETDL, d o s e t d l ) ; /* s e t d e a d l i n e */ 4.8 kernel/system/do setdl.c Ny fil #include.. / system. h #include <s t d i o. h> #include <c l o c k. h> PUBLIC int d o s e t d l ( m ptr ) register message * m ptr ; struct proc * proctab ; int p proc ; /* T r a n s l a t e endpoint to p r o c e s s number */ i f (! i s o k e n d p t ( m ptr >m1 i1, &p proc ) ) return EINVAL; /* Get p r o c e s s t a b l e a d r e s s f o r p r o c e s s number p proc */ proctab = proc addr ( p proc ) ; /* Error i f p r o c t a b i s empty */ i f ( isemptyp ( proctab ) ) return EINVAL; i f ( m ptr >m1 i2 == 0) proctab >p d e a d l i n e = 0 ; else proctab >p d e a d l i n e = get uptime ( ) + m ptr >m1 i2 ; return (OK) ; 4.9 include/minix/callnr.h #define SETDL 67 /* s e t d e a d l i n e f o r p r o c e s s */ 10

11 4.10 lib/posix/ setdl.c Ny fil #include <l i b. h> #include <u n i s t d. h> PUBLIC int s e t d l ( int d e a d l i n e ) message m; m. m1 i2 = d e a d l i n e ; return ( s y s c a l l (MM, SETDL, &m) ) ; 4.11 lib/posix/makefile.in s e t d l. c \ 4.12 kernel/system/do fork.c /* I n i t i a l i z e d e a d l i n e f o r p r o c e s s to 0 */ rpc >p d e a d l i n e = 0 ; 4.13 kernel/main.c rp >p d e a d l i n e = 0 ; 4.14 kernel/proc.c Bland deklarationerna högst upp i filen FORWARD PROTOTYPE( int i s r t p, ( struct proc * rp ) ) ; Längre ner i filen PRIVATE int i s r t p ( pr ) struct proc * pr ; return pr >p d e a d l i n e!= 0 &&! i s k e r n e l p ( pr ) && pr >p d e a d l i n e > get uptime ( ) ; I funktionen enqueue register struct proc ** r t s o r t p ; i f ( i s r t p ( rp ) ) r t s o r t p = &rdy head [ q ] ; 11

12 while (* r t s o r t p!= NIL PROC && (* r t s o r t p ) >p d e a d l i n e < rp >p d e a d l i n e ) r t s o r t p = &(* r t s o r t p ) >p nextready ; rp >p nextready = * r t s o r t p ; * r t s o r t p = rp ; i f ( rp >p nextready == NIL PROC) r d y t a i l [ q ] = rp ; else I funktionen sched i f ( i s r t p ( rp ) ) rp >p p r i o r i t y = USER Q ; rp >p t i c k s l e f t = ; t i m e l e f t = 1 ; 5 Appendix B: Användarprogram 5.1 deadline.c Testar under 100 sekunder hurvida ett program håller en deadline på en sekund #include <s t d i o. h> #include <s t d l i b. h> #include <u n i s t d. h> #include <s y s / types. h> #include <time. h> #include <s y s / r e s o u r c e. h> void t e s t r t ( void ) t i m e t r e c e n t ; t i m e t new ; int count ; int i n n e r ; s e t d l ( ) ; /* l e t a l l o t h e r RT p r o c e s s e s s t a r t up */ s l e e p ( 1 ) ; /* w h i l e we s l e e p */ r e c e n t = time (NULL) ; count = 0 ; while ( count < 100) s e t d l ( 6 0 ) ; /* s e t d e a d l i n e */ while ( ( new = time (NULL) ) == r e c e n t ) /* s t i l l on t h e same second */ /* do nothing */ 12

13 i f ( new == ( r e c e n t + 1) ) /* new second : did we s k i p any? */ count++; /* no s t i l l working in r e a l t i m e */ else /* missed t h e d e a d l i n e */ s e t d l ( 0 ) ; /* no l o n g e r r e a l time */ p r i n t f ( missed d e a d l i n e a f t e r %d seconds \n, count ) ; return ; r e c e n t = new ; s e t d l ( 0 ) ; /* no l o n g e r r e a l time */ p r i n t f ( s u c c e s s f u l l y met %d s u c c e s s i v e d e a d l i n e s \n, count ) ; int main ( int argc, char ** argv ) t e s t r t ( ) ; return 0 ; 5.2 deadlinetest.c Starta ett antal program med en deadline och vänta på att dessa skall köra klart. #include <u n i s t d. h> int main ( int argc, char ** argv ) int i = 0 ; p i d t pid = 1; char * newargv [ ] = l a x, NULL ; char * newargp [ ] = NULL ; for ( ; i <25; i ++) pid = f o r k ( ) ; i f ( pid == 0) execve ( argv [ 1 ], newargv, newargp ) ; else i f ( pid < 0) /* e r r o r */ return 1 ; while ( wait (NULL)!= 1) ; return 0 ; 13

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö Kö (ADT) En kö fungerar som en kö. Man fyller på den längst bak och tömmer den längst fram

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

Deluppgift 17 Processhantering: exec, sleep, exit, plist

Deluppgift 17 Processhantering: exec, sleep, exit, plist Linköpings Tekniska Högskola Institutionen för Datavetanskap (IDA), Software and Systems (SaS) (c) Klas Arvidsson Deluppgift 17 Processhantering: exec, sleep, exit, plist Inledning För att få ett praktiskt

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

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

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-13 Idag Grafer: Terminologi. Datastrukturer. Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. (Vi får

Läs mer

Programmering för språkteknologer II, HT2011. Rum

Programmering för språkteknologer II, HT2011. Rum Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget

Läs mer

Föreläsning Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037) Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-20 Idag Grafer: Terminologi. Datastrukturer. Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. (Vi får

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

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

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

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

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

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 4 Datastrukturer (DAT037) Föreläsning 4 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-10 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra

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

Tommy Färnqvist, IDA, Linköpings universitet

Tommy Färnqvist, IDA, Linköpings universitet Föreläsning 9 Pekare, länkade noder, länkade listor TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 25 september 2015 Tommy Färnqvist, IDA, Linköpings

Läs mer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036) Tentamen Datastrukturer (DAT036) Datum och tid för tentamen: 2012-08-24, 8:30 12:30. Ansvarig: Nils Anders Danielsson. Nås på 0700 620 602 eller anknytning 1680. Besöker tentamenssalarna ca 9:30 och ca

Läs mer

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

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

Läs mer

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

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öreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2012-11-13 Idag Mer om grafer: Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. Floyd-Warshall. Topologisk sortering

Läs mer

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

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

Läs mer

TDIU01 - Programmering i C++, grundkurs

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

Läs mer

Att använda pekare i. C-kod

Att använda pekare i. C-kod Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare

Läs mer

TDIU01 - Programmering i C++, grundkurs

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

Läs mer

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... } En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-25 Idag Starkt sammanhängande komponenter Duggaresultat Sökträd Starkt sammanhängande komponenter Uppspännande skog Graf, och en möjlig

Läs mer

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning Dagens Agenda String [] argv String [] argv Arrayer och Strängar fortsättning Booleska operatorer if, for, while satser Introduktion till algoritmer public static void main(string [] argv) argv är variabelnamnet

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

Dugga Datastrukturer (DAT036)

Dugga Datastrukturer (DAT036) Dugga Datastrukturer (DAT036) Duggans datum: 2012-11-21. Författare: Nils Anders Danielsson. För att en uppgift ska räknas som löst så måste en i princip helt korrekt lösning lämnas in. Enstaka mindre

Läs mer

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till:

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till: Länkade listor i C Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till: Dynamiskt allokerad array Arrayer allokerade på stacken Kan alltså användas till att

Läs mer

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 12 I torsdags: Klassen TelefonKostnad Exemplifierar objektorienterad design, metoder, konstruktorer static Standardklassen Math Matematiska

Läs mer

Laboration 1 - Grunderna för OOP i Java

Laboration 1 - Grunderna för OOP i Java Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben

Läs mer

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

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

Läs mer

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

Tentamen i. för D1 m fl, även distanskursen. lördag 28 maj 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

Pekare och arrayer. Indexering och avreferering

Pekare och arrayer. Indexering och avreferering Pekare och arrayer En array är ett sammanhängande minnesområde rymmande ett antal element av en viss typ. Arraynamnet kan ses som adressen till arrayens början, dvs. dess första element. En pekare är en

Läs mer

Funktionell programmering DD1361

Funktionell programmering DD1361 Funktionell programmering DD1361 Tupler Två eller fler (men ändligt) antal element. Elementen kan vara av olika typer. Ex: (1,2) :: (Integer, Integer) (( 2, hejsan ), True) ::? Tupel med två element ->

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

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

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

Läs mer

Laboration A Objektsamlingar

Laboration A Objektsamlingar Laboration A Objektsamlingar Avsikten med laborationen är att du ska träna på att använda ett par objektsamlingar. Uppgift 1 Titta genom föreläsningsunderlaget DA129AFAHT07.pdf och testkör exemplen (se

Läs mer

Programmering B med Visual C++ 2008

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

Läs mer

TDDC76 - Programmering och Datastrukturer

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

Läs mer

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private. Tentamen Programmeringsteknik I 2013-06-14 med lösningar 1. Svara kortfattat på följande: a) Vad är en instansvariabel? Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och

Läs mer

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Föreläsning 4 Kö Föreläsning 4 ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista ADT Kö Grundprinciper: En kö fungerar som en kö. Man fyller på den längst bak och

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

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

if (n==null) { return null; } else { return new Node(n.data, copy(n.next)); Inledning I bilagor finns ett antal mer eller mindre ofullständiga klasser. Klassen List innehåller några grundläggande komponenter för att skapa och hantera enkellänkade listor av heltal. Listorna hålls

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

Gissa det hemliga talet

Gissa det hemliga talet Laborationsanvisning Gissa det hemliga talet Steg 2, laborationsuppgift 1 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i

Läs mer

Övning från förra gången: readword

Övning från förra gången: readword (9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver

Läs mer

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011, Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

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

ADS : STACK ADT: STACK. Stack och Kö -Implementering - Tilllämpningar. Oftast förekommande metoder i Stack. TopOfStack

ADS : STACK ADT: STACK. Stack och Kö -Implementering - Tilllämpningar. Oftast förekommande metoder i Stack. TopOfStack Stack och Kö -Implementering - Tilllämpningar ADS : STACK Det finns ett par vanligt förekommande ADT:er för samlingar av element som egentligen är specialfall av listor. En av dem är Stack Definition:

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

Del A (obligatorisk för alla)

Del A (obligatorisk för alla) Del A (obligatorisk för alla) A1. Koden följer garanterat namnkonventionerna. Ringa in rätta svar och lämna in tillsammans med dina övriga svar! a) Hur många objekt skapas av följande kod? World w = new

Läs mer

Länkade strukturer. (del 2)

Länkade strukturer. (del 2) Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion

Läs mer

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall Rekursiva funktioner Föreläsning 10 (Weiss kap. 7) Induktion och rekursion Rekursiva funktioner och processer Weiss 7.1-3 (7.4, 7.5.3 utgår) Fibonaccital (7.3.4) Exempel: Balansering av mobil (kod se lab

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

Det finns många flaggor till g++,

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

Läs mer

HI1025 Operativsystem, KTH Haninge, VT2012

HI1025 Operativsystem, KTH Haninge, VT2012 Del 2 av kursen: Systemprogrammering. Tillfälle 5 (F): Introduktion till programmering med parallella processer: fork(), wait(), exit(), getpid(), getppid(), execl(), execvp(). 1. Parallella processer

Läs mer

TDDC74 Lab 04 Muterbara strukturer, omgivningar

TDDC74 Lab 04 Muterbara strukturer, omgivningar TDDC74 Lab 04 Muterbara strukturer, omgivningar 1 Översikt I den här laborationen kommer ni att lära er mer om: Tillstånd, och skillnader mellan ren funktionell programmering och imperativ. Skillnaden

Läs mer

Föreläsning 7 Datastrukturer (DAT037)

Föreläsning 7 Datastrukturer (DAT037) Föreläsning 7 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-21 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Förra

Läs mer

Föreläsning 6 pekare och pekare tillsammans med arrayer

Föreläsning 6 pekare och pekare tillsammans med arrayer Föreläsning 6 pekare och pekare tillsammans med arrayer Vi ska nu undersöka vad pekare egentligen är och hur de relaterar till arrayer. Det är ett centralt tema i C-programmering. Vi följer boken och går

Läs mer

Teoretisk del. Facit Tentamen TDDC (6)

Teoretisk del. Facit Tentamen TDDC (6) Facit Tentamen TDDC30 2013-06-05 1 (6) Teoretisk del 1. (3p) "Snabba frågor" Alla svar motiveras väl. a) Vad skiljer en statisk metod från en icke-statisk? (0.5p) Svar:En statisk metod är associerad till

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

Operativsystem. Innehåll. Operativsystemets funktion. Vad är ett OS? Vart hittar men ett OS? OS hanterar processorns resurser

Operativsystem. Innehåll. Operativsystemets funktion. Vad är ett OS? Vart hittar men ett OS? OS hanterar processorns resurser Innehåll Operativsystem Vad är operativsystem och hur fungerar de Vad är ett OS? Syfte Att tillåta flera program att köra samtidigt Att fungera som ett abstraktionslager mot hårdvaran Att hantera olika

Läs mer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket 1 Länkade listor Likadant som i Ada-kursen. 2 Stack MyStack MyStack

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

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

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina

Läs mer

Operativsystem (IS1350) :00-12:00

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

Läs mer

Föreläsning 8: Exempel och problemlösning

Föreläsning 8: Exempel och problemlösning TDA 545: Objektorienterad programmering Föreläsning 8: Exempel och problemlösning Magnus Myréen Chalmers, läsperiod 1, 2015-2016 De tre senaste föreläsningarna Läsanvisning: kap 2 & 13 meddelanden och

Läs mer

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037) Föreläsning 8 Datastrukturer (DAT037) Fredrik Lindblad 1 22 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Klasser - speciella medlemsfunktioner Eric Elfving Institutionen för datavetenskap En klass ansvarar ofta för en resurs. Ibland är resursen så enkel som en datamedlem

Läs mer

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander F12 - Collections ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Collections (samlingar) En collection är ett objekt som fungerar som en samling av andra objekt En collection erbjuder

Läs mer

Föreläsning 1 Datastrukturer (DAT037)

Föreläsning 1 Datastrukturer (DAT037) Föreläsning 1 Datastrukturer (DAT037) Fredrik Lindblad 1 30 oktober 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037

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

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

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

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

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING Systemkonstruktion LABORATION REALTIDSPROGRAMMERING Laborationsansvariga: Anders Arvidsson, Björn Lundblad Utskriftsdatum: 2002-10-31 Laboranter: 1 Syfte Denna laboration syftar till att öva användningen

Läs mer

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

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

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

Läs mer

Föreläsning 3. Stack

Föreläsning 3. Stack Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista ADT Stack Grundprinciper: En stack

Läs mer

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i

Läs mer

Typkonvertering. Java versus C

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

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Abstrakta datatyper Listor Stackar

Läs mer

F5: Högnivåprogrammering

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

Läs mer

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

Laboration: Whitebox- och blackboxtesting

Laboration: Whitebox- och blackboxtesting Tilda11 höstterminen 2011 Laboration: Whitebox- och blackboxtesting Mål med laborationen Du ska lära dig begreppen white-box testing och black-box testing Du ska öva dig på att konstruera testfall Du ska

Läs mer

Datalogi, grundkurs 1. Lösningsförslag till tentamen

Datalogi, grundkurs 1. Lösningsförslag till tentamen Datalogi, grundkurs 1 Lösningsförslag till tentamen 6 maj 2000 1. För att proceduren sortera ska fungera som tänkt kan den se ut på följande sätt: const min = 1; max = 3; type tal = integer; index = min..max;

Läs mer

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande: Föreläsning 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp

Läs mer

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator Programmering C: Tentamen 2008-05-31 1 of 5 Örebro universitet Institutionen för teknik Thomas Padron-McCarthy (Thomas.Padron-McCarthy@tech.oru.se) Tentamen i Programmering grundkurs och Programmering

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

Laboration 13, Arrayer och objekt

Laboration 13, Arrayer och objekt Laboration 13, Arrayer och objekt Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration13 i ditt laborationsprojekt innan du fortsätter med laborationen. Uppgift

Läs mer

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga. Tentamen Programmeringsteknik II 2014-0-27 Skrivtid: 0800 100 Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift på nytt papper. Lägg

Läs mer

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036) Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-18 Idag Mer om grafer: Minsta uppspännande träd (för oriktade grafer). Prims algoritm. Kruskals algoritm. Djupet först-sökning. Cykel

Läs mer

F5: Högnivåprogrammering

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

Läs mer