read Systemanrop i UNIX Exempel med read & write write int antal_tkn, fd, count; char buffer[size]; antal_tkn = read(fd, buffer, count);

Storlek: px
Starta visningen från sidan:

Download "read Systemanrop i UNIX Exempel med read & write write int antal_tkn, fd, count; char buffer[size]; antal_tkn = read(fd, buffer, count);"

Transkript

1 i UNIX read!filhantering!read!write!open!close!creat!lseek!dup!fcntl!pipe!processhantering!exec!exit!fork!getpid!kill!signal!wait! Funktionen read läser från en fildeskriptor och returnerar antalet lästa tecken. int antal_tkn, fd, count; char buffer[size]; antal_tkn = read(fd, buffer, count);! antal_tkn: Antal tecken som lästs! fd: Fildeskriptor! count: Antal tecken som skall läsas åt gången! buffer: Teckenbuffer 1 2 write Exempel med read & write! Funktionen write skriver till en fildeskriptor och returnerar antalet skrivna tecken. int antal_tkn, fd, count; char buffer[size]; antal_tkn = write(fd, buffer, count);! antal_tkn: Antal tecken som skrivits! fd: Fildeskriptor! count: Antal tecken som skall skrivas åt gången! buffer: Teckenbuffer #include <unistd.h> #define COUNT 1024 #define STDIN 0 #define STDOUT 1 int main(void) { int antal_tkn; char buffer[count]; while((antal_tkn = read(stdin, buffer, COUNT)) > 0) write(stdout, buffer, antal_tkn); return 0; 3 4!1

2 open! Funktionen open öppnar och möjligtvis även skapar en fil och returnerar den nya fildescriporn. int fd, flaggor, mode; char *sökväg; fd = open(sökväg, flaggor, mode);! Mode anger accessrättigheter, exempelvis 0644! Flaggor anger hur filen skall öppnas, exempelvis:! O_CREAT Om filen inte finns, skapas den! O_TRUNC Om filen finns trunkeras den! O_RDONLY Öppna endast för läsning! O_RDWR Öppna för läsning och skrivning creat! Funktionen creat är ekvivalent att använda open med flaggorna satta till! O_CREAT O_WRONLY O_TRUNC int fd = creat(char *namn, int PERMS);! PERMS anger accessrättigheter som kan anges:! Oktalt exempelvis 0644! Bitvist separerade med OR, exempelvis! S_IWUSR Ägaren har write-rättighet! S_IRGRP Gruppen har read-rättighet! S_IROTH Alla andra har read-rättighet 5 6 Prestandatest med buffersize #define COUNT 1 /* eller 1024 */ int num, in_fd, ut_fd; in_fd = open("in_data.txt", O_RDONLY); ut_fd = open("ut_data.txt",o_wronly); while((num = read(in_fd, buffer, COUNT)) > 0) write(ut_fd, buffer, num); close(in_fd); close(ut_fd); 7 Resultat av prestandatest! Efter kopiering av 5Mb uppmättes följande resultat: bytes 1 byte! Vi kan alltså konstatera stora skillnader! I ett stort system blir detta exponentiellt värre!! Slutsats: Kodeffektivisering är mycket viktigt! Tid CPU Utnyttjande 8!2

3 unlink! Funktionen unlink tar bort en fil genom att räkna ner antalet referenser (link count) till filen. När antalet referenser är 0 är filen borttagen.! Om två personer har samma fil öppen tas den med andra ord inte bort förrän båda personerna gjort unlink på filen. char *filnamn; unlink(filnamn); lseek! Funktionen lseek används för att förflytta filpekaren i en fil. int fd, startpos; long offset, nypos; nypos = lseek(fd, offset, startpos);! Offset: anger förflyttningen i bytes relativt origin! startpos: anger utgångspositionen! 0 = filens början! 1 = aktuell position! 2 = filens slut 9 10 fork! et fork används för att starta upp en ny process.! Den nya processen kallas barnprocess och ursprungsprocessen för föräldraprocess.! Barnprocessen är en kopia av föräldraprocessen! Dessa två kommer att exekvera samtidigt och deras exekvering brukar styras av if-satser fork() Föräldraprocess Barnprocess Exempel 1 med fork #include <stdio.h> #include <unistd.h> int pid; pid = fork(); printf("pid: %d\n", pid); if(pid == 0) printf( Jag är ett barn.\n ); if(pid > 0) printf( Jag är en förälder.\n ); if(pid < 0) printf( Anropet misslyckat.\n ); return 0; 11 12!3

4 Exempel 2 med fork #include <stdio.h> #include <unistd.h> int pid; pid = fork(); pid = fork(); Exempel 3 med fork #include <stdio.h> #include <unistd.h> int pid, i=0; if((pid = fork()) == 0) i=1; printf("pid: %d\n", pid); return 0; printf("pid: %d, i=%d\n", pid, i); return 0; Exempel 4 med fork #include <stdio.h> #include <unistd.h> Exempel 5 med fork int fd, stat; char buffer[10]; while(1) fork(); return 0; Gör (helst) inte detta experiment eftersom datorn blir sänkt redan efter ett par sekunder! fd = open("datafile", O_RDONLY); read(fd, buff, 10); printf("före fork(): %d\n", lseek(fd, 0L, SEEK_CUR)); switch(fork()) { case 0: printf("barn före read: %d\n", lseek(fd, 0L, SEEK_CUR)); read(fd, buff, 10); printf("barn efter read: %d\n", lseek(fd, 0L, SEEK_CUR)); default: break; wait(&stat); printf("förälder efter wait: %d\n", lseek(fd, 0L, SEEK_CUR)); 15 16!4

5 getpid! Funktionen getpid returnerar det process-id som den aktuella processen har. Exempel med getpid int pid; int pid; pid = getpid();! Getpid kan bland annat användas för att generera temporära filnamn. pid = fork(); if(pid == 0) printf( Barnets PID=%d\n", getpid()); else if(pid > 0) printf( Förälderns PID=%d\n", getpid()); else perror( Kunde inte skapa en ny process"); execl Exempel 1 med execl! et execl ersätter exekveringen av nuvarande process med en ny process.! execl används för att starta upp ett program. #include <stdio.h> #include <unistd.h> execl( path/to/program, argument, NULL)! Olika varianter på execl är:! execlp execl ("/bin/date", "date", --help", NULL); perror ( Kunde ej skapa process");! execle! execv! execvp! execve 19 20!5

6 Exempel 2 med execl int pid, status; if((pid = fork()) == 0) { execl("/usr/bin/cal", "cal", "10", "2000", NULL); perror("kunde inte skapa process\n"); else if(pid > 0) { wait(&status); printf("föräldern har avslutat\n"); wait! Funktionen wait används för att få en föräldraprocess att vänta på att dess barn skall avsluta sin exekvering. int pid, status; pid = wait(&status);! pid: Process-id på barnet som avslutade! status: Barnprocessens exit-status, som exempelvis kan vara terminate, abort, core-dump osv waitpid Exempel med waitpid! Till skillnad från wait används waitpid till att invänta en specifik barnprocess. int pid, status, options waitpid(pid1, &status, options);! pid: Process-ID som skall väntas in! status: Barnprocessens exit-status! options: Tillval definierade i filen sys/wait.h Normalt används WNOHANG int pid, status; switch(pid = fork()) { case 0: puts("barnet sover"); sleep(5); puts("barnet terminerar"); default: break; while(waitpid(pid, &status, WNOHANG) == 0) { puts("föräldern väntar..."); sleep(1); puts("föräldern terminerar"); 23 24!6

7 Processgrupper! Varje process har inte bara ett process-id, utan även ett process-grupps-id, pgid.! Detta ID-nummer berättar vilken processgrupp som processen tillhör.! Processer kan via kommandoraden grupperas med hjälp av pipes ( )! Det är ibland bra att använda sig av processernas grupp-id eftersom man kan behandla hela processgruppen som en enhet, om man exempelvis vill skicka en signal till den.! I normalfallet går en signal bara till en process. Exempel med processgrupper prog1 prog2 & prog3 prog4 prog5 Login-skal prog1 prog2 prog3 prog4 Processgrupp Processgrupp prog5 Processgrupp Session getpgrp! Funktionen getpgrp returnerar det processgrupps- ID en process tillhör. int pgid = getpgrp(); eller int pgid = getpgid(0);! pgid: Den processgrupp processen tillhör setpgid! Funktionen setpgid ändrar processgrupps-id för en process. setpgid(int pid, int pgid);! pid: Processen man vill byta grupp på! pgid: Den nya processgruppen! Om pid=0 Används den anropade processens pid! Om pgid=0 Blir pgid samma som pid! Om pid=pgid Blir processen group leader 27 28!7

8 Exempel: Processers returvärden nice int pid, status, exit_status; switch(fork()) { case 0: exit(99); default: break; pid = wait(&status); if(wifexited(status)) { exit_status = WEXITSTATUS(status); printf("exit-status från %d var %d\n", pid, exit_status); printf("processgrupp: %d\n", getpgrp());! Funktionen nice ändrar prioriteten på en process nice(int priority);! Priority är den prioritetsändring som processen skall få.! Detta är ett värde mellan 0 och 99.! Högre tal=lägre prioritet! Endast root kan sätta negativ prioritet, dvs öka processens prioritet chdir! Med systemanropet chdir kan man förflytta sig i filsystemet. char *dir = "/usr/bin/"; chdir(dir); fd = open( testfil, O_RDWR O_CREAT); write(fd, "Hej", 3); close(fd);! dir Anger sökvägen till den katalog dit man vill förflytta sig. Miljövariabler! Miljövariabler används av systemet för att samla in data om sig själv.! En annan tillämpning är installationsprogram som kan behöva information om systemet, eller om man i ett program behöver viss information.! För att få fram miljövariablerna: int main(int argc, char *argv[], char *envp[]){ while(**envp) printf("envp: %s\n", *envp++); 31 32!8

9 Exempel: Miljövariabler! Några av alla miljövariabler som finns är: envp: PWD=/crille/C_Unix/environment envp: HOSTNAME=spock.cs.kau.se envp: MACHTYPE=i386-redhat-linux-gnu envp: LANG=sv_SE envp: SHELL=/bin/bash envp: USERNAME=crille envp: HOME=/home/crille envp: PATH=/usr/local/sbin:/usr/sbin:/usr/bin: getenv och setenv! Funktionerna getenv och setenv hämtar in respektive lägger till miljövariabler. char *värde = getenv(char *namn); setenv( VARIABELNAMN, värde, overwrite);! Exempel: setenv("frukost", "flingor", 1); printf("path = %s\n", getenv("path")); printf("frukost = %s\n", getenv("frukost")); pipe pipe i en process! Funktionen pipe skapar ett rör där data kan transporteras.! Detta rör har, som så många andra rör, två ändar.! I den ena änden skrivs data och i den andra läses det.! En pipe fungerar enligt FIFO. int pipe_fd[2]; pipe(pfd); pfd[0]: Pfd[1]: Fildescriptor för läsning Fildescriptor för skrivning write pipe read 35 36!9

10 Ex1: pipe i en process #define SIZE 17 char buffer[size]; int pfd[2], i; pipe(pfd); Ex2: pipe i en process #define MSG "Meddelande\n" int pfd[2], n; char buffer[100]; write(pfd[1], "Meddelande nr: 1\0", SIZE); write(pfd[1], "Meddelande nr: 2\0", SIZE); write(pfd[1], "Meddelande nr: 3\0", SIZE); for(i=0 ; i<3 ; i++) { read(pfd[0], buffer, SIZE); puts(buffer); pipe(pfd); printf( Läs fd:%d, skriv fd:%d\n", pfd[0], pfd[1]); write(pfd[1], MSG, sizeof(msg)); n = read(pfd[0], buffer, sizeof(msg)); write(1, buffer, n); pipe mellan två processer Ex1: pipe mellan två processer förälder barn int pfd[2]; char buffer[size]; write pipe read pipe(pfd); switch(fork()) { case 0: write(pfd[1], "Meddelande nr:1\0", 17); read(pfd[0], buffer, 17); printf("barn-buffer: %s\n", buffer); default: break; write(pfd[1], "Meddelande nr:2\0", 17); read(pfd[0], buffer, 17); printf("föräldra-buffer: %s\n", buffer); 39 40!10

11 Ex2: pipe mellan två processer int pfd[2]; char buffer[size]; pipe(pfd); switch(fork()) { case 0: close(pfd[0]); write(pfd[1], "Meddelande nr:1\0", 17); default: break; close(pfd[1]); read(pfd[0], buffer, 17); printf("föräldra-buffer: %s\n", buffer); Ex med oblockerad pipe void barn(int p[2]) { close(p[0]); for(i=0 ; i<3 ; i++) { write(p[1], Hejsan\0", 7); sleep(3); write(p[1], Hejdå\0", 6); pipe(pfd); fcntl(pfd[0], F_SETFL, O_NONBLOCK); switch(fork()) { case 0: barn(pfd); default: foralder(pfd); Ex med oblockerad pipe forts select void foralder(int p[2]) { int nread; char buffer[size]; close(p[1]); while(1) { switch(nread = read(p[0], buffer, 6)) { case -1: if(errno == EAGAIN) { printf("pipe'n är tom\n"); sleep(1); break; else exit(-1); case 0: printf("quit\n"); default: printf("msg=%s\n", buffer); 43! et select används för att söka efter förändringar på olika fildeskriptorer, ofta tillsammans med oblockerade pipes. int num_fds; fd_set *read_fds, write_fds, error_fds; struct timeval *timeout; select(num_fds, read_fds, write_fds, error_fds, timeout); 44!11

12 select fortsättning Exempel med select num_fds read_fds write_fds error_fds timeout Antalet fildeskriptorer vi vill lyssna på Kontrollerar om någon pipe vill läsa Kontrollerar om någon pipe vill skriva Kontrollerar om någon pipe har ett fel att rapportera Den tid (sek, eller millisek) select skall vänta innan den skall returnera. Om denna sätts till NULL väntar select tills något kommer. int fd1, fd2, n_fds; fd_set read_fds; fd1 = open( file1, O_RDONLY); fd2 = open( file2, O_RDONLY); n_fds = 5; //stdin + stdout + stderr + fd1 + fd2 FD_ZERO(&readset); FD_SET (fd1, &readset); FD_SET (fd2, &readset); switch(select(n_fds, &readset, NULL,NULL,NULL)) { dup! Kommandot dup används för att duplicera en fildeskriptor. Både den gamla och den nya fildeskriptorn refererar till samma fil efter anropet.! Den nya fildeskriptorn kommer att få det lägsta lediga numret. Första gången dup görs kommer den nya fildeskriptorn att få numret 3.! STDIN(0), STDOUT(1), STDERR(2). int old_fd, new_fd; new_fd = dup(old_fd); Exempel med dup int fd, stat; creat(utfil, PERMS); if(fork() == 0) { close(stdout); dup(fd); puts("hejsan!"); close(fd); wait(&stat); puts("föräldern avslutar"); 47 48!12

13 dup2! et dup2 skapar även den en kopia av en fildeskriptor.! Skillnaden mellan dup och dup2 är att dup2 även stänger den gamla fildeskriptorn om det är nödvändigt. int old_fd, new_fd; dup2(old_fd, new_fd); Exempel med dup2 int fd, stat; creat(utfil, PERMS); if(fork() == 0) { dup(fd, STDOUT); puts("hejsan!"); close(fd); wait(&stat); puts("föräldern avslutar"); fcntl! et fcntl används för att manipulera och ändra egenskaper för öppnade fildeskriptorer. fcntl(int fd, int CMD, int arg);! CMD anger kommandot som skall göras. Flera finns:! F_DUPFD Duplicera fildeskriptorer! F_GETFD Hämta fildeskriptorns flaggor! F_SETFD Sätt fildeskriptorns flaggor! F_SETLK Sätt lås på fildeskriptorn! F_GETLK Lås upp fildeskriptorn Exempel med fcntl int fd, stat, ny_ut; creat(utfil, PERMS); if(fork() == 0) { ny_ut = dup(stdout); close(stdout); dup2(fd, STDOUT); puts("hejsan!"); fflush(stdout); close(stdout); fcntl(ny_ut, F_DUPFD, STDOUT); puts("barnet avslutar"); wait(&stat); puts("föräldern avslutar"); 51 52!13

14 signal! En signal kan ses som ett meddelande till en process att en händelse har inträffat.! Signaler kallas även för Software interrupts.! Alla signaler har ett namn, se man-sidan eller <signal.h> int sig, hanterare; signal(sig, hanterare);! sig Signalen som skall skickas! hanterare Kan vara SIG_IGN, som talar om att ignorera signalen, eller en egen funktion att hantera signalen. Signal-genererare! Signaler kan genereras på ett flertal olika sätt! kill! Kommando kill! Tangentbord CTRL+C (SIGINT) CTRL+\ (SIGQUIT) CTRL+Z (SIGSTF)! Hårdvara Referens utanför minne (SIGEGV)! Mjukvara Out-of-bound data (SIGURG) Exempel med signal #define SEC 1 void hanterare() { puts("du har tryckt CTRL+\"); signal(sigint, SIG_IGN); signal(sigquit, hanterare); while(1) sleep(sec); return 0; zombie! En zombie är en process som ingen längre har kontroll över.! Zombies skapas då! Ett barn dör och föräldern inte väntar på barnet! En förälder terminerar då dess barn fortfarande exekverar! Hur man undviker att få zombies:! waitpid waitpid(pid, &status, WNOHANG);! signaler olika beroende på implementation, exempelvis SysV signal(sigcld, SIG_IGN) POSIX signal(sigchld, SIG_IGN); 55 56!14

15 kill! et kill används för att skicka en signal till en process. kill(int pid, int signal); Om pid = 0 Skickas signalen till hela processgruppen Om pid =-1 USER=root Skickas signalen till alla processer annars Skickas signalen till användarens alla processer. Om pid <-1 Skickas signalen till hela processgruppen, utom avsändarprocessen Exempel med kill int pid, status, sig_nummer; switch(pid = fork()) { case 0: sleep(10); default: break; kill(pid, SIGTERM); pid = wait(&status); if(wifsignaled(status)) { sig_number = WTERMSIG(status); printf("signal %d terminerade barnet %d",sig_nummer, pid); Andra signalfunktioner! raise skickar en signal till sig själv. Ekvivalent med kill(getpid(), signal). Exempel: raise(int sig);! alarm används för att starta en timer som skickar iväg en signal efter en viss tid. Alarm fungerar som sleep, med den skillnaden att systemet under tiden kan nyttjas. Exempel: alarm(3);! pause suspenderar en process (för att inte slösa CPU) till dess att en signal mottages. Exempel: pause(); 59!15

Information OPERATIVSYSTEM UNIXPROGRAMMERING

Information OPERATIVSYSTEM UNIXPROGRAMMERING Information OPERATIVSYSTEM UNIXPROGRAMMERING Lärare: Reine Lundin Rum: 5A 429 E-post: reine.lundin@kau.se Hemsida: www.cs.kau.se/~reine/ Telefon: 700 18 60 Laborationer Append (filhantering) Med Systemanrop.

Läs mer

... Funktionsanrop. Vad händer när man kör ett program?

... Funktionsanrop. Vad händer när man kör ett program? Vad händer när man kör ett program? 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 main-funktionen ungefär

Läs mer

Möte 10: Kommunikation mellan processer - (PI)

Möte 10: Kommunikation mellan processer - (PI) Möte 10: Kommunikation mellan processer - (PI) Målet med att köra flera processer är ofta att få dem att samverka, som sagt, men för att få dem att samverka måste de ofta kommunicera. Vi ska studera processkommunikation

Läs mer

Grundprogrammen. combine

Grundprogrammen. combine Seminarium II Andra seminariet behandlar speciella övningsuppgifter som gavs ut på kurswebben tidigare. Programmen som presenteras är förlag till lösningar på övningsuppgifterna. Genomgående används systemanropet

Läs mer

printenv sort pager printenv grep args sort pager

printenv sort pager printenv grep args sort pager 1 Problembeskrivning Uppgiften var att skriva ett program, digenv för att visa miljövariabler. programmet vara ekvivalent med att köra: Kört utan argument så skulle printenv sort pager och kört med argument

Läs mer

Användbara systemanrop och biblioteksfunktioner. 2G1520 Operativsystem

Användbara systemanrop och biblioteksfunktioner. 2G1520 Operativsystem Institutionen för Mikroelektronik och Informationsteknik Användbara systemanrop och biblioteksfunktioner 2G1520 Operativsystem 2005 Institutionen för Mikroelektronik och Informationsteknik 1.0 Introduktion

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

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

Möte 9: Relationer mellan körande processer - (PI)

Möte 9: Relationer mellan körande processer - (PI) Möte 9: Relationer mellan körande processer - (PI) Målet med att köra flera processer är ofta att få dem att samverka. Vi ska idag studera olika sätt att får processer att samverka. En viktig form av samverkan

Läs mer

Signaler. Icke tillförlitliga signaler. Vad göra?

Signaler. Icke tillförlitliga signaler. Vad göra? Signaler Signaler Signaler kan betecknas som mjukvaruavbrott och du kan välja om du vill ta hand om dessa signaler eller strunta i dem. De funkar på ungefär samma sätt som hårdvaruavbrott och du kan definiera

Läs mer

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

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

Läs mer

Del II: Systemprogrammering och Inter-Process Communication.

Del II: Systemprogrammering och Inter-Process Communication. Möte 6 (Föreläsning 2) HI1025 Operativsystem 7.0 hp, KTH Haninge, VT2017 Del II: Systemprogrammering och Inter-Process Communication. Vi repeterar ett antal preciseringar: * En fil är en abstraktion som

Läs mer

2... uppvisa förmåga att skapa och/eller hantera flerprocessiga program där de ingående processerna ges

2... uppvisa förmåga att skapa och/eller hantera flerprocessiga program där de ingående processerna ges UPPGIFTER AV FÖRESLAGEN TENTAMENSKARAKTÄR, LÅTSASTENTA DEN 27 FEBRUARI 2017 Inför datortentan III Detta är tredje dokumentet i en följd av dokument som med syfte att klargöra kursmål och examinationsformen

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 6: Filhantering Henrik Björklund Umeå universitet 13 oktober 2009 Björklund (UmU) Programmeringsteknik 13 oktober 2009 1 / 22 Textfiler Filer är sekvenser

Läs mer

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

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

Läs mer

Raspberry Pi och Tellstick, ett program i C.

Raspberry Pi och Tellstick, ett program i C. Raspberry Pi och Tellstick, ett program i C. Ett program skrivet i C för att med Tellstick tända och släcka en eller flera lampor. Programmet startas med kommandot: /home/pi/development/cprog/tellstick/tellstick-13

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

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

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

Operativsystem ID2200/06 omtentamen :00-12:00

Operativsystem ID2200/06 omtentamen :00-12:00 Instruktioner Operativsystem ID2200/06 omtentamen 2017-08-21 8:00-12:00 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

#include <pthread.h> #include <stdio.h> int p1[2]; void* char_print (void* parameter) { int fds; fds = *((int *)parameter); int i;

#include <pthread.h> #include <stdio.h> int p1[2]; void* char_print (void* parameter) { int fds; fds = *((int *)parameter); int i; Övningar på trådar Det kommer att visa sig att det är mycket enklare att programmera med trådsom pratar med pipes/sockets ar när man en gång bemästrat IPC med processer och pipes/sockets. Vi ska dock formulera

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

Tentamen Datorteknik och realtidssystem, TSEA81 Datum Lokal

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

Läs mer

Strängar. Strängar (forts.)

Strängar. Strängar (forts.) Strängar En sträng i C är helt enkelt en array av char: char namn[20]; För att få strängar att bete sig som om de vore av dynamisk längd markeras strängens slut med null-tecknet \0 : J o z e f S w i a

Läs mer

Dagens föreläsning. Specialtecken. Mer om printf. Formateringssträngar. Mer om scanf. Programmeringsteknik för Ingenjörer VT05

Dagens föreläsning. Specialtecken. Mer om printf. Formateringssträngar. Mer om scanf. Programmeringsteknik för Ingenjörer VT05 Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 12 Filhantering Funktionsbibliotek Mer om kompilering Lagrinsklasser Makron Programmeringsteknik VT05 2 Mer om printf Utskrifter

Läs mer

(2) Skriv ett program som skapar ett antal processer vars relationer beskrivs av nedanstående tidsdiagram a

(2) Skriv ett program som skapar ett antal processer vars relationer beskrivs av nedanstående tidsdiagram a Tentamen i Operativsystem, HI1025:LAB1-15 mars, 2017 Allmänna instruktioner. Tentamen innehåller 3 programmeringsproblem av den art vi exemplifierat på seminarier och i övningar. För godkänt betyg ska

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

Ö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

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

Om pekare och minneshantering i C, relaterat till operativsystem och särskilt konstruktionen fork() execvp().

Om pekare och minneshantering i C, relaterat till operativsystem och särskilt konstruktionen fork() execvp(). Om pekare och minneshantering i C, relaterat till operativsystem och särskilt konstruktionen fork() execvp(). Detta extra material är tänkt att dels fördjupa och förtydliga pekarbegreppet från C och ge

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

Tellstick-15.c. Kompilering av programmet: gcc -o tellstick-15 -Wall -ltelldus-core -W -O2 -s -pipe -lm tellstick-15.c

Tellstick-15.c. Kompilering av programmet: gcc -o tellstick-15 -Wall -ltelldus-core -W -O2 -s -pipe -lm tellstick-15.c Tellstick-15.c Ett program skrivet i C för att med Tellstick tända och släcka en eller flera lampor. Det nya i detta program är att strömbrytare 1 tänds och släcks efter solens upp- och nedgång, tänds

Läs mer

Tillfälle 14 (F): Fördjupat studium av parallellitet och synkronisering: processer, trådar, schemaläggning och signaler.

Tillfälle 14 (F): Fördjupat studium av parallellitet och synkronisering: processer, trådar, schemaläggning och signaler. Tillfälle 14 (F): Fördjupat studium av parallellitet och synkronisering: processer, trådar, schemaläggning och signaler. Mer kring trådar och processer Vi har nu erfarenhet av både trådar och processer.

Läs mer

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

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

Läs mer

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

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

Läs mer

Lärare och handledare. Systemnära programmering. I dag. Föreläsningar & Gruppövningar & Handledning. Marcus Karlsson

Lärare och handledare. Systemnära programmering. I dag. Föreläsningar & Gruppövningar & Handledning. Marcus Karlsson Lärare och handledare Systemnära programmering 5DV088 HT10 Föreläsningar & Gruppövningar & Handledning Mikael Rännar Handledning mr@cs.umu.se Marcus Karlsson marcusk@cs.umu.se 1 2 I dag Information om

Läs mer

Fö 4 TSEA81. Monitors and Message passing

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

Läs mer

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning Generell säkerhet Här finns det inga direkta rätt eller fel. Snarare saker man bör tänka på när man implementerar ett program. Kort sagt: Efter att du kommit på hur du tänkt göra, sov på saken och tänk

Läs mer

Avancerad SSL-programmering II

Avancerad SSL-programmering II Tekn.dr. Göran Pulkkis Överlärare i Datateknik Avancerad SSL-programmering II 1 Innehåll Makron för generisk stackhantering Hantering av konfigureringsfiler Certifikathantering 2 1 Makron för generisk

Läs mer

Utkast. Programmering. Signals. Olika typer av program. Sommarkurs 2007 www.hh.se/staff/vero/programmering. Avbrott i mjukvara.

Utkast. Programmering. Signals. Olika typer av program. Sommarkurs 2007 www.hh.se/staff/vero/programmering. Avbrott i mjukvara. Programmering Sommarkurs 2007 www.hh.se/staff/vero/programmering Verónica Gaspes Utkast Avbrott i mjukvara Larm signaler Avslutnings signaler IDE-sektionen Curses Juli 2 Olika typer av program Signals

Läs mer

Process- programmering

Process- programmering Process- programmering höstterminen år 2002 socket() socket() bind() connect() listen() accept() inkoppling väntar på klient read() anrop write() write() svar read() Sida 1/38 INNEHÅLL Kommandorad rörledning

Läs mer

lex källkod lex.l lexkompilator lex.yy.c C- kompilator lex.yy.c a.out sekvens av tokens a.out input specifikation av tokens mha reguljära uttryck

lex källkod lex.l lexkompilator lex.yy.c C- kompilator lex.yy.c a.out sekvens av tokens a.out input specifikation av tokens mha reguljära uttryck input läs tecken stoppa tillbaka ett tecken skicka ett token och dess attribut parser Eliminera white space och kommentarer Gruppera lästa tecken till tokens identifierare, nyckelord, numeriska konstanter,

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

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

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

Introduktion till processer

Introduktion till processer Grundläggande begrepp HI1025 Operativsystem 7.0 hp, KTH Haninge, VT2017 Introduktion till processer Vi skriver ner ett par preciseringar av några begrepp som vi hittills stött på. * En fil är en abstraktion

Läs mer

Programbibliotek. Ur innehållet: Olika typer av bibliotek Kompilatorbibliotek C-bibliotek Run-time miljö Så skapar du ett nytt bibliotek

Programbibliotek. Ur innehållet: Olika typer av bibliotek Kompilatorbibliotek C-bibliotek Run-time miljö Så skapar du ett nytt bibliotek Programbibliotek Ur innehållet: Olika typer av bibliotek Kompilatorbibliotek C-bibliotek Run-time miljö Så skapar du ett nytt bibliotek Programbibliotek 1 Programbibliotek Programbibliotek 2 Programbibliotek

Läs mer

Poster ( structar ) Postdeklarationer

Poster ( structar ) Postdeklarationer Poster ( structar ) Exempel på en postdeklaration: struct person { int id; char namn[20]; int vikt, skonr; p1, p2; Detta definierar två variabler p1 och p2 som poster med termerna id, namn, vikt och skonr.

Läs mer

Omkoppling av in- och utmatning. In- och utmatning i Unix. Kommando exempel, ls, pipe forts. Kommando exempel, ls, pipe

Omkoppling av in- och utmatning. In- och utmatning i Unix. Kommando exempel, ls, pipe forts. Kommando exempel, ls, pipe In- och utmatning i Unix Program i Unix skriver och läser till och från filer. En fil betyder här en vanlig fil med text eller binära data, ett tangentbord, en skärm, ett annat program etc. Innan ett program

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

PC-teknik, 5 p LABORATION FILHANTERING

PC-teknik, 5 p LABORATION FILHANTERING PC-teknik, 5 p LABORATION FILHANTERING Laborationsansvariga: Anders Arvidsson Utskriftsdatum: 2004-09-14 Laborant(er): 1 Syfte Laborationen ska illustrera möjligheten att använda funktioner i DOS för att

Läs mer

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning

Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning Generell säkerhet Här finns det inga direkta rätt eller fel. Snarare saker man bör tänka på när man implementerar ett program. Kort sagt: Efter att du kommit på hur du tänkt göra, sov på saken och tänk

Läs mer

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe Kodningskonventioner Viktor Kämpe Varför kodningskonventioner? Förståelse för Skillnaden mellan lokala/globala variabler. Funktionsargument. Returvärde. Möjliggör Mix av assembler och C. Kodningskonventioner/VK

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

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

Pekare ( )

Pekare ( ) Pekare Varje variabel har en adress En variabels adress ges av den unära adressoperatorn & Adresser hanteras kan lagras i variabler (pekarvariabel) Den unära avrefereringsoperatorn * används dels vid deklaration

Läs mer

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19 Programmering i C++ EDA623 Strömmar och filer EDA623 (Föreläsning 9) HT 2013 1 / 19 Strömmar och filer Innehåll Klassen ios Läsning av strömmar Utskrift av strömmar Koppling av filer till strömmar Direktaccess

Läs mer

Realtidsstöd i Minix. En laborationrapport. Oktober 2012

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

Läs mer

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt

Läs mer

Vad har vi lärt oss så här långt Vad är en sträng? Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar.

Vad har vi lärt oss så här långt Vad är en sträng? Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar. Vad har vi lärt oss så här långt Vad är en sträng Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar. Matriser av strängar. Sortering av strängar. Vad har vi lärt oss i dag Literals

Läs mer

Tentamen. Datorteknik och realtidssystem

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

Läs mer

C-programmering, föreläsning 2 Jesper Wilhelmsson

C-programmering, föreläsning 2 Jesper Wilhelmsson C-programmering, föreläsning 2 Jesper Wilhelmsson Funktioner void Globala och lokala variabler, scope static Arrayer Strängar ASCII, ANSI Argument till main Slumptal Funktioner Nu är det dags att börja

Läs mer

En kort text om programmering i C.

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

Läs mer

Avancerad SSL-programmering I

Avancerad SSL-programmering I Tekn.dr. Göran Pulkkis Överlärare i Datateknik Avancerad SSL-programmering I 25.1.2012 1 Innehåll SSL-sessioner Förnyad SSL-handskakning Blockerad/oblockerad in/uthantering 25.1.2012 2 SSL-sessioner Session

Läs mer

OS-X, ett distribuerat realtidsoperativsystem (C) Francis Görmarker 1994

OS-X, ett distribuerat realtidsoperativsystem (C) Francis Görmarker 1994 OS-X, ett distribuerat realtidsoperativsystem (C) Francis Görmarker 1994 Detta dokument beskriver operativsystemet OS-X, ett kompakt, distribuerat realtidsoperativsystem för mikrodatorer. Innehåll 1.0

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

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

Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING

Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING 1. Träna på att logga in och ut. 2. Mata ln sleep 60. Mata in kommandot date direkt. Tryck på avbrottstangenten, (CTRL-C). Prova kommandot date

Läs mer

Föreläsning 13. In- och utmatning

Föreläsning 13. In- och utmatning Föreläsning 13 In- och utmatning Dagens kluring Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar

Läs mer

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

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

Läs mer

Programbibliotek. Ur innehållet: Olika typer av bibliotek Kompilatorbibliotek C-bibliotek Run-time miljö Så skapar du ett nytt bibliotek

Programbibliotek. Ur innehållet: Olika typer av bibliotek Kompilatorbibliotek C-bibliotek Run-time miljö Så skapar du ett nytt bibliotek Programbibliotek Ur innehållet: Olika typer av bibliotek Kompilatorbibliotek C-bibliotek Run-time miljö Så skapar du ett nytt bibliotek Läsanvisningar: Arbetsbok kapitel 8 Programbibliotek 1 Programbibliotek

Läs mer

Språket Python - Del 2 Grundkurs i programmering med Python

Språket Python - Del 2 Grundkurs i programmering med Python Hösten 2009 Dagens lektion Funktioner Filhantering Felhantering 2 Funktioner 3 FUNKTIONER Att dela upp program Att dela upp program i mindre delar, funktioner är ett viktigt koncept i programmering. Viktigt

Läs mer

C++ Slumptalsfunktioner + switch-satsen

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

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

Läs mer

Öppna filer och filsystem i PintOS Hemuppgift TDDI81, 21/

Öppna filer och filsystem i PintOS Hemuppgift TDDI81, 21/ Öppna filer och filsystem i PintOS Hemuppgift TDDI8, /0-03 Almquist Mathias (matal09) Nguyen Johan (johng86) Hamzic Mirza (mirha348) Timliden Erik (eriti930) INLEDNING PintOS är ett operativsystem utvecklat

Läs mer

Operativsystem ID2200/06 omtentamen :00-12:00

Operativsystem ID2200/06 omtentamen :00-12:00 Instruktioner Operativsystem ID2200/06 omtentamen 2017-08-21 8:00-12:00 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

Övning 3 i 2D1324. Strukturering h filer deklaration vs definition Debuggning gdb Preprocessorn #define assert(s) FILE LINE Länkning

Övning 3 i 2D1324. Strukturering h filer deklaration vs definition Debuggning gdb Preprocessorn #define assert(s) FILE LINE Länkning Övning 3 i 2D1324 Strukturering h filer deklaration vs definition Debuggning gdb Preprocessorn #define assert(s) FILE LINE Länkning Avancerad c-programering och repetition Typisk h-fil #ifndef special_a

Läs mer

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok

Besvara de elektroniska frågorna (se kurshemsidan). Läs kapitel i kursbok Namn: Laborationen godkänd: Laboration 2. Cacheminne Laborationens syfte I laborationen ska du bekanta dig med cacheminnen. Genom laborationen fås kunskap om hur cacheminnen är konstruerade och hur de

Läs mer

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

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

Läs mer

Lab 7, 48 steg till ett bättre liv i Unix-labbet

Lab 7, 48 steg till ett bättre liv i Unix-labbet Lab 7, 48 steg till ett bättre liv i Unix-labbet Urban Liljedahl 13 december 2002 Instruktioner Mål Krav Utveckla förmågan att söka kunskap med hjälp litteratur och andra källor. Utveckla förmågan att

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

(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

Operativsystem ID2200/06 omtentamen :00-18:00

Operativsystem ID2200/06 omtentamen :00-18:00 Instruktioner Operativsystem ID2200/06 omtentamen 2017-12-18 14:00-18:00 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

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

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

Programmering i C, 7,5 hp

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

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Strömmar, externa filer och kommandoradsargument Eric Elfving Institutionen för datavetenskap 7 oktober 2015 Översikt 2/32 Strömmar Kommandoradsargument Jämförelseoperatorer

Läs mer

Sockets. Processkommunikation Sammanfattning. Sockets. Domän, typ och protokoll

Sockets. Processkommunikation Sammanfattning. Sockets. Domän, typ och protokoll Processkommunikation Sammanfattning Pipes Kan användas då processerna har en gemensam föräldraprocess. Tillgängligt överallt FIFO Som pipor fast processerna behöver inte ha någon gemensam förälder. XSI

Läs mer

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

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

Läs mer

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

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

Läs mer

Enkla datatyper minne

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

Läs mer

Och!efter!ca!20!omgångar!hamnade!den!på!en!stabil!konfiguration!enligt!nedan! där!den!stannar!kvar.!

Och!efter!ca!20!omgångar!hamnade!den!på!en!stabil!konfiguration!enligt!nedan! där!den!stannar!kvar.! Inlämningsuppgift5/GameofLife GameofLifeärettklassigtspel/emulator.Sistidokumentetserduemexempel kodskriveniprogrammetmatlab.skrivomprogrammeticiställetochstarta medattskrivaerainitialerpåspelbrädet.förmerinformationom

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

6.1 Kompilering och lite grundläggande information

6.1 Kompilering och lite grundläggande information 6 Förhoppningsvis ska de C-konstruktioner som gås igenom här tillsammans med de exempelprogram som ges här och i andra delar av lab-pm vara tillräckliga för att ni ska kunna klara av laborationerna. Syftet

Läs mer

Programmering av grafisk display

Programmering av grafisk display Programmering av grafisk display Arbetsboken avsnitt 5 - Drivrutrin för grafisk display, uppg. 5.10-5.16. Datablad LCD Grafisk under resurser på kurshemsidan, s.14-23. Lab 3 - Drivrutiner - Enkel grafik

Läs mer

Tentamen Nätverksprogrammering Lösningsförslag

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

Läs mer

GPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner

GPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner GPT föreläsning 8 Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner Denna gång Reflektioner kring OU1 Funktioner Reflektioner

Läs mer

Datorer och datoranvändning Föreläsningar 2014/15. Föreläsning 1 Unix. Operativsystem. Unix

Datorer och datoranvändning Föreläsningar 2014/15. Föreläsning 1 Unix. Operativsystem. Unix Datorer och datoranvändning Föreläsningar 2014/15 Per Holm Per.Holm@cs.lth.se Unix 2 (lab 1) Lågnivåprogrammering 23 (lab 2) Datorns hårdvara 45 L A TEX 69 (lab 3) Internet 98 (lab 4) Operativsystem 117

Läs mer

Recap Mera om nya typer Kort Fält. Programmering. Sommarkurs 2007 www.hh.se/staff/vero/programmering. Verónica Gaspes. IDE-sektionen.

Recap Mera om nya typer Kort Fält. Programmering. Sommarkurs 2007 www.hh.se/staff/vero/programmering. Verónica Gaspes. IDE-sektionen. Programmering Sommarkurs 2007 www.hh.se/staff/vero/programmering Verónica Gaspes IDE-sektionen Juni 14 Utkast 1 Recap 2 Mera om nya typer 3 Kort 4 Fält Recap Man kan ge namn till typer. Vi undersökte enum

Läs mer

UNIX verktyg. Användbara kommandon Fil och informationssökning Tags Versionshanteringssystem

UNIX verktyg. Användbara kommandon Fil och informationssökning Tags Versionshanteringssystem Användbara kommandon Fil och informationssökning Tags Versionshanteringssystem 1 Användbara kommandon 1 more är ett filter som visar information skärmvis Exempel: ls al more less är en mer kraftfull variant

Läs mer