DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005

Størrelse: px
Starte visningen fra side:

Download "DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005"

Transkript

1 - 1. Obligatorisk opgave F.06 System Call Jacob Aae Mikkelsen Ingen andre gruppe medlemmer 6. marts

2 Indhold 1 Opgave beskrivelse 2 2 Analyse Hukommelses allokering Adresser i kernel/user-space Fejlhåndtering Samtidige kald Implementation Indarbejdning af nyt systemkald Systemkaldet Afprøvning Positive test Negative test Konklusion 8 6 bilag Testresultater kokkenmsbox.h kokkenmsbox.c Test Test Test Test Test Test Test

3 1 Opgave beskrivelse Dette er den første obligatoriske opgave i faget DM14 - operativsystemer, på IMADA - Syddansk Universitet, Odense i foråret Opgaven består af at implementere et dobbelt systemkald i en User Mode Linux kerne. Systemkaldet kan benyttes til message passing mellem processer, og derfor skal man kunne både sende og hente beskeder til en message box. Message boxen laves som en First In First Out kø og kan derfor overføre en eller flere beskeder mellem forskellige processer. Systemkaldet skal være robust, det vil sige returnere de korrekte fejlkoder hvis benyttet forkert, og ikke fejle hvis det bliver stoppet midtvejs af en interrupt. Systemkaldene skal derfor testes og dokumenteres. 2 Analyse Der er i opgaven vedlagt en FIFO kø implementeret i userspace linux. Den skal justeres i forhold til systemkaldet, hvor den skal benyttes i kernelspace. De følgende emner skal der tages højde for i implementationen. 2.1 Hukommelses allokering Hvor i userspace funktionerne malloc og free benyttes, skal man i kernelspace bruge kmalloc og kfree. Funktionen kmalloc skal have en prioritets parameter[3], hvor jeg har valgt GFP_DMA som er til brug udelukkende med kmalloc. Ellers er det den eneste forskel, og disse kald er blot udskiftet i den udleverede kode. 2.2 Adresser i kernel/user-space I opgaven er beskrevet hvorledes, funktionerne access_ok, copy_to_user og copy_from_user benyttes til selve kopieringsprocessen, da de fysiske adresser er forskellige i userspace og kernelspace. 2.3 Fejlhåndtering Et systemkald skal være robust, så styresystemet ikke bliver ustabilt. Jeg har valgt at implementere det, så det muligvis er mere kantet, men til gengæld meget robust. For at virke, skal den streng man vil gemme have en afslutning, ellers modtages den ikke, og hvis ikke bufferen er stor nok til at få hele beskeden med, accepteres kaldet heller ikke, da der muligvis ville gå information tabt, og der ville under alle omstændigheder mangle en strengafslutning. 2

4 2.4 Samtidige kald For at interrupts ikke skal gøre systemet ustabilt i f.eks. et tilfælde hvor systemet er ved at skrive, men bliver stoppet midtvejs, og der så læses og dermed slettes af en anden proces, vil der gå kuk i køen. Dette løses ved at sætte et flag der gør midlertidigt forhindrer interrupts. Dermed kan kaldet implementeres således at det kan færdiggøre den vitale del af arbejdet i én proces, og dermed være stabilt. Selv om to processer samtidigt skulle tilgå køen ved hjælp af de to systemkald, skulle det dermed kunne lade sig gøre at undgå problemer, eftersom den vitale del af kaldet ikke kan interruptes. 3 Implementation 3.1 Indarbejdning af nyt systemkald For at få linuxkernen til at acceptere et nyt systemkald, er indsat følgende linier i filen unistd.h, som i guiden til at implementere et systemkald[2]: #define NR_kokkenSend 223 #define NR_kokkenHent 251 Da der var ledige pladser mellem de allerede tilgængelige systemkald, var det ikke nødvendigt at ændre på andre parametre. I filen sys_call_table.c er indsat følgende linier: extern syscall_handler_t sys_kokkensend; extern syscall_handler_t sys_kokkenhent; samt [ NR_kokkenSend ] (syscall_handler_t *) sys_kokkensend, [ NR_kokkenHent ] (syscall_handler_t *) sys_kokkenhent, Det er har alle styresystemets systemkald er defineret, således at kernen er klar over hvilke kald der eksisterer. For at systemet kompilerer implementationen af systemkaldet med, skal kokkenmsbox.o tilføjes til filen Makefile. Nu er det kun selve implementationen af systemkaldet der mangles. 3.2 Systemkaldet Først oprettes filen kokkenmsbox.h, hvor de to kald defineres, og parameterne beskrives. Denne del er triviel, og vedlagt som bilag 6.2 3

5 Det er i filen kokkenmsbox.c, hvor den reelle implementation foregår. I denne fil er der to metoder, én til at sende en besked og én til at hente en besked. Kildekoden i sin helhed er vedlagt som bilag 6.3, men her gennemgåes den i brudstykker kokkensend if (length < 1) { return -22; Først kontrolleres om længde parameteren er længere en bare et afslutningstegn, ellers er det formålsløst at fortsætte. if(access_ok(verify_read, buffer, length)) { Vi undersøger om vi har læserettigheder til at kunne kopiere beskeden til kernelspace. local_irq_save(flags); Hvis vi har fået grønt lys med rettighederne, bliver vi nødt til at få kopieret hele strengen uden afbrydelse, ellers ville systemet fejle, hvis systemkaldet blev kaldt midtvejs, og enten overskrive eller hente en halv besked. Derfor forhindres interrupts til kaldet er færdigt med den sårbare del. int i; for( i=0 ; i < length ; i++) { if(buffer[i] == \0 ) { break; if(i == length-1 && buffer[i]!= \0 ) { return -22; For at være sikker på at det rent faktisk er en streng der kopieres, undersøges om den indeholder et strengafslutningstegn. Hvis ikke der er et afslutningstegn, opfattes det som forkerte parametre at funktionen er kaldt med (forkert længde/bufferstørrelse), og derved returneres fejlkoden for invalid argument. msg_t* msg = kmalloc(sizeof(msg_t),gfp_dma); if(msg == NULL) { return -12; 4

6 Her allokeres pladsen i kernel space til kopieringen msg->next = NULL; msg->length = length; msg->message = kmalloc(length,gfp_dma); if(msg->message == NULL) { return -12; copy_from_user(msg->message, buffer, length); if (first == NULL) { first = msg; last = msg; else { last->next = msg; last = msg; Denne del er stort set identisk med koden fra opgaven, med de ændringer der er beskrevet i analyse afsnittet, hvor beskeden kopieres. local_irq_save(flags); return 0; else { return -12; I den sidste del frigives låsen på interrupts og der returneres. kokkenhent int i; for( i=0 ; i < length ; i++) { if(buffer[i] == \0 ) { break; if(i == length-1 && buffer[i]!= \0 ) { return -22; Her testes om vi vil få hele strengen med ud. Hvis ikke den indeholder en strengafslutning gør vi ikke, og noget ville gå tabt. if (first!= NULL) { 5

7 local_irq_save(flags); msg_t* msg = first; int mlength = msg->length; first = msg->next; /* copy message */ if(access_ok(verify_write, buffer, mlength)) { copy_to_user(buffer, msg->message, mlength); /* free memory */ kfree(msg->message); kfree(msg); local_irq_save(flags); return mlength; else { return -12; return -1; Igen låses for interrupts når kopieringen sættes igang, beskeden kopiereres til userspace, og hukommelsen frigives. 4 Afprøvning For at teste om systemkaldet fungerer efter hensigten, testes både funktionaliteten som den gerne skulle være (positive test) og test, der forsøger at få systemet tiil at fejle (negative test). 4.1 Positive test 1. Én besked sendes ( Test message: Hello World ) med korrekt længde (strlen()+1) Én besked hentes med en buffer der er stor nok til hele beskeden Denne test returnerede som forventet strengen Test message: Hello World og den korrekte retur værdi To beskeder sendes ( Test message: Hello World og Another test sample ) begge med korrekt længde (strlen()+1) To beskeder hentes, begge med stor nok buffer til hele beskeden Denne test returnerede korrekt begge strenge, med korrekt længde 1 Test resultaterne er vedlagt, se bilag 6.1 6

8 3. Tre beskeder sendes. Tre beskeder hentes, med stor nok buffer. Her returneredes ligeledes alle strenge korrekt. Da alle tre test forløber efter hensigten, konkluderes det at fnktionaliteten er i orden, med hensyn til den korrekte brug. Da operativsystemet ikke må fejle, ved forkert brug af et systemkald, men derimod returnere den korrekte fejlkode, er det vigtigt at teste om dette også sker. 4.2 Negative test 1. Her prøves at gemme en streng, men med en negativ længde angivet Testen returnerer -1. Ved brug af perror() fåes Invalid argument, hvilket var forventet. Testen er altså bestået 2. Her testes ved at sende en streng med kortere længde end hele strengen. Herved kopieres slut tegnet \0 ikke med, og det er ikke en streng længere. Dette kan ikke tillades, og testen fejler korrekt med -1 som er Invalid argument 3. Her testes ved at sende en streng korrekt, og prøve at hente den igen, men med kortere længde end hele strengen Herved mistes noget af strengen og dermed information. Dette kan ikke tillades, og testen fejler korrekt med -1 som er Invalid argument 4. Sidste test prøver at hente en besked uden at der er nogen i køen. Dette skal naturligvis fejle korrekt. Da testen køres lige efter test6, der gemmer en streng korrekt, uden at hente den, returnerer testen i første omgang strengen fra den tidligere test (det er ok). Anden gang testen køres returneres korrekt og returnerer -1 og med perror() fåes Operation not permitted Dette er som forventet, testen er altså bestået 7

9 5 Konklusion Der er implementeret to systemkald i en usermode linux kerne, der gør det muligt for message passing mellem to forskellige processer. Disse systemkald er testet for funktionalitet og robusthed, både i korrekt brug og ved forkerte parametre. Systemkaldene bestod alle tests. Alle spørgsmål i opgaven er besvaret, og da testene af implementationen ikke afslørede fejl, betragtes opgaven derfor som løst tilfredsstillende. Litteratur [1] Silberschatz, Galvin, Gagne, Operating System Concepts, 7th ed. [2] [3] 8

10 6 bilag 6.1 Testresultater dm14:/home/dm14/kok04/linux #./test1 Return value of send: 0 First message retrieved: Test message: Hello World Return value: 26 dm14:/home/dm14/kok04/linux #./test2 First message retrieved: Test message: Hello World Return value: 26 Second message retrieved: Another test sample Return value: 20 dm14:/home/dm14/kok04/linux #./test3 First message retrieved: Test message: Hello World Return value: 26 Second message retrieved: Another test sample Return value: 20 Third message retrieved: This is also a test sample Return value: 27 dm14:/home/dm14/kok04/linux #./test4 Return value: -1 Fejlen er: Invalid argument dm14:/home/dm14/kok04/linux #./test5 Return value: -1 The error is: Invalid argument dm14:/home/dm14/kok04/linux #./test6 Return value: 0 Return value: -1 The error is: Invalid argument dm14:/home/dm14/kok04/linux #./test7 Return value: 22 Fejlen er: Success dm14:/home/dm14/kok04/linux #./test7 Return value: -1 Fejlen er: Operation not permitted 9

11 6.2 kokkenmsbox.h 2 kokkenmsbox. h 3 / 4 #ifndef UML_KOKKENMSBOX_H 5 #define UML_KOKKENMSBOX_H 6 extern int sys_kokkenhent ( char b u f f e r, int l e n g t h ) ; 7 extern int sys_kokkensend ( char b u f f e r, int l e n g t h ) ; 8 #endif 6.3 kokkenmsbox.c 2 kokkenmsbox. c 3 / 4 #include " l i n u x / k e r n e l. h" 5 #include " l i n u x / unistd. h" 6 asmlinkage 7 8 typedef struct _msg_t msg_t ; 9 struct _msg_t{ 10 msg_t next ; 11 int length ; 12 char message ; 13 ; static msg_t f i r s t = NULL; 16 static msg_t l a s t = NULL; 17 unsigned long f l a g s ; int sys_kokkensend ( char b u f f e r, int l e n g t h ) 20 { 21 i f ( length < 1) { 22 return 22; i f ( access_ok (VERIFY_READ, b u f f e r, l e n g t h ) ) { 25 local_irq_save ( f l a g s ) ; 26 int i ; 27 for ( i =0 ; i < l e n g t h ; i ++) { 28 i f ( b u f f e r [ i ] == \0 ) { 29 break ; i f ( i == length 1 && b u f f e r [ i ]!= \0 ) { 32 return 22; msg_t msg = kmalloc ( sizeof (msg_t),gfp_dma) ; 10

12 36 i f (msg == NULL) { 37 return 12; msg >next = NULL; 40 msg >l e n g t h = l e n g t h ; 41 msg >message = kmalloc ( length,gfp_dma) ; 42 i f (msg >message == NULL) { 43 return 12; copy_from_user (msg >message, b u f f e r, l e n g t h ) ; i f ( f i r s t == NULL) { 48 f i r s t = msg ; 49 l a s t = msg ; else { 52 l a s t >next = msg ; 53 l a s t = msg ; local_irq_save ( f l a g s ) ; 56 return 0 ; else { 59 return 12; int sys_kokkenhent ( char b u f f e r, int l e n g t h ) 64 { 65 int i ; 66 for ( i =0 ; i < l e n g t h ; i ++) { 67 i f ( b u f f e r [ i ] == \0 ) { 68 break ; i f ( i == length 1 && b u f f e r [ i ]!= \0 ) { 71 return 22; i f ( f i r s t!= NULL) { 76 msg_t msg = f i r s t ; 77 int mlength = msg >l e n g t h ; 78 f i r s t = msg >next ; / copy message / 81 i f ( access_ok (VERIFY_WRITE, b u f f e r, mlength ) ) { 11

13 82 local_irq_save ( f l a g s ) ; 83 copy_to_user ( b u f f e r, msg >message, mlength ) ; 84 / f r e e memory / 85 k f r e e (msg >message ) ; 86 k f r e e (msg) ; 87 local_irq_save ( f l a g s ) ; 88 return mlength ; else { 91 return 12; return 1; Test 1 2 Test o f s y s t e m c a l l kokkenhent og kokkensend 3 Send 1, g e t 1 4 / 5 #include <s t d i o. h> 6 #include <errno. h> 7 #include "asm/ arch / unistd. h" 8 9 _ s y s c a l l 2 ( int, kokkensend, char, b u f f e r, int, l e n g t h ) ; 10 _ s y s c a l l 2 ( int, kokkenhent, char, b u f f e r, int, l e n g t h ) ; int main ( int argc, char argv ) { char in = " Test message : Hello World" ; 15 char msg [ 5 0 ] ; 16 int msglen ; / Send a message c o n t a i n i n g in / 19 msglen = kokkensend ( in, s t r l e n ( in ) +1) ; 20 p r i n t f ( "Return value o f send : %i \n", msglen ) ; 2 char s ="F e j l e n er " ; 22 perror ( s ) ; / / Read a message / 26 msglen = kokkenhent (msg, 50) ; 27 p r i n t f ( " F i r s t message r e t r i e v e d : %s \n", msg) ; 28 p r i n t f ( "Return value : %i \n", msglen ) ; return 0 ; 31 12

14 6.5 Test 2 2 Test o f s y s t e m c a l l kokkenhent og kokkensend 3 send 2, g e t 2 4 / 5 #include <s t d i o. h> 6 #include <errno. h> 7 #include "asm/ arch / unistd. h" 8 9 _ s y s c a l l 2 ( int, kokkensend, char, b u f f e r, int, l e n g t h ) ; 10 _ s y s c a l l 2 ( int, kokkenhent, char, b u f f e r, int, l e n g t h ) ; int main ( int argc, char argv ) { char in = " Test message : Hello World" ; 15 char in2 = " Another t e s t sample " ; 16 char msg [ 5 0 ] ; 17 int msglen ; / Send a message c o n t a i n i n g in, in2 / 21 kokkensend ( in, s t r l e n ( in ) +1) ; 22 kokkensend ( in2, s t r l e n ( in2 ) +1) ; / Read a message / 25 msglen = kokkenhent (msg, 50) ; 26 p r i n t f ( " F i r s t message r e t r i e v e d : %s \n", msg) ; 27 p r i n t f ( "Return value : %i \n", msglen ) ; 28 msglen = kokkenhent (msg, 50) ; 29 p r i n t f ( " Second message r e t r i e v e d : %s \n", msg) ; 30 p r i n t f ( "Return value : %i \n", msglen ) ; return 0 ; Test 3 2 Test o f s y s t e m c a l l kokkenhent og kokkensend 3 send 3, g e t 3 4 / 5 #include <s t d i o. h> 6 #include <errno. h> 7 #include "asm/ arch / unistd. h" 8 9 _ s y s c a l l 2 ( int, kokkensend, char, b u f f e r, int, l e n g t h ) ; 10 _ s y s c a l l 2 ( int, kokkenhent, char, b u f f e r, int, l e n g t h ) ; int main ( int argc, char argv ) { 13

15 13 14 char in = " Test message : H e llo World" ; 15 char in2 = " Another t e s t sample " ; 16 char in3 = " This i s a l s o a t e s t sample " ; 17 char msg [ 5 0 ] ; 18 int msglen ; Send a message c o n t a i n i n g in, in2 and in3 / 22 kokkensend ( in, s t r l e n ( in ) +1) ; 23 kokkensend ( in2, s t r l e n ( in2 ) +1) ; 24 kokkensend ( in3, s t r l e n ( in3 ) +1) ; / Read a message / 27 msglen = kokkenhent (msg, 50) ; 28 p r i n t f ( " F i r s t message r e t r i e v e d : %s \n", msg) ; 29 p r i n t f ( "Return value : %i \n", msglen ) ; 30 msglen = kokkenhent (msg, 50) ; 31 p r i n t f ( " Second message r e t r i e v e d : %s \n", msg) ; 32 p r i n t f ( "Return value : %i \n", msglen ) ; 33 msglen = kokkenhent (msg, 50) ; 34 p r i n t f ( " Third message r e t r i e v e d : %s \n", msg) ; 35 p r i n t f ( "Return value : %i \n", msglen ) ; return 0 ; Test 4 2 Test o f s y s t e m c a l l kokkenhent og kokkensend 3 n e g a t i v e l e n g t h 4 / 5 #include <s t d i o. h> 6 #include <errno. h> 7 #include "asm/ arch / unistd. h" 8 9 _ s y s c a l l 2 ( int, kokkensend, char, b u f f e r, int, l e n g t h ) ; 10 _ s y s c a l l 2 ( int, kokkenhent, char, b u f f e r, int, l e n g t h ) ; int main ( int argc, char argv ) { char in = " Negative t e s t i n g : H e l lo World" ; 15 char msg [ 5 0 ] ; 16 int msglen ; / Send a message c o n t a i n i n g in, but n e g a t i v e l e n g t h / 20 msglen= kokkensend ( in, 1) ; 21 p r i n t f ( "Return value : %i \n", msglen ) ; 14

16 22 char s =" F e j l e n er " ; 23 p e r r o r ( s ) ; return 0 ; Test 5 2 Test o f s y s t e m c a l l kokkenhent og kokkensend 3 Send b u f f e r too small 4 / 5 #include <s t d i o. h> 6 #include <errno. h> 7 #include "asm/ arch / unistd. h" 8 9 _ s y s c a l l 2 ( int, kokkensend, char, b u f f e r, int, l e n g t h ) ; 10 _ s y s c a l l 2 ( int, kokkenhent, char, b u f f e r, int, l e n g t h ) ; int main ( int argc, char argv ) { char in = " Test message : Hello World. Length i s 39" ; / Send a message c o n t a i n i n g in / 17 int returnvalue = kokkensend ( in, s t r l e n ( in ) 1) ; 18 p r i n t f ( "Return value : %i \n", returnvalue ) ; 19 char s ="The e r r o r i s " ; 20 p e r r o r ( s ) ; return 0 ; Test 6 2 Test o f s y s t e m c a l l kokkenhent og kokkensend 3 r e c i e v e b u f f e r too small 4 / 5 #include <s t d i o. h> 6 #include <errno. h> 7 #include "asm/ arch / unistd. h" 8 9 _ s y s c a l l 2 ( int, kokkensend, char, b u f f e r, int, l e n g t h ) ; 10 _ s y s c a l l 2 ( int, kokkenhent, char, b u f f e r, int, l e n g t h ) ; int main ( int argc, char argv ) { 13 15

17 14 char in = " Message : H e l l o World\n" ; 15 char msg [ 5 0 ] ; / Send a message c o n t a i n i n g in / 18 int returnvalue = kokkensend ( in, s t r l e n ( in ) +1) ; 19 p r i n t f ( "Return value ( Send ) : %i \n", returnvalue ) ; 20 2 Read a message / 22 returnvalue = kokkenhent (msg, s t r l e n ( in ) 1) ; 23 p r i n t f ( "Return value ( Hent ) : %i \n", returnvalue ) ; 24 char s ="The e r r o r i s " ; 25 p e r r o r ( s ) ; return 0 ; Test 7 2 Test o f s y s t e m c a l l kokkenhent og kokkensend 3 g e t w ithout any messages in queue 4 / 5 #include <s t d i o. h> 6 #include <errno. h> 7 #include "asm/ arch / unistd. h" 8 9 _ s y s c a l l 2 ( int, kokkensend, char, b u f f e r, int, l e n g t h ) ; 10 _ s y s c a l l 2 ( int, kokkenhent, char, b u f f e r, int, l e n g t h ) ; int main ( int argc, char argv ) { char in = " Test message : H e llo World. Length i s 39" ; 15 char msg [ 5 0 ] ; 16 int msglen ; 17 int returnvalue ; / Read a message / 20 returnvalue = kokkenhent (msg, 50) ; 21 p r i n t f ( "Return value : %i \n", returnvalue ) ; 22 char s =" F e j l e n er " ; 23 p e r r o r ( s ) ; return 0 ; 26 16

Systemkald DM14. 1. Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111

Systemkald DM14. 1. Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111 DM14 1. Obligatoriske opgave Systemkald Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111 Side 1 af 5 Intro: Formålet med opgaven at et lave en system kald

Læs mere

Processer og tråde. dopsys 1

Processer og tråde. dopsys 1 Processer og tråde dopsys 1 Motivation.. parallelle processer udnytter hardwaren bedre: Batch operativsystemer (50 erne) hhv. små systemer: Multiprogrammering og time-sharing (fra 60 erne og frem): dopsys

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 2 14. september 2009 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Kommentarer Format - scanf og printf 2 / 27 Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler

Læs mere

Programmering i C. Lektion november 2008

Programmering i C. Lektion november 2008 Programmering i C Lektion 3 18. november 2008 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler Kontrolstrukturer Udvælgelse Gentagelse

Læs mere

Systemkald i Unix/Linux

Systemkald i Unix/Linux Systemkald i Unix/Linux 1 Operativsystemet Fra proces: OS som værktøjskasse: tilgængelig via systemkald... OS som resurseadministrator, abstrakt/virtuel maskine: CPU: processer, tråde, schedulering I/O:

Læs mere

Design Systemkald. User-mode Linux, The Linux kernel/325-2004

Design Systemkald. User-mode Linux, The Linux kernel/325-2004 Tracing tråden afbryder systemkaldet via ptrace Systemkaldet til værten ændres til getpid Processens stak manipuleres til at kalde kernen Kernen returnerer til processen Design Systemkald Design Startup/shutdown

Læs mere

ESP30076 임베디드시스템프로그래밍 (Embedded System Programming)

ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) Module 14: Kernel Timer ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) 조윤석 전산전자공학부 주차별목표 리눅스에서커널타이머사용법알아보기 HZ, jiffies_64, struct timer_list 커널타이머를활용한하드웨어제어용디바이스드라이버작성 2 Timer 관련변수 HZ 리눅스커널에서주기적으로발생하는시스템타이머

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

DM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode

DM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode - 3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode Jacob Aae Mikkelsen - 191076 12. december 2005 1 Indhold 1 Opgave beskrivelse 2 2 Muligheder for optimering 2 2.1 efter branch.........................

Læs mere

Karaktergivende opgave i Styresystemer og multiprogrammering (reeksamen) 13. august 2007

Karaktergivende opgave i Styresystemer og multiprogrammering (reeksamen) 13. august 2007 Karaktergivende opgave i Styresystemer og multiprogrammering (reeksamen) 13. august 2007 Den karaktergivende opgave i Styresystemer og multiprogrammering stilles mandag den 13. august 2007 klokken 9:00

Læs mere

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen Sekvensafstand DM34 - Eksamensopgave Jacob Aae Mikkelsen 19 10 76 kokken@grydeske.dk 27. maj 2005 Resumé Rapporten her beskriver tre forskellige rekursive metoder til at sammenligne tekst strenge med.

Læs mere

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen. I3PRG3 + I3DTM3 + I3ISY1-3. semester

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen. I3PRG3 + I3DTM3 + I3ISY1-3. semester INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen Side 1 af 7 Eksamenstermin: DECEMBER 2003 / JANUAR 2004 Varighed: 4 timer - fra kl. 9.00 til kl. 13.00 Ingeniørhøjskolen udleverer: 3 omslag samt papir

Læs mere

DM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11

DM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11 DM01 DM01 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 18/3-2003 Side 1 af 11 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DILEMMA:...4 2.1.1 METODER:...4

Læs mere

Programmering i C. Lektion 4. 5. december 2008

Programmering i C. Lektion 4. 5. december 2008 Programmering i C Lektion 4 5. december 2008 Funktioner Eksempel Fra sidst 1 Funktioner 2 Eksempel Funktioner Eksempel Eksempel: 1 / f u n k t i o n s p r o t o t y p e r / i n t i n d l a e s ( void )

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

Introduktion til C programmering

Introduktion til C programmering Introduktion til C programmering Rasmus Erik Voel Jensen Uge 17 voel@math.ku.dk Dagens forelæsning Formalia Indledende programmering, main, include, printf, variable, scanf, if-else, statements, eksempler

Læs mere

Processer og koordinering

Processer og koordinering Processer og koordinering.. fortsat dopsys 1 Betingelsesvariabler (Condition variables).. hukommelsesløs variant af semaphorer: Atomare operationer: Signal bruges til at sende et signal. Wait bruges til

Læs mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Programmering i C Videre med C (2 af 4) 19. marts 2007

Programmering i C Videre med C (2 af 4) 19. marts 2007 Programmering i C Videre med C (2 af 4) 19. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan i dag Brush-up fra sidst Videre med C Kontrolløkker (while, for, ) Conditional Execution (if, if/else) Funktioner

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Styresystemer og tjenester

Styresystemer og tjenester Styresystemer og tjenester Indhold: 1. Introduktion til styresystemer 2. Processer og tråde 3. Synkroniseringsmetoder og IPC 4. Memory management 5. IO og devicedrivere 6. Analyse og design af embedded

Læs mere

Rx: Treating bugs as allergies a safe method to survive software failures. DIKU, Datalogisk Institut, Københavns Universitet 04/01/2006

Rx: Treating bugs as allergies a safe method to survive software failures. DIKU, Datalogisk Institut, Københavns Universitet 04/01/2006 Rx: Treating bugs as allergies a safe method to survive software failures DIKU, Datalogisk Institut, Københavns Universitet 04/01/2006 Præsentation af Jacob Munk-Stander & Lauge Wulff Rx Grund-ide: Hvis

Læs mere

Principper for Samtidighed og Styresystemer

Principper for Samtidighed og Styresystemer Principper for Samtidighed og Styresystemer Kursusgang 12: Device drivere mt@cs.aau.dk Ph.D.-studerende Distribuerede og Indlejrede Systemer Institut for Datalogi Aalborg Universitet 17. maj 2010 Intro

Læs mere

Web Admin 5.5. Brugsvejledning for User admin. Copyright 2003 Gullestrup.net

Web Admin 5.5. Brugsvejledning for User admin. Copyright 2003 Gullestrup.net Web Admin 5.5 Copyright 2003 Gullestrup.net Log ind på systemet Start med at gå ind på http://mailadmin.gullestrup.net i din browser. Indtast din Email Adresse samt Password, som hører til din konto, tryk

Læs mere

Operativsystemer - dopsys

Operativsystemer - dopsys Operativsystemer - dopsys Erik Ernst eernst@cs.au.dk dopsys 1 Q/A Mange deltagere er nu på 2. år af datalogistudiet, med dcomnet 1 for år siden Er din baggrund anderledes? dopsys 2 Praktiske oplysninger

Læs mere

Synkronisering af sekventielle processer

Synkronisering af sekventielle processer Synkronisering af sekventielle processer Klaus Hansen, Niels Elgaard Larsen, Maz Spork, Jørgen Sværke Hansen 15. februar 2005 1 Introduktion Ved en multiprogram forstår vi et program, hvori vi kan specificere,

Læs mere

Internt interrupt - Arduino

Internt interrupt - Arduino Programmering for begyndere Brug af Arduino Internt interrupt - Arduino - Afslutning EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Intern interrupt Jeg vil rydde lidt op. Her er nogle punkter vil har glemt

Læs mere

Kernealphaerne Indhold af G1

Kernealphaerne Indhold af G1 Kernealphaerne Indhold af G1 3 små opgaver: 1. Oversæt en kerne og afvikl den på en kernealpha 2. Håndoversæt en C/C++ funktion til alpha assembler 3. Implementer procedurer til dynamisk lagerallokering

Læs mere

Web Admin 5.5. Brugsvejledning for Domain admin. Copyright 2003 Gullestrup.net

Web Admin 5.5. Brugsvejledning for Domain admin. Copyright 2003 Gullestrup.net Web Admin 5.5 Copyright 2003 Gullestrup.net Log ind på systemet Start med at gå ind på http://mailadmin.gullestrup.net i din browser. Indtast din Email Adresse samt Password, som du tidligere har modtaget

Læs mere

PUT og INPUT funktionerne

PUT og INPUT funktionerne PUT og INPUT funktionerne Af: Peter Kellberg Danmarks Statistik Sejrøgade 11 DK-2100 København Ø pke@dst.dk PUT og INPUT-funktionerne Denne artikel er foranlediget af en henvendelse til vores interne SAS

Læs mere

Kursusarbejde 2 Grundlæggende Programmering

Kursusarbejde 2 Grundlæggende Programmering Kursusarbejde 2 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 31. oktober 2003 Indhold 1. Kode 2 1.1. hotel.h.................................................... 2 1.2. hotel.cc...................................................

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 20. april, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 5 28. september 2009 Indhold Programmer Variable Datatyper Kontrol strukturer Udtryk Assignments Operatorer I/O Eksempel Processen A 2 / 81 1 Introduktion og Kontrolstrukturer

Læs mere

Styresystemer og tjenester

Styresystemer og tjenester Styresystemer og tjenester Indhold: 1. Introduktion til styresystemer. 2. Processer og tråde. 3. Synkroniseringsmetoder og InterProcesCommunikation. 4. Memory management. 5. I/O og devicedrivere. 6. Filsystemer.

Læs mere

//--------------------------------- Definition af porte og funktioner -------------------------

//--------------------------------- Definition af porte og funktioner ------------------------- Temeraturmåler (C-program).txt // Initialiserings-sekvens #include #pragma model=medium #pragma code=0x0000 #pragma xdata=0x4000 #pragma asm=on #pragma parameters=register //#define display P4

Læs mere

Test af It-komponent

Test af It-komponent Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4 DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens

Læs mere

Jacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense

Jacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense 7 DM -. Obligatoriske Opgave Løsning af ligningssystem vha. fipunktmetoden Jacob Christiansen, 8 moffe@imada.sdu.dk Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense. Opgaven Der skal implementeres

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2017 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 6. april, 2017 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Operativsystemer of C Efterår 2013 Virtuel hukommelse (kap. 9)

Operativsystemer of C Efterår 2013 Virtuel hukommelse (kap. 9) Operativsystemer of C Efterår Virtuel hukommelse (kap. 9) 8// Planen for idag q Virtuel hukommelse. q Demand paging / page faults. q Sideudskiftningsalgoritmer. q Rammeallokering til processer. Ø Øvelser:

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 1 8. september 2009 Målgruppe Motivation Indhold Form Materiale 2 / 47 Kursusintroduktion 1 Målgruppe 2 Motivation 3 Indhold 4 Form 5 Materiale Målgruppe Motivation Indhold Form

Læs mere

Processer og koordinering. dopsys 1

Processer og koordinering. dopsys 1 Processer og koordinering dopsys 1 Motivation.. parallelle processer udnytter hardwaren bedre: Batch operativsystemer (50 erne): Multiprogrammering og time-sharing (60 erne): dopsys 2 Motivation.. parallelle

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Opfølgning på Skildpadde

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 10. april, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Planen for idag. Indhold af G1. Kernealphaerne. Alpha erne. Datalogi 1F Forår 2003

Planen for idag. Indhold af G1. Kernealphaerne. Alpha erne. Datalogi 1F Forår 2003 Planen for idag Datalogi 1F Forår 2003 G1 Et gensyn med KFirst G1 Jørgen Sværke Hansen cyller@diku.dk 2 Sidst så vi hvordan man starter den første proces KCurProc = KWaitQ.Get(); KFirst(KCurProc->sp);

Læs mere

Kursusarbejde 3 Grundlæggende Programmering

Kursusarbejde 3 Grundlæggende Programmering Kursusarbejde 3 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 21. november 2003 Indhold 1. Kode 2 1.1. forestillinger.h............................................. 2 1.2. forestillinger.cc.............................................

Læs mere

Koordinering. dopsys

Koordinering. dopsys Koordinering At indføre flertrådethed (1) når tråde tages i brug opstår typisk konflikter (et velkendt eksempel er errno ) 2 At indføre flertrådethed (2) en del konflikter kan afhjælpes med thread-local

Læs mere

A Comparative Analysis of Three Different Priority Deques af: Søren Skov & Jesper Holm Olsen

A Comparative Analysis of Three Different Priority Deques af: Søren Skov & Jesper Holm Olsen A Comparative Analysis of Three Different Priority Deques af: Søren Skov & Jesper Holm Olsen Agenda: Hvad er en Priority Deque? Hvad kan det bruges til? De tre datastrukturer: MinMax-heap The Deap (påpeget

Læs mere

Operation Manual SMS Air Conditioner Remote Controller Model No.: SR-001

Operation Manual SMS Air Conditioner Remote Controller Model No.: SR-001 Operation Manual SMS Air Conditioner Remote Controller Model No.: SR-001 Ls venligst denne instruktions manual igennem inden brug af produktet Thank you for purchasing our product. This smart unit is not

Læs mere

Input/Output: Brugergrænseflader. dopsys

Input/Output: Brugergrænseflader. dopsys Input/Output: Brugergrænseflader dopsys Interaktion med bruger Visse devices lægger et fundamentalt sæt af spilleregler for vores brug af computere Generisk tilbagemelding, hvad laver den : Billedskærm

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 4 18. september 2009 Pointers Referenceparametre 2 / 19 Pointers 1 Pointers 2 Referenceparametre Pointers Referenceparametre 3 / 19 Husk: En variabel er en navngiven plads i computerens

Læs mere

% &$ # '$ ## () %! #! & # &, # / # 0&. ) 123 45 / & #& #

% &$ # '$ ## () %! #! & # &, # / # 0&. ) 123 45 / & #& # !"$!!"$ % &$ '$ () %! %"!" & * function &+! & &, --.& / 0&. ) 123 45 / & & & 6 Sub CalcVecProduct() * &3.5 & 2 &6 / 7$ & & & "%&$&"! 2 " $ " 8 $ & $/ $ $" 9&6 Sub test() streng_y = "det her går " streng_y

Læs mere

Implementation af Koordinering. dopsys 1

Implementation af Koordinering. dopsys 1 Implementation af Koordinering dopsys 1 Oversigt: Impl. af koordinering Begreber: Kritiske regioner Gensidig udelukkelse Synkroniseringsprimitiver: Binære semaforer / mutexes Tællesemaforer Betingelsesvariabler

Læs mere

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste Denne guide er oprindeligt udgivet på Eksperten.dk Indkøbsvogn i PHP I denne artikel vil jeg prøve at lave en indkøbskurv som let kan udvides, og som ikke er svær at forstå. Det er bedst med viden om OOP(klasser),

Læs mere

Styresystemer og tjenester

Styresystemer og tjenester Styresystemer og tjenester Indhold: 1. Introduktion til styresystemer. 2. Processer og tråde. 3. Synkroniseringsmetoder og InterProcesCommunikation. 4. Memory management. 5. I/O og devicedrivere. 6. Filsystemer.

Læs mere

At klippe en streng over på det mest hensigtsmæssige sted

At klippe en streng over på det mest hensigtsmæssige sted Denne guide er oprindeligt udgivet på Eksperten.dk At klippe en streng over på det mest hensigtsmæssige sted Formålet med denne artikel er at kaste lidt lys over, hvordan man klipper en streng over på

Læs mere

Moderne numerische Methoden der Festkörperphysik Lanczos-ED für die AF Heisenberg-Kette

Moderne numerische Methoden der Festkörperphysik Lanczos-ED für die AF Heisenberg-Kette Moderne numerische Methoden der Festkörperphysik Lanczos-ED für die AF Heisenberg-Kette Programmcode gen matrix Lanczos Bedienung des Programms Konvergenz des Lanczos-Verfahrens Grundzustandsenergien der

Læs mere

Boost Concept Check Library

Boost Concept Check Library Boost Concept Check Library Kasper Egdø and Konstantin Barkaia Department of Computer Science University of Copenhagen Boost Concept Check Library p.1/19 Eksempel #include #include int

Læs mere

Analyse og design af Indlejrede Systemer. v/ Jens Dalsgaard Nielsen Henrik Schiøler Mads Dore alle Afdeling for Proceskontrol

Analyse og design af Indlejrede Systemer. v/ Jens Dalsgaard Nielsen Henrik Schiøler Mads Dore alle Afdeling for Proceskontrol Analyse og design af Indlejrede Systemer v/ Jens Dalsgaard Nielsen Henrik Schiøler Mads Dore alle Afdeling for Proceskontrol 1 kursusindhold... Del 1: 5 mm Parallelitet, multiprogrammering, OS services

Læs mere

Installation af en virtuel maskine

Installation af en virtuel maskine Installation af en virtuel maskine Hvad er en virtuel maskine? Du skal se en virtuel maskine som en ekstra computer, som kører inde i maven på din computer. Det vil sige du kan have en windows computer

Læs mere

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2015 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 3. marts, 2015 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank

F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank 03-10-2018 Rune Ibsen Softwareudvikling Seniorkonsulent Mentoring 10 konsulenter F# Programmeringssprog som oversættes til.net Functional-first,

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API. Denne guide er oprindeligt udgivet på Eksperten.dk Brug af MySQL i C++ Denne artikel bygger ovenpå artiklen "MySQL C API" og forklarer hvordan man kan programmere mere objekt orienteret. Den forudsætter

Læs mere

Processer. DS kursusgang nr. 2: Procestræer. ps: Vis processer

Processer. DS kursusgang nr. 2: Procestræer. ps: Vis processer DS kursusgang nr. 2: Processer 1. Definition af processer/tråde? eksemplificeret med fork() og exec() (procesdannelse i C under unix) 2. C vs. Java (overordnet + funktioner) 3. Processer vs. tråde: Server:

Læs mere

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen Lærevejledning - en introduktion til maskinarkitektur faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen Roskilde Universitetscenter Naturvidenskabelig Basisuddannelse

Læs mere

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

Programmering i C. Kursusintroduktion. Lektion september Målgruppe 2 Indhold 3 Form 4 Materiale. Målgruppe Indhold Form Materiale

Programmering i C. Kursusintroduktion. Lektion september Målgruppe 2 Indhold 3 Form 4 Materiale. Målgruppe Indhold Form Materiale Programmering i C Lektion 1 16. september 2008 Målgruppe Indhold Form Materiale Kursusintroduktion 1 Målgruppe 2 Indhold 3 Form 4 Materiale 2 / 21 Målgruppe Indhold Form Materiale Folk der har styr på

Læs mere

Webservice til indberetning af kompetencedækning i folkeskolen Skoleåret

Webservice til indberetning af kompetencedækning i folkeskolen Skoleåret Webservice til indberetning af kompetencedækning i folkeskolen Skoleåret 2018-2019 Af Henrik Rosendahl-Kaa Opdateret: 30-11-2018 Dette notat beskriver kort webservicen hørende til Indberetning af kompetencedækning.

Læs mere

Specialeforsvar: Fundamentet for et fleksibelt container bibliotek

Specialeforsvar: Fundamentet for et fleksibelt container bibliotek Specialeforsvar: Fundamentet for et fleksibelt container bibliotek Foundations of an adaptable container library Bo Simonsen Datalogisk Institut, Københavns Universitet Denne præsentation, afhandlingen,

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2010 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 24. april, 2010 (let justeret 10. maj og 21. maj 2010) Dette projekt udleveres i tre

Læs mere

Introduktion til datastrukturer

Introduktion til datastrukturer Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Philip Bille Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller

Læs mere

Netprøver.dk. Brugervejledning for elever

Netprøver.dk. Brugervejledning for elever Netprøver.dk Brugervejledning for elever 20. februar 2019 Indhold 1 Dine forberedelser i Netprøver.dk før prøvedagen... 3 1.1 Sådan tjekker du dit it udstyr... 3 1.2 Sådan logger du på Netprøver.dk...

Læs mere

ArbejsskadeAnmeldelse

ArbejsskadeAnmeldelse ArbejsskadeAnmeldelse OpretAnmeldelse 001 All Klassifikations: KlassifikationKode is an unknown value in the current Klassifikation 002 All Klassifikations: KlassifikationKode does not correspond to KlassifikationTekst

Læs mere

System Arkitektur og Integration

System Arkitektur og Integration Mikael Svenstrup System Arkitektur og Integration 1/24 System Arkitektur og Integration MM11: Seriel kommunikation 2 (SW) Indhold Mikael Svenstrup System Arkitektur og Integration 2/24 Tidligere har i

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

Kursusarbejde 4 Grundlæggende Programmering

Kursusarbejde 4 Grundlæggende Programmering Kursusarbejde 4 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 19. december 2003 Indhold 1. Kode 2 1.1. Header-filer................................................. 2 1.1.1. Queue.h...............................................

Læs mere

Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner

Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner Virtuel PC Fordele/ulemper Fordele: Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner Ulemper: Reserverer RAM (Windows 7) Problemer med at ureglementeret lukke ned Mister

Læs mere

Datamaters arkitektur og programmering

Datamaters arkitektur og programmering Mikael Svenstrup Datamaters arkitektur og programmering 1/24 Datamaters arkitektur og programmering MM11: Seriel kommunikation 2 (SW) Indhold Mikael Svenstrup Datamaters arkitektur og programmering 2/24

Læs mere

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder. Denne guide er oprindeligt udgivet på Eksperten.dk Collections i.net Når du kigger i namespacet System.Collections finder du over 10 forskellige klasser. At vælge den rigtige til netop din applikations

Læs mere

Programmeringscamp. Implementer funktionerne én for én og test hele tiden.

Programmeringscamp. Implementer funktionerne én for én og test hele tiden. Programmeringscamp De to opgaver træner begge i at lave moduler som tilbyder services der kan bruges af andre, samt i at implementere services efter en abstrakt forskrift. Opgave 1 beder jer om at implementere

Læs mere

OPC ACCESS HEARTBEAT 1

OPC ACCESS HEARTBEAT 1 OPC Access Heartbeat Dette dokument gennemgår i et kort eksempel, hvordan OPC Access konfigureres til at anvende Heartbeat funktionen til at dokumentere kontinuerlig forbindelse mellem SQL Server og OPC

Læs mere

Exceptions i Delphi. Try except

Exceptions i Delphi. Try except Exceptions i Delphi Exceptions er en teknik til at fange fejl under programafviklingen. Ikke programmeringsfejl, men fejl der opstår i forskellige situationer, f.eks. en fil der mangler en fil der er skrivebeskyttet,

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

Læs mere

Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation

Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation Plan 12.3. Oversigt over grundlæggende begreber Java: eksempel på applikation, programmering og oversættelse Uddybning af grundlæggende begreber Java RMI implementation Forklaring af øvelsen Hvad er et

Læs mere

Installation af et tilføjelsesprogram

Installation af et tilføjelsesprogram For fx-9860-serien De Installation af et tilføjelsesprogram Brugsvejledning http://edu.casio.com Indholdsfortegnelse Installation af et tilføjelsesprogram med brug af FA-124 PROGRAM-LINK... De-2 Installation

Læs mere

Planen for idag. Synkroniseringsmekanismer. Krav til løsning. Kritiske regioner. Bagerens algoritme. Kritisk region via delt lager.

Planen for idag. Synkroniseringsmekanismer. Krav til løsning. Kritiske regioner. Bagerens algoritme. Kritisk region via delt lager. Planen for idag Synkroniseringsmekanismer Kritiske regioner Semaforer: Binære semaforer Tællesemaforer Beskedsemaforer Prioritetsinvertering Låse (spinlocks) sikrer udelelig adgang Barrierer synkroniseringspunkt

Læs mere

Programmering i C. Lektion oktober 2008

Programmering i C. Lektion oktober 2008 Programmering i C Lektion 2 20 oktober 2008 Historie Processen At kompilere 2 / 23 Fra sidst 1 Historie 2 Processen 3 At kompilere Historie Processen At kompilere 3 / 23 ALGOL 60 1963 CPL 1966 BCPL 1969

Læs mere

Introduktion til datastrukturer. Philip Bille

Introduktion til datastrukturer. Philip Bille Introduktion til datastrukturer Philip Bille Plan Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Datastrukturer Datastrukturer Datastruktur: Metode til at organise data så det kan søges

Læs mere

Efter installation af GEM Drive Studio software fra Delta s CD-rom, skal hoved skærmbilledet se således ud: (koden til administrator adgang er: admin)

Efter installation af GEM Drive Studio software fra Delta s CD-rom, skal hoved skærmbilledet se således ud: (koden til administrator adgang er: admin) Hurtig opstart af Infranor XtrapulsPac-ak drev: Dette er en enkelt og kortfattet vejledning i opsætningen af XtrapulsPac-ak driver til anvendelse i stand-alone mode. Ingen Profibus forbindelse. For senere

Læs mere

Generisk programmering - opgave 2 - Doxygen

Generisk programmering - opgave 2 - Doxygen Generisk programmering - opgave 2 - Doxygen Morten Wendelboe Datalogisk Institut, Københavns Universitet Universitetsparken 1, 2100 København Ø morty@diku.dk Resumé. Denne opgave ser på mulighederne for

Læs mere

Interconnect. Front end interface

Interconnect. Front end interface Direct Remote Access to Devices (DREAD) Introduktion These Metode Baggrund Prototypen Resultater Konklusioner Kritik og fremtidigt arbejde 5. december 2000 Direct Remote Access to Devices slide 1 Klynger

Læs mere

Planen for idag. Opdatering af delt lager

Planen for idag. Opdatering af delt lager Planen for idag Synkronisering: Tidsafhængighed i multiprogrammer Semaforer: Binære semaforer Tælle semaforer Grænseflader: Hvordan implementeres systemkald Tidsafhængighed i multiprogrammer proces læser

Læs mere

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl:

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl: Fejlhåndtering Selv de bedste programmører laver af og til fejl! Dette kommer sikkert som en overraskelse for de fleste, bortset fra de, der har arbejdet med et hvilket som helst større program. Fejl kan

Læs mere