2... uppvisa förmåga att skapa och/eller hantera flerprocessiga program där de ingående processerna ges
|
|
- Bengt Johan Åberg
- för 6 år sedan
- Visningar:
Transkript
1 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 på datortentan. I det här dokumentet presenteras förslag på uppgifter som vi kanske kan anse är av tentamenskaraktär. Tolkning av ingenjörsmässiga kurs- och examensmål och motivation av denna examinationsform Examinationen i kurserna behöver befrämja studenters uppfyllande av målen med utbildningen och den specifika kursen, men det här måste konkretiseras varför vi gör en uppräkning av kursens systemprogrammeringsmässiga huvudmoment. På datortentan ska studenten uppvisa förmåga att skapa och/eller hantera flerprocessiga program där de ingående processerna kommunicerar med UNIX standardmässiga paradigm med fildeskriptorer - det här med close(), dup(), fork(), exec() osv. Detta kallas IPC, InterProcess Communication. Särskild vikt läggs vid mekanismen att close() avslutar en kommunikation. Härvid används olika kommunikationsinstrument som sockets och pipes uppvisa förmåga att skapa och/eller hantera flerprocessiga program där de ingående processerna ges olika roller och intar olika relationer till varandra. (Barn, barnbarn, syskon, kusiner etc.) I synnerhet krävs att studenten ska kunna skapa/hantera så kallade demonprocesser och även undvika/hantera så kallade zombieprocesser uppvisa förmåga att skapa och/eller hantera flertrådade program/processer och därvid uppvisa medvetenhet om problematik som kapplöpning och deadlock. Studenten ska kunna skapa/hantera flertrådade program som undviker dessa båda problem. Så kallade p-trådar (POSIX-threads) kommer att användas. Dessa tre punkter utgör en tolkning av vad som krävs och studenten ska uppfylla alla tre krav parallellt, det betyder att uppgifterna som ges på datortentan kan befatta sig med aspekter av två eller rent av alla tre krav samtidigt. Till exmpel kan alltså en problemställning ges där trådar (mål 3) ska kommunicera med via en pipe eller en socket och göra detta på ett solitt sätt, dvs avsluta med close() så att principen om solid IPC upprätthålls (mål 1). Tillåtna hjälpmedel Programmering är ju en aktivitet som normalt innebär att programmeraren har tillgång till olika hjälpmedel. De hjälpmedel som ges på datortentan blir följande: 1. Kurslitteraturen, Advanced Linux Programming, Beej s Guide to Network Programming. 2. Exempelkod där systemanropen används för att skapa program med inslagen från de tre kraven ovan. (Denna lista på exempelprogram tar vi fram under kursens gång.) 3. En körande UNIX-miljö vari tentamensuppgifterna ska lösas. Miljön i sig innehåller också hjälpmedel som manualsidor och systemprogrammeringsverktyg. Svarsformat För att se att de program/lösningar som lämnas in behvöver studenten placera anrop till ps respektive sleep. Detta görs med fördel med systemanropet system() och eftersom detta fungerar så väl så kommer det att vara ett krav att programmet utformas med välplacerade anrop till detta systemanrop samt till sleep(). Anropet till system/ps tar då formen 1
2 2 UPPGIFTER AV FÖRESLAGEN TENTAMENSKARAKTÄR, LÅTSASTENTA DEN 27 FEBRUARI 2017 system("ps -o pid,ppid,pgid,sess,comm"); medan anropet till sleep() kan göras direkt i C-koden utan att gå via system(). Det kommer att vara ett krav att studenten gör detta anrop på kritiska tidpunkte i tidsdiagrammen. Dessa punkter i programmet kommer att markeras med ett kryss. Detta illustreras i följande exempel. Barnet i koden if(!fork()) sleep(1); exit(0); system("ps -o pid,ppid,pgid,sess,comm"); //anrop 1 wait(0); system("ps -o pid,ppid,pgid,sess,comm"); //anrop 2 kommer att synas säkert wid anrop 1 ovan. I anrop 2 så kommer inte barnprocessen att synas eftersom den avslutats då med exit(0) och eftersom föräldern gör wait innan anrop 2 så kommer inte barnet att synas vid anrop 2. Om vi inte har sleep(1) så kan det hända att barnprocessen inte hinner skapas innan föräldern gör anrop 1 så då syns inte barnet i vare sig anrop 1 eller anrop 2. Om vi ser på motsvarande tidsdiagram har det följande utseende X X Observera särskilt de två kryssen som alltså symboliserar anropet till system/ps. Det kommer som sagt att vara ett särskilt krav att dessa anrop görs i de positioner som anges, och att utskriften har det principiella resultat som anges av de testutskrifter som också ges i samband med formuleringen av tentauppgifterna. Här är en provkörning av ovanstående kod: PID PPID PGID SESS COMMAND bash a.out a.out sh ps PID PPID PGID SESS COMMAND bash a.out sh ps som vi ser syns barnet som tydligen har processid 4467 vid första utskriften som kommer i respons till första aropet. Vid andra anropet är barnet borta. Tre uppgifter av föreslagen tentamenskaraktär Nedan följer uppgifter som gavs vid en låtsastenta den 27 februari Syftet med detta var att få en preliminär uppfattning om hur denna examinationsform fungerar. Tre studenter från andra årskursen arbetade med uppgifterna under 2 timmar. På den riktiga datortentan ges 5 timmar. Uppgifternas formuleringar har utvidgats och förtydligats i respons till den utvärdering som följde. En film kommer att finns publicerad som visar hur man kan arbeta med att lösa problem av detta slag i en steg-för-stegprocedur. (I skrivande stund är inte filmen klar, men den kommer snart.) Uppgift 1. Skriv ett flerprocessigt program som beskrivs av nedanstående tidsdiagram: a X X X X b d c Föräldraprocessen ska göra totalt 4 anrop till system/ps och resultatet av den utskriften ska ha ha fljande principiella utseende: Koden till processen d ska vara följande (include-direktiv utelämnade)
3 UPPGIFTER AV FÖRESLAGEN TENTAMENSKARAKTÄR, LÅTSASTENTA DEN 27 FEBRUARI main() int p; while(read(0,&p,sizeof(int)))printf("p = %d.\n", p); och d ska initieras med ett anrop till execlp av typen execlp("./d","./d",null); i sin föräldraprocess(a). (Vi utelämnar i detta tidsdiagram relationen till det omgivande skalet.) Samtliga systemanrop ska kontrolleras, förutom till fork(), system() och sleep(). De tjocka pilarna representerar pipes och det som ska ske är att b ska skriva sitt processid i pipen till c, därefter ska c skicka vidare detta processid till d. Men då detta r gjort ska b även skicka c s processidid och c ska vidarebefodra detta till d Processen c ska fungera i form av en loop som kan ta emot ett godtycligt antal tal och vidarebefordra till d. Avslutning med stängningar ska indikera att kommunikationen är klar. Som vanligt ska välplacerade anrop till system("ps -o pid,ppid,pgid,sess,comm"); och sleep() användas för att se att programmet fungerar som det ska. Studera nedanstående program: Uppgift 2. /* ** seed to a deamon. Demonstrates unix sockets */ #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #include <signal.h> #include <wait.h> #define SOCK_PATH "echo_socket" void sigchld_handler(int s) while(waitpid(-1, NULL, WNOHANG) > 0); int main(void) int s, s2, t, len; struct sockaddr_un local, remote; struct sigaction sa; sa.sa_handler = sigchld_handler; // reap all dead processes sigemptyset(&sa.sa_mask); sa.sa_flags = SA_RESTART; if (sigaction(sigchld, &sa, NULL) == -1) perror("sigaction"); if ((s = socket(af_unix, SOCK_STREAM, 0)) == -1) perror("socket"); if ((s = socket(af_unix, SOCK_STREAM, 0)) == -1)
4 4 UPPGIFTER AV FÖRESLAGEN TENTAMENSKARAKTÄR, LÅTSASTENTA DEN 27 FEBRUARI 2017 perror("socket"); local.sun_family = AF_UNIX; strcpy(local.sun_path, SOCK_PATH); unlink(local.sun_path); len = strlen(local.sun_path) + sizeof(local.sun_family); if (bind(s, (struct sockaddr *)&local, len) == -1) perror("bind"); if (listen(s, 5) == -1) perror("listen"); for(;;) int done, n; printf("waiting for a connection...\n"); t = sizeof(remote); if ((s2 = accept(s, (struct sockaddr *)&remote, &t)) == -1) perror("accept"); //Work with s2 return 0; Programmet finns bland exempelkoderna som följer med denna tenta. Det finns också ett enkelt klientprogram. Uppgiften är att omvandla detta program till en server som kör som barn under init. Det ska bli en server som är flerprocessig och som gör följande: 1. Vid start skapar den en socket i /tmp/ och det är där som klienter ansluter. Klienten skicka då sitt processid så att servern vet vilken process som ska ha signalen. 2. Vid ett anrop skapas en parallell process som väntar i 20 sekunder och därefter skickas signalen KILL till den process som anropat servern. Flera anrop till servern ska kunna ske parallellt och servern ska skapa en barnprocess i respons till samtliga anrop. 3. Då en klient tar emot signalen KILL så ska servern som sista sak göra ett anrop till system/ps för att kontroller att processen tagits bort. (För att se att programmet fungerar som det ska så kan mer anrop till system/ps och sleep vara nödvändiga. Studera nedanstående program: #include <pthread.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <time.h> #define SLEEP 1 #define WANT 2 int run = 1; Uppgift 3
5 UPPGIFTER AV FÖRESLAGEN TENTAMENSKARAKTÄR, LÅTSASTENTA DEN 27 FEBRUARI pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t m2 = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t m3 = PTHREAD_MUTEX_INITIALIZER; char state[] = "r1 t1 r2 t2 r3 t3 r1"; int choose(int n) return rand()%n+1; void* tf1 (void*p) while(run) switch(choose(2)) case SLEEP: sleep(2*choose(3)); break; case WANT: state[3]= w ; pthread_mutex_lock(&m1); state[3]= - ; state[8]= w ; pthread_mutex_lock(&m2); state[8]= - ; state[5]= T ; sleep(2*choose(5)); pthread_mutex_unlock(&m1); pthread_mutex_unlock(&m2); state[3]= ; state[8]= ; state[5]= t ; break; return NULL; void* tf2 (void*p) while(run) switch(choose(2)) case SLEEP: sleep(2*choose(3)); break; case WANT: state[13] = w ; pthread_mutex_lock(&m2); state[13] = - ; state[18] = w ; pthread_mutex_lock(&m3); state[18] = - ; state[15]= T ; sleep(2*choose(5)); pthread_mutex_unlock(&m2); pthread_mutex_unlock(&m3); state[13]= ; state[18]= ; state[15]= t ; break; return NULL; void* tf3 (void*p) while(run) switch(choose(2)) case SLEEP: sleep(2*choose(3)); break; case WANT: state[23]= w ; pthread_mutex_lock(&m3); state[28]= - ; state[28]= w ; pthread_mutex_lock(&m1); state[23]= - ; state[25]= T ; sleep(2*choose(5)); pthread_mutex_unlock(&m1); pthread_mutex_unlock(&m3); state[23]= ; state[28]= ; state[25]= t ; break;
6 6 UPPGIFTER AV FÖRESLAGEN TENTAMENSKARAKTÄR, LÅTSASTENTA DEN 27 FEBRUARI 2017 return NULL; int main (int argc, char* argv[]) pthread_t t1, t2, t3; int round = 0; srand(time(0)); pthread_create(&t1,null,&tf1,null); pthread_create(&t2,null,&tf2,null); pthread_create(&t3,null,&tf3,null); while(round<24) printf("round %2d: %s\n", round+1, state); sleep(2); round++; run = 0; pthread_join(t1,null); pthread_join(t2,null); pthread_join(t3,null); return 0; Det är en enklare version av laboration 3 där tre trådar samsas om tre resurser och vi ska ställa frågor om deadlock här. Det kompileras med kommandot gcc threads.c -o t -pthread. En testkörning ser ut så här: $./t Round 1: r1 t1 r2 t2 r3 - T3 w r1 Round 2: r1 w t1 r2 - t2 w r3 - T3 w r1 Round 3: r1 w t1 r2 - t2 w r3 - T3 w r1 Round 4: r1 w t1 r2 - t2 w r3 - T3 w r1 Round 5: r1 w t1 r2 - t2 w r3 - T3 w r1 Round 6: r1 w t1 r2 - t2 w r3 - T3 w r1 Round 7: r1 w t1 r2 - t2 w r3 - T3 w r1 Round 8: r1 w t1 r2 - t2 w r3 - T3 w r1 Round 9: r1 - t1 w r2 - T2 - r3 t3 r1 Round 10: r1 - T1 - r2 t2 r3 t3 r1 Round 11: r1 - T1 - r2 t2 r3 t3 r1 Round 12: r1 - T1 - r2 t2 r3 t3 r1 Round 13: r1 - T1 - r2 t2 r3 t3 r1 Round 14: r1 - T1 - r2 t2 r3 w t3 w r1 Round 15: r1 - T1 - r2 t2 r3 w t3 w r1 Round 16: r1 - T1 - r2 t2 r3 w t3 w r1 Round 17: r1 - T1 - r2 t2 r3 w t3 w r1 Round 18: r1 - T1 - r2 t2 r3 w t3 w r1 Round 19: r1 - T1 - r2 t2 r3 w t3 w r1 Round 20: r1 - T1 - r2 t2 r3 w t3 w r1 Round 21: r1 t1 r2 - t2 w r3 - T3 w r1 Round 22: r1 t1 r2 - t2 w r3 - T3 w r1 Round 23: r1 w t1 r2 - t2 w r3 - T3 w r1 Round 24: r1 w t1 r2 - t2 w r3 - T3 w r1 Tre trådar som sagt som delar på tre resurser, trådarna kan vara i två tillstånd, 1: sovandes (SLEEP ovan) och 2: vilja ha resurser (WANT ovan). Slumpfunktionen choose() skapar slumptal som gör att trådarna gör olika saker. Programmets progression beskrivs grafiskt, likt laboration 3, men lite enklare, en rad, till exempel nr 23 ovan: Round 23: r1 w t1 r2 - t2 w r3 - T3 w r1 betyder att tråd 1 (som kodas med t1) vill ha resurs r1, den väntar på denna alltså, tråd 2 (t2) äger r2, det symboliseras av ett streck mellan den grafiska representationen för r2 och t2. På samma sätt ser vi att tråd 3
7 UPPGIFTER AV FÖRESLAGEN TENTAMENSKARAKTÄR, LÅTSASTENTA DEN 27 FEBRUARI äger r3 och väntar på t1. Egentligen ska t3 äga r1 men programmet är inte riktigt stabilt. Det kommer dock inte att ha så stor betydelse för svaret på fr. 1. Kan deadlock uppstå i detta program? Varför varför inte? 2. Om deadlock kan uppstå, skriv om programmet så att deadlock säkert inte uppstår. ändra så lite som m jligt i koden. 3. Skriv sedan om programmet så att deadlock säkert uppstår genom att återigen ändra så lite som möjligt i koden. Svara i två separata programfiler där du i ena filen skriver in svaret på delfåga 1.
(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
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
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
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
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
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.
... 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
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
#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
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
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
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
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
KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012
KTH STH TENTAMEN HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny Panrike och
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
read Systemanrop i UNIX Exempel med read & write write int antal_tkn, fd, count; char buffer[size]; antal_tkn = read(fd, buffer, count);
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
Tillfälle 10 (F): Sockets i C, grundläggande IP och Client/Server-applikationer
Tillfälle 10 (F): Sockets i C, grundläggande IP och Client/Server-applikationer I föreläsning 1 gavs en mycket kort översikt till kommunikation via nätverk, vi ska nu se noggrannare på den tekniska bakgrunden
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
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
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
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
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
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
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
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
#include <stdio.h> #include <string.h>
#include #include void fun(char s[]) int i=-1; while(s[++i]!=0) if('a'
Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13.00. Omtentamen i Programmering C, Fri, Kväll, 050108.
1(8) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13.00. Denna tenta kommer att vara färdigrättad Fr 14/1 och kan då hämtas på mitt tjänsterum,
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
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,
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,
Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,
Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1 Tisdagen den 7 juni 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman inom C programmering.
HI1025 Operativsystem 7.0 hp, KTH Haninge, VT2017
HI1025 Operativsystem 7.0 hp, KTH Haninge, VT2017 Del 3 av kursen: Trådar mm. Möte 13 (Föreläsning, FL3): Trådar och processer, synkronisering Inledning Ett datorsystem har vi sett kan innehålla parallella
BMI = (vikt i kg) / (längd i m) 2. Lösningsförslag
HI1024 TEN2 2013-10-28 Betygsgränser: Fx-8, E-9, D-11, C-12, B-14, A-16 (MAX-18) Generella rättningsnormer: Mycket dåliga variabelnamn ger -1p totalt på provet vid andra tillfället Inga eller dåliga kommentarer
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.
Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,
Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman
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
Planering Programmering grundkurs HI1024 HT TIDAA
Planering Programmering grundkurs HI1024 HT 2016 - TIDAA Föreläsning V35 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning
Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp
Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen
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
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ö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,
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ösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl
1(10) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 13.00. Denna tenta kommer att vara färdigrättad Må 22/3 och kan då hämtas på mitt
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,
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
Ö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ämna in en ifylld kursvärdering tillsammans med tentan! Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl
1(8) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lämna in en ifylld kursvärdering tillsammans med tentan! Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 19.00. Denna tenta kommer att
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
Planering Programmering grundkurs HI1024 HT 2014
Planering Programmering grundkurs HI1024 HT 2014 Föreläsning V36 Föreläsning 1 Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande- Interpreterande Programmeringsmiljö Hello World! Att
HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011,
KTH STH TENTAMEN HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011, 8.15-12.15 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny
HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,
KTH STH TENTAMEN HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011, 8.15-13.15 Gamla kurskoder: HI1900, 6E2950, etc. Examinator: Johnny Panrike Rättande lärare: Nicklas Brandefelt, Johnny
Föreläsning 9: Förprocessorn och stora program
Föreläsning 9: Förprocessorn och stora program Nu ska vi studera hur vi skriver stora program, vi ska inte skriva så stora program, men vi ska illustrera de verktyg som finns för att skapa en bra struktur
Tentamen. Datorteknik och realtidssystem
Tentamen Datorteknik och realtidssystem, TSEA81 Datum 2017-01-09 Lokal U1 Tid 08-12 Kurskod TSEA81 Provkod TEN1 Kursnamn Datorteknik och realtidssystem Institution ISY Antal frågor 5 Antal sidor (inklusive
Strategier för att utnytja parallella system. Peter Kjellström NSC Upplysning 2010-04-27
Strategier för att utnytja parallella system Peter Kjellström NSC Upplysning 2010-04-27 Problemet Människor tänker normalt i seriella banor 2-24 cores i en vanlig desktop/server Det finns massor med seriell
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,
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
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,
Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin
Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 Hjälpmedel: Inga hjälpmedel är tillåtna
HI1024 Programmering, grundkurs TEN2 2014-03-13
HI1024 Programmering, grundkurs TEN2 2014-03-13 KTH STH Haninge 13.15-18.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King
Uppgifter till praktiska tentan, del A. (7 / 27)
Uppgifter till praktiska tentan, del A. (7 / 27) I. Sortering/Sökning: III II. Representation/Omvandling/format/protokoll: II III. Strukturering: II I alla problem, där bokstäver förekommer, antar vi att
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
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
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
Instruktioner för att kunna programmera på skolans datorer
Instruktioner för att kunna programmera på skolans datorer De här instruktionerna är viktiga att känna väl till inför tentamen samt inför laborationsredovisningar. Många av er kommer att använda bärbara
Introduktion till programmering, hösten 2011
Föreläsning 1 Programmering är ett hantverk. Det betyder att man inte kan läsa sig till den förmågan, man måste träna och man tränar genom att skriva mer och mer avancerade program. Programmering förutsätter
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.
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
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
Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer
Dagens OS En översikt av dagens OS Titt på hur de gör Unix, Linux och Windows Unix Många varianter Mycket gemensamt Unix En del som skiljer Vanliga program, shell, etc System calls Interupts and traps
Tentamen i. för D1 m fl, även distanskursen. lördag 19 januari 2013
1 of 7 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen
Trådar. Aktiva objekt
Föreläsning 11 Trådar 1 Aktiva objekt Det är välkänt från vardagslivet att saker händer samtidigt. Aktiva objekt gör saker på eget initiativ, medan passiva objekt endast gör saker när de blir ombedda.
Planering Programmering grundkurs HI1024 HT 2015 - data
Planering Programmering grundkurs HI1024 HT 2015 - data Föreläsning V36 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning
Programmering, grundkurs, 8.0 hp HI1024, TEN1. Fredagen den 2 mars 2012
Programmering, grundkurs, 8.0 hp HI1024, TEN1 Fredagen den 2 mars 2012 Tentamen består av två delar, del A och del B. Del A innehåller 4 kryssfrågor på olika teman inom C programmering. Varje fråga är
Indicerade variabler
Indicerade variabler ARRAYER kan vara VEKTORARRAYER eller MATRISARRAYER Deklaration och användning av array (=vektorarray) Array och for-loop Slumptal Arrayer i två dimensioner (= matrisarray, matris)
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....................
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:
C++ Objektorientering - Klasser. Eric Elfving
C++ Objektorientering - Klasser Eric Elfving 1 / 20 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data till en ny datatyp. Ett problem med struct är åtkomst... 2 / 20 Följande
Ö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
TENTAMEN OOP
TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Programmering av inbyggda system 2014/2015
Programmering av inbyggda system 2014/2015 Sammanfattning Kursens syften är att vara en introduktion till konstruktion av små inbyggda system och att ge en förståelse för hur imperativa styrstrukturer
*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)
HI1024 Programmering, grundkurs TEN2 2015-10-30
HI1024 Programmering, grundkurs TEN2 2015-10-30 KTH STH Haninge 8.15-13.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King
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
Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)
Grundläggande programmering med C# Provmoment: Ladokkod: Tentamen ges för: 7,5 högskolepoäng TEN1 NGC011 Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) (Ifylles av student) (Ifylles av student)
Operativsystem (IS1350) :00-12:00
Operativsystem (IS1350) 2017-03-15 08:00-12:00 Namn: Instruktioner Betyg Du får endast ha med dig skrivmateriel. Mobiler etc skall lämnas till tentamensvakterna. Svaren skall lämnas på dessa sidor, använd
Tentamen i TDP004 Objektorienterad Programmering Praktisk del
Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2011-08-22 Tid: 14-18 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 281456 Jourhavande kommer att besöka skrivsalarna ungefär
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.
Grundläggande programmering med C# 7,5 högskolepoäng
Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)
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
Det finns många flaggor till g++,
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.
DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin
DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:
Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp
Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen
Posix Threads. En studie i förvirring eller Halleluja! Peter Eriksson, Signum Support AB 1
Posix Threads En studie i förvirring eller Halleluja! Peter Eriksson, Signum Support AB 1 Innehåll l Översikt l Programmering l Kompilering l Vanliga problem l Dokumentation l Övrigt Peter Eriksson, Signum
Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.
Sockets: server with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.Text_IO; with TJa.Sockets; use TJa.Sockets; procedure Server is -- Servern
Varför behövs det? I Allegro finns t.ex. stöd för:
Allegro Introduktion Översikt vad är Allegro? Vad är lib och h-fil Kolla kodexempel Strukturen på ett Allegrospel Hur kommer jag igång? Var kan jag läsa mer Addons Alternativ Vad är Allegro? Ett spelprogrammeringsbibliotek
Trådar och Multiprocessorer. Föreläsning 6
Trådar och Multiprocessorer Föreläsning 6 Trådar och multiprocessorer Hur skriver man program som hanterar många saker samtidigt, t.ex. en web-server som hanterar många samtidiga begäran från olika klienter?
Operativsystem ID2200/06 omtentamen :00-12:00
Operativsystem ID2200/06 omtentamen 2017-06-07 8:00-12:00 Instruktioner Du får, förutom skrivmateriel, endast ha med dig en egenhändigt handskriven A4 med anteckningar. Mobiler etc skall lämnas till tentamensvakterna.
Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010
Föreläsning 6 Kapitel 5 5.1 switch-satsen Vi ser på ett par exempel ur boken: int a; srand(time(0)); a=rand()%6+1; if(a==1) printf("hej Du glade\n"); else if(a==2) printf("god dag\n"); else if(a==3) printf("är
Programmering av inbyggda system. Pekare och Arrayer. Viktor Kämpe
Pekare och Arrayer Viktor Kämpe Pekare Pekarens värde är en adress. Pekarens typ berättar hur man tolkar bitarna som finns på adressen. unsigned char* pek 0x3026 0x3026 0110 0001 typ värdet är en adress...