Dagens tema: Parallellstyring

Save this PDF as:
 WORD  PNG  TXT  JPG

Størrelse: px
Begynne med side:

Download "Dagens tema: Parallellstyring"

Transkript

1 Nyttige forklaringer Sikker opprettelse av nye prosesser Hva er en kommandotolker? Dagens tema: Parallellstyring Generelt Synkronisering med filer Synkronisering med rør Synkronisering med felles lager Ark 1 av 26 Forelesning

2 Hvordan kvele et UNIX-system? Selv om UNIX-implementasjoner er godt sikret, finnes det kode som kveler de aller fleste: while(1) {... fork();... hvor det ikke er tilstrekkelig mange kall på wait. Som en løsning har jeg skrevet safefork som kun tillater seks prosesser mer; forøvrig oppfører den seg akkurat som fork. Koden ligger på ~in147/kode/safefork.c. Alle IN147-studenter anmodes intenst om å bruke safefork i stedet for fork. Kopiér filen til området der programmet ditt ligger. Forelesning Ark 2 av 26

3 Kommandotolkeren En kommandotolker (ofte kalt «shell» på engelsk) er et program som leser brukerens kommandolinjer og kaller de riktige programmene. De vanligste kommandotolkerne heter sh (Bourne shell), csh (C shell) og bash («Bourne-again shell»). Snart kommer ifish (Ifi shell). En kommandotolker fungerer grovt sett slik: while (1) { skriv klarsignal ( prompt ) les brukerens kommandolinje splitt linjen i kommando og parametre if ( tolkerkommando som exit eller cd ) { utfør kommandoen else{ if(safefork()==0){ finn programfilen til kommandoen execve( programfil, parametre, omgivelse ); else{ vent til barnet er ferdig Forelesning Ark 3 av 26

4 Hvordan finne programmene? Når brukeren gir en kommando som tail, hvilken programfil menes da? Det finnes (foreløbig) 24 åpne filer som heter tail på systemet. Omgivelsesvariabelen PATH forteller hvilke filområder som kommandotolkeren skal lete i: maskin navn> printenv PATH /home/ansatte/03/dag/bin:/local/x11r5/bin:/local/x11r5/bin/pbm:/local/java/bin: /local/bin:/local/ssh/bin:/local/bin/msdos:/opt/sunwspro/bin:/usr/openwin/bin: /usr/ccs/bin:/usr/ucb:/usr/bin:/local/gnu/bin:/local/qt/bin:.: /hom/dag/public:/local/drift/bin:/local/metamail/bin De aktuelle områdene er angitt med kolon som skilletegn. Hvis man lurer på hvilken programfil som velges, kan man skrive maskin navn> which tail /usr/ucb/tail Forelesning Ark 4 av 26

5 Bakgrunn om parallellstyring Fraktalprogrammet tar 26 sekunder å produsere på SGI-maskinen modsognir når vi er alene der. Hvorledes kan det gjøre raskere? Forbedre algoritmen? Lite å hente her. (Jeg bruker allerede cc -O.) Stjele prosessortid fra andre? Ingen god løsning. Parallellisering? Mulighet med størst potensiale. Forelesning Ark 5 av 26

6 Parallellisering En naturlig parallellversjon av fraktalprogrammet består av én eller flere prosesser som beregner punkter i fraktalbildet, og én prosess som tegner opp punktene. De evige spørsmål Når det er snakk om parallellprogrammering, er det alltid to spørsmål som må besvares: Hvordan skal data overføres? Hvordan skal arbeidet synkroniseres? Begrepet parallellstyring omfatter disse to tingene. Forelesning Ark 6 av 26

7 Polling og avbrudd Når vi har flere parallelle prosesser, vil de gå med ulik hastighet. Vi ønsker at disse kan kommunisere med hverandre for å synkronisere kjøringen, overbringe data eller fordi en feil har oppstått. Hvordan skal så disse prosessene kommunisere? På laveste nivå finnes det tre generelle muligheter: polling, avbrudd, og flaggavbrudd. Forelesning Ark 7 av 26

8 En analogi Anta at du skal på restaurant; din venn/venninne Inge bestiller bord. Polling Du ringer ofte, f.eks. hvert 5. minutt. +: Enkelt å avtale : Kaster bort mye tid. : Kan ringe for sent. Avbrudd Inge ringer deg. +: Kaster ikke bort tid. +: Øyeblikkelig respons. : Avbrudd på ubeleilig tidspunkt. Flaggavbrudd Du skaffer deg en automatisk telefonsvarer. +: Kaster ikke bort mye tid. +: Ikke avbudd på ubeleilig tidspunkt. : Ikke øyeblikkelig respons. Forelesning Ark 8 av 26

9 Parallellitet i UNIX UNIX benytter mer høynivå mekanismer for parallellstyring. Disse er laget for «aktiv» men «grovkornet» parallellitet: Det er ganske billig å opprette nye prosesser. Det antas at prosesser normalt kommuniserer lite eller ingenting. Opprettelse av nye prosesser Som tidligere nevnt, opprettes nye prosesser ved kall på fork. Om ønsket, kan prosessens innhold endres ved å kalle på execve. Forelesning Ark 9 av 26

10 Parallellstyring med filer Hovedprogrammet main Hovedprogrammet starter n barneprosesser til å gjøre hver sin del av jobben; når de er ferdige kan den lese filene og tegne opp vinduet. int main(int argc, char *argv[]) { time_t start_tid = time(null); int n_proc, status, ix; char f_name[200]; n_proc = argc <= 1? 1 : atoi(argv[1]); for (ix = 1; ix <= n_proc; ++ix) { if(safefork()==0){ write_file(ix, (ix-1)*nx/n_proc, ix*nx/n_proc-1); exit(0); for (ix = 1; ix <= n_proc; ++ix) wait(&status); x147open(nx, NY); for (ix = 1; ix <= n_proc; ++ix) { plot_file(ix); sprintf(f_name, "/tmp/frak-%d.data", ix); unlink(f_name); printf("det hele tok %d sekunder.\n", time(null)-start_tid); x147pause(); return 0; Forelesning Ark 10 av 26

11 Funksjonen write file Denne funksjonen lager filen /tmp/frak-p num.data for ix 1 ix ix 2. void write_file(int p_num, int ix1, int ix2) { FILE *f; char f_name[200]; float x, y; int ix, iy; sprintf(f_name, "/tmp/frak-%d.data", p_num); f = fopen(f_name,"w"); for (ix = ix1; ix <= ix2; ++ix) { x = x1+ix*(x2-x1)/(nx-1); for (iy = 0; iy < NY; ++iy) { y = y1+iy*(y2-y1)/(ny-1); fprintf(f, "%d %d %d\n", ix, iy, fraktal(x,y,255.0,max)); fclose(f); Forelesning Ark 11 av 26

12 Funksjonen plot file Denne funksjonen tegner opp data fra filen frak-p num.data. void plot_file(int p_num) { FILE *f; char f_name[200]; int ix, iy, fval; sprintf(f_name, "/tmp/frak-%d.data", p_num); f = fopen(f_name,"r"); while (fscanf(f, "%d%d%d", &ix, &iy, &fval)>0) { x147plot(ix, iy, fval); if (iy == 0) { x147sync(); if (x147done) exit(0); fclose(f); Forelesning Ark 12 av 26

13 Resultater Dette forsøket på parallellisering falt ikke heldig ut: Ikke-parallell tegning 26s frakfil 1 41s frakfil 2 27s frakfil 3 23s frakfil 4 22s frakfil 5 22s frakfil 6 21s Vurdering + Enkelt å programmere. Åpning, skriving, lukking, lesing og fjerning av filer tar ganske mye tid. Hovedprogrammet kan ikke tegne noe før alle barna er ferdige med beregningene. Forelesning Ark 13 av 26

14 Rør i UNIX UNIX-rør brukes når barneprosesser vil kommunisere med søsken eller sitt opphav. Rør brukes ofte på kommandolinjen for å koble standard ut i det første programmet til standard inn i det andre: maskin navn> grep dag logg-fil sort more Rør opprettes med systemkallet pipe: int pip[2];. pipe(pip); Resultatet er et rør med to filnumre: pip[0] benyttes til lesing. pip[1] benyttes til skriving. Forelesning Ark 14 av 26

15 Å skrive til et rør Man kan sende n byte med data (lagret i buffer) til et rør med systemkallet w_bytes = write(pip[1], buffer, n); Returverdien w bytes forteller hvor mange byte som faktisk ble skrevet (og det vil vanligvis være n). Å lese fra et rør Man kan lese fra et rør med kommandoen r_bytes = read(pip[0], buf2, n); Data skal plasseres i buf2 hvor det er plass til n byte. Returverdien r bytes forteller hvor mange byte som faktisk ble mottatt; det vil ofte være mindre enn n. Synkronisering Man oppnår synkronisering ved at read om nødvendig blir blokkert til det er mer data å lese, og write må vente når røret er fullt. Forelesning Ark 15 av 26

16 Eksempel Bruk av rør IN 147 Program og maskinvare #include <stdlib.h> #include <stdio.h> #include <unistd.h> extern pid_t safefork(); int main(void) { int pip[2]; pipe(pip); if (safefork()) { /* Foreldren */ char *melding = "Hei på deg!"; write(pip[1], melding, strlen(melding)+1); else { /* Barnet */ char buffer[20]; int n; n = read(pip[0], buffer, 20); printf("mottatt %d tegn: %s \n", n, buffer); exit(0); return 0; Kjøring Mottatt 12 tegn: Hei på deg! Dette fungerer fordi selve røret eksisterer «utenfor» prosessen; følgelig blir ikke røret kopiert av safefork, bare referansene i pip. Forelesning Ark 16 av 26

17 Fraktalprogrammet med rør Hovedprogrammet starter barneprosessene og henter så kolonner fra røret for å tegne dem ut. int main(int argc, char *argv[]) { int pip[2]; int n_done=0, n_proc, n, iy; time_t start_tid = time(null); col_data b; n_proc= argc <= 1? 1 : atoi(argv[1]); pipe(pip); for (n = 1; n <= n_proc; ++n) { if (safefork()==0) { gen_area(pip, NX*(n-1)/n_proc, NX*n/n_proc-1); exit(0); x147open(nx, NY); while (n_done < n_proc) { n = read(pip[0], &b, sizeof(b)); if (b.xpos >= 0) { for (iy = 0; iy < NY; ++iy) x147plot(b.xpos, iy, b.ycol[iy]); else ++n_done; x147sync(); if (x147done) exit(0); printf("det hele tok %d sekunder.\n", time(null)-start_tid); x147pause(); Forelesning Ark 17 av 26

18 For å redusere lesetiden sendes én og én kolonne med data over røret. typedef struct { int xpos; /* -1="finished" */ unsigned char ycol[ny]; col_data; Funksjonen gen area regner ut kolonnene i buf og skriver dem til røret etterpå. void gen_area(int pip[], int xstart, int xend) { float x, y; int ix, iy; col_data buf; for (ix = xstart; ix <= xend; ++ix) { buf.xpos = ix; x = x1 + ix*(x2-x1)/(nx-1); for (iy = 0; iy < NY; ++iy) { y = y1 + iy*(y2-y1)/(ny-1); buf.ycol[iy] = fraktal(x, y, 255.0, MAX); write(pip[1], &buf, sizeof(buf)); buf.xpos = -1; write(pip[1], &buf, sizeof(buf)); Når prosessen er ferdig, sendes en kolonne med xpos= 1for å markere dette. Forelesning Ark 18 av 26

19 Kjøretid Ikke-parallell tegning 26s frakpipe 1 23s frakpipe 2 12s frakpipe 3 10s frakpipe 4 10s frakpipe 6 9s Vurdering av rør Dataoverføring skjer gjennom rørene, en col data hver gang. Synkronisering skjer ved at tegneprogrammet blokkeres inntil det er data i røret, og så leser data derfra. + Enkel programmering. + Sikker synkronisering. Kallene på read og write koster litt (men mye mindre enn lesing og skriving av filer). Forusetter at alle prosessene startes av samme urprosess. Forelesning Ark 19 av 26

20 Flere mekanismer I «klassisk UNIX» erfilerogrørdeeneste kommunikasjonsmulighetene. Dette er ofte ikke nok. Utviklerne av System V-varianten av UNIX laget derfor en utvidelse kalt SVIPC («System V IPC»). Denne utvidelsen omfatter felles lager (omtales i dag) semaforer (omtales neste uke) meldinger Felles lager Et felles lager kan brukes av flere prosesser fordi det ligger utenfor de vanlige prosessene. Det fjernes heller ikke automatisk når prosessene er ferdige. IPC = «interprocess communication». Forelesning Ark 20 av 26

21 Opprettelse av felles lager Et felles lager ligger tilsynelatende i alle prosesser som har tilgang til det. Følgende operasjoner må til for å opprette et felles lager med plass til 2 int-verdier: #include <sys/ipc.h> #include <sys/shm.h> int sh_mem_id, *sh_mem; sh_mem_id = shmget(ipc_private, /* Nøkkel */ 2*sizeof(int), /* Størrelse */ 0700); /* Beskyttelse */ sh_mem = shmat(sh_mem_id,0,0); Verdiene er nå tilgjengelige som sh mem[0] og sh mem[1]. Forelesning Ark 21 av 26

22 Fjerning av et felles lager Et felles lager fjernes ikke automatisk når en prosess dør. Følgende kall må til: shmctl(sh_mem_id, IPC_RMID, 0); Sjekk det godt Hvis et program feilet, kan man sjekke om det finnes et felles lager som ikke ble fjernet: maskin navn> ipcs -m Shared Memory: T ID KEY MODE OWNER GROUP m x rw dag dag Da kan lageret fjernes med kommandoen maskin navn> ipcrm -m 6901 Husk: Felles lager er en meget begrenset ressurs! Forelesning Ark 22 av 26

23 En løsning med felles lager Hovedprogrammet oppretter det felles lageret og barneprosessene. Det leser også data fra lageret og tegner det ut. int main(int argc, char *argv[]) { int n_proc, n_done = 0, nc, iy; time_t start_tid = time(null); n_proc= argc <= 1? 1 : atoi(argv[1]); sh_mem_id = shmget(ipc_private,sizeof(col_data),0700); sh_mem = shmat(sh_mem_id,0,0); sh_mem->xpos = -2; x147open(nx, NY); for (nc = 1; nc <= n_proc; ++nc) { if (safefork()==0) { gen_area(nx*(nc-1)/n_proc, NX*nc/n_proc-1); exit(0); while (n_done < n_proc) { if (sh_mem->xpos >= 0) { for (iy = 0; iy < NY; ++iy) x147plot(sh_mem->xpos, iy, sh_mem->ycol[iy]); x147sync(); if (x147done) { shmctl(sh_mem_id, IPC_RMID, 0); exit(0); else if (sh_mem->xpos == -1) ++n_done; printf("det hele tok %d sekunder.\n", time(null)-start_tid); x147pause(); shmctl(sh_mem_id, IPC_RMID, 0); return 0; Forelesning Ark 23 av 26

24 Funksjonen gen area beregner farger og bygger opp buf. Når den er full, legges den i felles lager. void gen_area(int xstart, int xend) { float x, y; int ix, iy; col_data buf; for (ix = xstart; ix <= xend; ++ix) { buf.xpos = ix; x = x1 + ix*(x2-x1)/(nx-1); for (iy = 0; iy < NY; ++iy) { y = y1 + iy*(y2-y1)/(ny-1); buf.ycol[iy] = fraktal(x, y, 255.0, MAX); *sh_mem = buf; buf.xpos = -1; *sh_mem = buf; Forelesning Ark 24 av 26

25 Kjøring Resultatet blir imidlertid ikke pent, og verre jo flere prosesser vi har. Kjøringene avsluttes også oftest med x147 error: Illegal coordinates (-1,2). Dette skyldes manglende synkronisering mellom prosessene! Forelesning Ark 25 av 26

26 Vurdering Dataoverføring over felles lager fungerer fint. Synkronisering er ved hjelp av en variabel (sh mem->xpos) og det er for primitivt. Data går tapt! + Rask dataoverføring. Produsentene av data er ikke synkronisert med konsumenten! Konsumenten benytter aktiv venting! Mye tid kastes bort. Felles lager er fint til dataoverføringen, men vi trenger en synkroniseringsmekanisme. Den kommer neste uke! Forelesning Ark 26 av 26

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema Parallellitet Eksempelprogrammet Litt om X En enkelt pakke for tegning på skjerm Et program for å tegne fraktaler Kommunikasjon mellom prosesser Rør Felles lager Ark 1 av 24 Forelesning 28.4.1998

Detaljer

Dagens program. Operativsystemer Prosesser og systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer

Dagens program. Operativsystemer Prosesser og systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer Dagens program Operativsystemer Prosesser og systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer Nyttige forklaringer Sikker opprettelse av nye prosesser Hva

Detaljer

Dagens tema: Synkronisering

Dagens tema: Synkronisering Dagens tema: Synkronisering Kappløp og kritiske regioner Blokkering Produsent/konsument-problemet Semaforer Fraktaleksemplet med semaforer og delt lager. «De spisende filosofer»: 3 gale løsninger En foreløbig

Detaljer

Dagens tema: Synkronisering

Dagens tema: Synkronisering Dagens tema: Synkronisering Kappløp og kritiske regioner Blokkering Produsent/konsument-problemet Semaforer Fraktaleksemplet med semaforer og delt lager. «De spisende filosofer»: 3 gale løsninger En foreløbig

Detaljer

IN 147 Program og maskinvare. Dagens tema:

IN 147 Program og maskinvare. Dagens tema: Dagens tema: Semaforer Hva er en semafor? Produsent/konsument-problemet Fraktaleksemplet med semaforer og delt lager. Klassisk eksempel: «De spisende filosofer» Vranglås «De spisende filosofer»: løsning

Detaljer

Oppsummering av IN147 siste del Operativsystemer Parallellisering Veien videre

Oppsummering av IN147 siste del Operativsystemer Parallellisering Veien videre Oppsummering av IN147 siste del Operativsystemer Parallellisering Veien videre Ark 1 av 12 Forelesning 12.5.1999 Operativsystemer I kurset har vi fokusert på UNIX, men prinsippene gjelder i større eller

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema Operativsystemer Hva er et operativsystem? En meget kort oversikt over operativsystemenes historie Systemkall i UNIX Hente prosessens nummer Starte prosesser Vente på prosesser Utføre programmer

Detaljer

Dagens tema: Liten repetisjon Håndtering av statusverdier

Dagens tema: Liten repetisjon Håndtering av statusverdier Dagens tema: Liten repetisjon Håndtering av statusverdier Parallellitet Generelt Fraktaler Generelt Julia-kurven Vindussystemet X Parallellitet i UNIX Signaler Ark 1 av 24 Forelesning 2.4.2001 Kort repetisjon

Detaljer

Dagens tema: Parallellisering Generelt Fraktaler Generelt Julia-kurven Vindussystemet X Parallellitet i UNIX Signaler. IN 147 Program og maskinvare

Dagens tema: Parallellisering Generelt Fraktaler Generelt Julia-kurven Vindussystemet X Parallellitet i UNIX Signaler. IN 147 Program og maskinvare Dagens tema: Parallellisering Generelt Fraktaler Generelt Julia-kurven Vindussystemet X Parallellitet i UNIX Signaler Ark 1 av 23 Forelesning 29.3.2000 Parallellitet Mange problemer krever en parallell

Detaljer

Dagens tema. Nyttige programmer Programmet make. Flyt-tall Representasjon av flyt-tall. Standarden IEEE 754. Systemkall i Unix

Dagens tema. Nyttige programmer Programmet make. Flyt-tall Representasjon av flyt-tall. Standarden IEEE 754. Systemkall i Unix Dagens tema Nyttige programmer Programmet make Flyt-tall Representasjon av flyt-tall Standarden IEEE 754 Systemkall i Unix Ark 1 av 24 Programmet make Det er mange praktiske problemer forbundet med programmering

Detaljer

Dagens tema (kapittel 15 i Englander-boken)

Dagens tema (kapittel 15 i Englander-boken) Dagens tema (kapittel 15 i Englander-boken) Prosesser Hvordan starte prosesser Å vente på prosesser Å utføre programmer Hva gjør en kommandotolker? Signaler Obligatoriske oppgave 2 Ark 1 av 25 Prosesser

Detaljer

Prosesser. Dagens tema. Hva er en prosess? En prosess er et program under utførelse.

Prosesser. Dagens tema. Hva er en prosess? En prosess er et program under utførelse. Dagens tema (kapittel 15 i Englander-boken) Prosesser Hvordan starte prosesser Å vente på prosesser Å utføre programmer Hva gjør en kommandotolker? Signaler Obligatoriske oppgave 2 Prosesser Hva er en

Detaljer

Programmeringsspråket C

Programmeringsspråket C Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger

Detaljer

Dagens tema. Parallellitet Generelt Fraktaler Polling og avbrudd Multiprosessering i UNIX Opprettelse av prosesser Signaler

Dagens tema. Parallellitet Generelt Fraktaler Polling og avbrudd Multiprosessering i UNIX Opprettelse av prosesser Signaler Dagens tema Parallellitet Generelt Fraktaler Polling og avbrudd Multiprosessering i UNIX Opprettelse av prosesser Signaler Ark 1 av 19 Forelesning 21.4.1998 Parallellitet Mange problemer krever en parallell

Detaljer

EKSAMEN. Operativsystemer. 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater.

EKSAMEN. Operativsystemer. 1. Læreboken A Practical Guide to Red Hat Linux av Mark Sobell 2. Maks. tre A-4 ark med selvskrevne notater. EKSAMEN Emnekode: ITF22506 Emne: Operativsystemer Dato: 12. desember 2007 Eksamenstid: kl. 9.00 til kl. 13.00 Hjelpemidler: 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre

Detaljer

Dagens tema INF1070. Info om C. Cs preprosessor. Feilsøking. Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29

Dagens tema INF1070. Info om C. Cs preprosessor. Feilsøking. Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29 Dagens tema Info om C Cs preprosessor Feilsøking Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29 Informasjon om C Den viktigste kilden til informasjon om C (utenom en god oppslagsbok) er

Detaljer

Informasjon om C. Dagens tema INF1070 INF1070 INF1070 INF1070. Den viktigste kilden til informasjon om C (utenom en god. C-funksjonene.

Informasjon om C. Dagens tema INF1070 INF1070 INF1070 INF1070. Den viktigste kilden til informasjon om C (utenom en god. C-funksjonene. Dagens tema Info om C Cs preprosessor Feilsøking Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 1 av 29 Dag Langmyhr,Ifi,UiO: Forelesning 31. januar 2005 Ark 2 av 29 NAME sqrt - square root function

Detaljer

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Dagens tema Dagens tema C-programmering Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Adresser og pekere Parametre Vektorer (array-er) Tekster (string-er) Hvordan ser minnet

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema Mer om C Cs preprosessor Allokering av variable Separat kompilering Programmet make Pekere i C Operasjoner på pekere Pekere og vektorer Referanseparametre Pekere til «alt» og «ingenting» Dynamisk

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema Mer om C Et eksempel til (med diverse forklaringer) Representasjon av tegn og logiske verdier Vektorer Statusverdi Innhenting av definisjoner Inkrementering og dekrementering av variable for-setningen

Detaljer

Programmeringsspråket C

Programmeringsspråket C Programmeringsspråket C Programmeringsspråket C Laget til implementasjon av Unix ved AT&Ts Bell labs i Palo Alto 1969 73. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI-standard

Detaljer

Programmeringsspråket C

Programmeringsspråket C Programmeringsspråket C Programmeringsspråket C Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI-standard i 1988;

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema Deklarasjon av nye typer Typekonvertering mellom pekere Regning med pekere Pekere til funksjoner Pekere til pekere til... Vanlige feil ved bruk av pekere Feilsøking Debuggere lint Kompilatormeldinger

Detaljer

Dagens tema. Det siste om C Pekere og vektorer. Pekere til pekere. Vanlige pekerfeil. struct-er og typedef. Lister. Feilsøking

Dagens tema. Det siste om C Pekere og vektorer. Pekere til pekere. Vanlige pekerfeil. struct-er og typedef. Lister. Feilsøking Dagens tema Det siste om C Pekere og vektorer Pekere til pekere Vanlige pekerfeil struct-er og typedef Lister Feilsøking Ark 1 av 35 Pekere og vektorer I C gjelder en litt uventet konvensjon: Bruk av et

Detaljer

Pekere og vektorer. Dagens tema. I C gjelder en litt uventet konvensjon:

Pekere og vektorer. Dagens tema. I C gjelder en litt uventet konvensjon: Pekere og vektorer I C gjelder en litt uventet konvensjon: Dagens tema Det siste om C Pekere og vektorer Pekere til pekere Vanlige pekerfeil struct-er og typedef Lister Feilsøking Bruk av et vektornavn

Detaljer

Nyttige Linux-kommandoer. Hvordan du kan jobbe mer effektivt Dag Langmyhr

Nyttige Linux-kommandoer. Hvordan du kan jobbe mer effektivt Dag Langmyhr Nyttige Linux-kommandoer Hvordan du kan jobbe mer effektivt Dag Langmyhr Trenger vi kommandovinduer i dag? Svaret er nei for de fleste brukerne, men ikke for ekspertene. Ofte går det fortere å bruke kommandoer

Detaljer

IN 147 Program og maskinvare. Vranglås De spisende filosofer Lettvektsprosesser Moderne synkroniseringsmetoder Meldinger Monitorer Linda

IN 147 Program og maskinvare. Vranglås De spisende filosofer Lettvektsprosesser Moderne synkroniseringsmetoder Meldinger Monitorer Linda Dagens tema: Vranglås De spisende filosofer Lettvektsprosesser Moderne synkroniseringsmetoder Meldinger Monitorer Linda Hvorfor nyttig? Parallellstyring brukes mye innen operativsystemer, systemprogrammer,

Detaljer

Kort notat om parallellstyring IN147

Kort notat om parallellstyring IN147 Kort notat om parallellstyring IN147 Kristin Skar 18. mai 2001 1 Kommunikasjon mellom prosesser Mange problemer man kommer borti kan kreve en paralell løsning: Man kan ha behov for økt hastighet, og dermed

Detaljer

Kapittel 1 En oversikt over C-språket

Kapittel 1 En oversikt over C-språket Kapittel 1 En oversikt over C-språket RR 2015 1 Skal se på hvordan man En innføring i C Skriver data til skjermen Lese data fra tastaturet Benytter de grunnleggende datatypene Foretar enkle matematiske

Detaljer

Del 1 En oversikt over C-programmering

Del 1 En oversikt over C-programmering Del 1 En oversikt over C-programmering 1 RR 2016 Starten C ble utviklet mellom 1969 og 1973 for å re-implementere Unix operativsystemet. Er et strukturert programmeringsspråk, hvor program bygges opp av

Detaljer

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3 Programmeringsspråket C Del 3 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen malloc

Detaljer

Dagens tema. Kort repetisjon om rutiner. Programmering i C Variable og adresser. Vektorer. Tekster. Preprosessoren. Separat kompilering

Dagens tema. Kort repetisjon om rutiner. Programmering i C Variable og adresser. Vektorer. Tekster. Preprosessoren. Separat kompilering Dagens tema Kort repetisjon om rutiner Programmering i C Variable og adresser Vektorer Tekster Preprosessoren Separat kompilering Innlesning og utskrift mot skjerm og fil Ark 1 av 31 Hva er en rutine?

Detaljer

Oving 2. Oppgave 1. #include int main(int argc, char **argv) { char *navn = argv[1]; printf ("Navnet ditt er %s\n", navn); } Oppgave 2

Oving 2. Oppgave 1. #include <stdio.h> int main(int argc, char **argv) { char *navn = argv[1]; printf (Navnet ditt er %s\n, navn); } Oppgave 2 Oving 2 Oppgave 1 int main(int argc, char **argv) char *navn = argv[1]; printf ("Navnet ditt er %s\n", navn); Oppgave 2 char navn[25]; printf( "Hei hva heter du?\n" ); scanf("%s", navn); printf ("Hei:

Detaljer

Dagens tema INF2270. Cs preprosessor. Separat kompilering av C funksjoner. C og minnet. Dag Langmyhr,Ifi,UiO: Forelesning 5. februar 2007 Ark 1 av 15

Dagens tema INF2270. Cs preprosessor. Separat kompilering av C funksjoner. C og minnet. Dag Langmyhr,Ifi,UiO: Forelesning 5. februar 2007 Ark 1 av 15 Dagens tema Cs preprosessor Separat kompilering av C funksjoner C og minnet Dag Langmyhr,Ifi,UiO: Forelesning 5. februar 2007 Ark 1 av 15 Cs preprosessor Før selve kompileringen går C kompilatoren gjennom

Detaljer

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3 Programmeringsspråket C Del 3 Michael Welzl E-mail: michawe@ifi.uio.no 29.08.13 inf1060 1 Dynamisk allokering Ofte trenger man å opprette objekter under kjøringen i tillegg til variablene. Standardfunksjonen

Detaljer

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays Oversikt C programmering 1 C programmering Introduksjon Kildekode Kompilering Hello world Hello world med argumenter 2 Funksjoner 3 Datatyper 4 Pekere og arrays 5 Kontrollstrukturer Lars Vidar Magnusson

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema: Lettvektsprosesser Moderne synkroniseringsmetoder Meldinger Monitorer Programkode er også bit-mønstre! Selvmodifiserende kode Ark 1 av 23 Forelesning 7.5.2001 Lettvektsprosesser Det er vanlig

Detaljer

Dagens tema INF1070. Signaturer. Typekonvertering. Pekere og vektorer. struct-er. Definisjon av nye typenavn. Lister

Dagens tema INF1070. Signaturer. Typekonvertering. Pekere og vektorer. struct-er. Definisjon av nye typenavn. Lister Dagens tema Signaturer Typekonvertering Pekere og vektorer struct-er Definisjon av nye typenavn Lister Dag Langmyhr,Ifi,UiO: Forelesning 24. januar 2005 Ark 1 av 20 Signaturer I C gjelder alle deklarasjoner

Detaljer

IN 147 Program og maskinvare. Velkommen til IN 147. Program- og maskinvare

IN 147 Program og maskinvare. Velkommen til IN 147. Program- og maskinvare Velkommen til IN 147 Program- og maskinvare Dagens tema: Presentasjon av kurset Litt om programmeringsspråket C Registrering av oppmøte Ark 1 av 22 Forelesning 22.1.2001 Foreleserne Sigbjørn Næss Digitaltekniker

Detaljer

Programmeringsspråket C Del 2. Michael Welzl

Programmeringsspråket C Del 2. Michael Welzl Programmeringsspråket C Del 2 Michael Welzl 1 Et eksempel Dette er lite eksempel som ber om et tall, leser det og så teller fra det nedover til 0 $> gcc countdown.c -o countdown $>./countdown ===== Countdown

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema Basistyper i C Typekonvertering Formater i printf Pekere i C En kort repetisjon om pekere Hva er egentlig en peker? Pekere til alt og ingenting Pekere som parametre Pekere og vektorer Ark 1

Detaljer

Prosesstabeller (PCB - Prosess Control Block) Se på PD: kommandoene ps og top Bakgrunnsprosesser Opprettelse av prosesser:

Prosesstabeller (PCB - Prosess Control Block) Se på PD: kommandoene ps og top Bakgrunnsprosesser Opprettelse av prosesser: Prosesser i Prosesstabeller (PCB - Prosess Control Block) Se på PD: kommandoene ps og top Bakgrunns Opprettelse av : fork og exec pid og ppid Foreldre, barn og barnebarn Utførelse av kommando i Eksempler

Detaljer

alternativer til felles hukommelse store parallelle datamaskiner Tema for denne forelesningen: in 147, våren 1999 parallelle datamaskiner 1 9

alternativer til felles hukommelse store parallelle datamaskiner Tema for denne forelesningen: in 147, våren 1999 parallelle datamaskiner 1 9 Tema for denne forelesningen: store parallelle datamaskiner alternativer til felles hukommelse in 147, våren 1999 parallelle datamaskiner 1 9 Store parallelle datamaskiner Felles hukommelse på én buss

Detaljer

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2 Programmeringsspråket C Del 2 Kjell Åge Bringsrud E-mail: kjellb@ifi.uio.no 30.08.2005 inf1060 H05 1 Et eksempel Dette er lite eksempel som ber om et tall, leser det og så teller fra det ned til 0. 30.08.2005

Detaljer

Dagens tema: Datastrukturer

Dagens tema: Datastrukturer Dagens tema: Datastrukturer Matriser Dynamiske matriser Ringbuffere Mengder Lister Enkle listeoperasjoner Programmering av en listepakke Lister med hode og hale Toveislister Onsdag 24.3 Avslutning av IN147A

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens program Repetisjon Basistyper i C Typekonvertering Formater i printf Deklarasjon av nye typer Pekere i C En kort repetisjon om pekere Pekere som parametre Pekere og vektorer Regning med pekere Pekere

Detaljer

Oversikt over IN147(A):

Oversikt over IN147(A): Oversikt over IN147(A): Programmerings- og operativsystem-delen Oppsummering for IN147(A) Bit-mønstre Tallsystemer MIPS assemblerspråk C Datatyper Tillegg for de som tar hele IN147 Operativsystemer Parallellisering

Detaljer

IN 147 Program og maskinvare. Vanlige feil ved bruk av pekere Feilsøking Debuggere

IN 147 Program og maskinvare. Vanlige feil ved bruk av pekere Feilsøking Debuggere Dagens tema Vanlige feil ved bruk av pekere Feilsøking Debuggere lint Kompilatormeldinger Egne testutskrifter Flyt-tall (P&H: 4.8) Representasjon av flyt-tall Standarden IEEE 754 MIPS-operasjoner på flyt-tall

Detaljer

Signaturer. Dagens tema. En vanlig feil int-funksjon. Dette kan noen ganger gi rare feilmeldinger: INF1070 INF1070 INF1070 INF1070

Signaturer. Dagens tema. En vanlig feil int-funksjon. Dette kan noen ganger gi rare feilmeldinger: INF1070 INF1070 INF1070 INF1070 Dagens tema Signaturer Tyekonvertering Pekere og vektorer struct-er Definisjon av nye tyenavn Lister Dag Langmyhr,Ifi,UiO: Forelesning 24. januar 25 Ark 1 av 2 Dag Langmyhr,Ifi,UiO: Forelesning 24. januar

Detaljer

Definisjon av prosess

Definisjon av prosess Prosesser og tråder Definisjon av prosess Enkel definisjon: En prosess er et program som kjører på datamaskinen Mer presis definisjon: En prosess er en samling av ressurser som er nødvendige for å utføre

Detaljer

Dagens tema. Rutiner i LC-2 Og her er tilsvarende kode for LC-2: Funksjoner i C Her er det samme programmet i C: Kort repetisjon om rutiner

Dagens tema. Rutiner i LC-2 Og her er tilsvarende kode for LC-2: Funksjoner i C Her er det samme programmet i C: Kort repetisjon om rutiner Dagens tema Kort repetisjon om rutiner Programmering i C Variable og adresser Vektorer Tekster Preprosessoren Separat kompilering Innlesning og utskrift mot skjerm og fil Hva er en rutine? En rutine (også

Detaljer

Programmeringsspråket C Del 2. Hans Petter Taugbøl Kragset

Programmeringsspråket C Del 2. Hans Petter Taugbøl Kragset Programmeringsspråket C Del 2 Hans Petter Taugbøl Kragset Repetisjon I C er ikke array en egen type, men variabler kan være arrayer! 28.08.17 Hans Petter Taugbøl Kragset 2 Arrays Java int[] arr1 = {1,

Detaljer

Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities.

Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities. Oversikt UNIX shell 1 UNIX shell Beskrivelse Bash 2 Kommandolinje som brukergrensesnitt 3 Input og output 4 Bash builtins 5 Linux utilities Lars Vidar Magnusson () Forelesning i Operativsystemer 30.08.2011

Detaljer

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Dagens tema C-programmering Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes. Adresser og pekere Parametre Vektorer (array-er) Tekster (string-er) Hvordan ser minnet ut? Variabler,

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema Deklarasjon av nye typer Typekonvertering Regning med pekere Pekere til funksjoner Pekere til pekere til... Vanlige feil ved bruk av pekere Feilsøking Debuggere lint Kompilatormeldinger Egne

Detaljer

Ark 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk

Ark 1 av 18. programmeringsspråkenes. Velkommen til IN 211. verden. IN 211 Programmeringsspråk Ark 1 av 18 IN 211 Programmeringsspråk Velkommen til programmeringsspråkenes verden IN 211 Forelesning 20.8.2001 Foreleser Ragnhild Kobro Runde E-post: ragnhilk@ifi.uio.no Kontor: 3345 Treffetid: torsdager

Detaljer

Oppgavene 1, 2, 4, 5, 6, 9, 12 og 13 passer best til å løses ved en datamaskin.

Oppgavene 1, 2, 4, 5, 6, 9, 12 og 13 passer best til å løses ved en datamaskin. Oppgaver uke 35: Oppgavene 1, 2, 4, 5, 6, 9, 12 og 13 passer best til å løses ved en datamaskin. Oppgave 1. Skriv et C-program som leser mål i tommer og skriver det ut i fot og tommer. (Det er 12 tommer

Detaljer

Dagens tema: Enda mer MIPS maskinkode

Dagens tema: Enda mer MIPS maskinkode Dagens tema: Enda mer MIPS maskinkode (P&H: 3.6 3.8 + 6.1 + A.6 + A.10) Pseudoinstruksjoner Flere instruksjoner Mer om funksjonskall Stakken Avhengigheter Direktiver Alt er bit! Kommunikasjon med C Ark

Detaljer

Sikkerhet: Virus Sikkerhet i operativsystemet Maskinstøtte for sikkerhet Trojanske hester Ormer. IN 147 Program og maskinvare.

Sikkerhet: Virus Sikkerhet i operativsystemet Maskinstøtte for sikkerhet Trojanske hester Ormer. IN 147 Program og maskinvare. Sikkerhet: Virus Sikkerhet i operativsystemet Maskinstøtte for sikkerhet Trojanske hester Ormer Ark 1 av 14 Sikkerhet og virus Virus Virus er programmer som «infiserer» andre programmer slik at de endrer

Detaljer

Dagens tema INF1070. Vektorer (array er) Tekster (string er) Adresser og pekere. Dynamisk allokering

Dagens tema INF1070. Vektorer (array er) Tekster (string er) Adresser og pekere. Dynamisk allokering Dagens tema Vektorer (array er) Tekster (string er) Adresser og pekere Dynamisk allokering Dag Langmyhr,Ifi,UiO: Forelesning 23. januar 2006 Ark 1 av 23 Vektorer Alle programmeringsspråk har mulighet til

Detaljer

En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig.

En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig. Synkronisering En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen. Ofte vil det være flere prosesser/tråder på datamaskinen samtidig. Behov for synkronisering Mange prosesser/tråder

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema: Oversikt over min del av IN147A Bit-mønstre Tallsystemer MIPS assemblerspråk C Datatyper... samt for de som tar hele IN147 Operativsystemer Parallellisering Pensum Eksamen Veien videre Ark

Detaljer

IN 147 Program og maskinvare

IN 147 Program og maskinvare Dagens tema: Kort repetisjon Mengder Lister Enkle listeoperasjoner Programmering av en listepakke Lister med hode og hale Toveislister Hvaeretoperativsystem? En meget kort oversikt over operativsystemenes

Detaljer

Cs preprosessor. Dagens tema. Betinget kompilering

Cs preprosessor. Dagens tema. Betinget kompilering Dagens tema Dagens tema Inkludering av filer Cs preprosessor Cs preprosessor Separat kompilering av C funksjoner C og minnet Før selve kompileringen går C kompilatoren gjennom koden med en preprosessor

Detaljer

EKSAMEN. Operativsystemer. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene.

EKSAMEN. Operativsystemer. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene. EKSAMEN Emnekode: ITF22506 Emne: Operativsystemer Dato: 9. desember 2009 Eksamenstid: kl. 9.00 til kl. 13.00 Hjelpemidler: 1. Læreboken "A Practical Guide to Red Hat Linux" av Mark Sobell 2. Maks. tre

Detaljer

Dagens tema C, adresser og pekere

Dagens tema C, adresser og pekere Dagens tema C, adresser og pekere (Kapittel 17 i Patt&Patel-boken) Variable og adresser Pekervariable Parametre Dynamisk allokering Stakker og ringbuffere Ark 1 av 26 Adresser Som nevnt tidligere ligger

Detaljer

Vektorer. Dagens tema. Deklarasjon. Bruk

Vektorer. Dagens tema. Deklarasjon. Bruk Dagens tema Dagens tema Deklarasjon Vektorer Vektorer (array-er) Tekster (string-er) Adresser og pekere Dynamisk allokering Alle programmeringsspråk har mulighet til å definere en såkalte vektor (også

Detaljer

Del 4 Noen spesielle C-elementer

Del 4 Noen spesielle C-elementer Del 4 Noen spesielle C-elementer 1 RR 2016 Header-filer inneholder Prototypene til funksjonene i standard biblioteket Verdier og definisjoner som disse funksjonene bruker #include #include

Detaljer

Dagens tema. Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere

Dagens tema. Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere Dagens tema Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere Formål: Nyttige å bruke under programmeringen Trening i programmering i C

Detaljer

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF Introduksjon Vi begynner med å bygge en enkel datamaskin. Etter å ha brukt litt tid på å bli kjent med hvordan datamaskinen virker, bruker vi den

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Eksamensdato: 21. desember 2005 Varighet: 3 timer ( 9:00 12:00 ) Avdeling for informatikk og e-læring Fagnummer: Fagnavn: LO249D Operativsystemer med Linux Klasser: FU (1. ING)

Detaljer

Dagens tema. Adresser som parametre Dynamisk allokering Signaturer Definisjon av nye typenavn Typekonvertering Pekere og vektorer

Dagens tema. Adresser som parametre Dynamisk allokering Signaturer Definisjon av nye typenavn Typekonvertering Pekere og vektorer Dagens tema Dagens tema Adresser som parametre Dynamisk allokering Signaturer Definisjon av nye typenavn Typekonvertering Pekere og vektorer Adresser som parametre Et eksempel La oss lage en funksjon som

Detaljer

GJØVIK INGENIØRHØGSKOLE

GJØVIK INGENIØRHØGSKOLE GJØVIK INGENIØRHØGSKOLE Postboks 191-2801 GJØVIK KANDIDATNUMMER: E K S A M E N FAGNAVN: FAGNUMMER: Programmering i C++ / Pascal / C LO154A, LO151A og LO142A EKSAMENSDATO: 7. juni 1994 TID: 09.00-14.00

Detaljer

Lynkurs i shellprogrammering under Linux

Lynkurs i shellprogrammering under Linux Lynkurs i shellprogrammering under Linux Interaktiv bruk av shell Shell/skall er en applikasjon som lar bruker taste inn tekstlige kommandoer til Linux en og en linje om gangen (leser linjer fra stdin).

Detaljer

Hvordan en prosessor arbeider, del 1

Hvordan en prosessor arbeider, del 1 Hvordan en prosessor arbeider, del 1 Læringsmål Kompilator, interpret og maskinkode CPU, registre Enkle instruksjoner: de fire regnearter Mer informasjon om temaet Internett Lokalnett (LAN) Mitt program

Detaljer

Semantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket!

Semantikk. Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Semantikk. Semantikk. En måte å svare på: gi semantikken til språket! agens tema Kjøresystemer (Ghezzi&Jazayeri.,.) Innledende om semantikk Operasjonell semantikk / SIMPLESEM Bokholderi og minneorganisering Forskjellige språkklasser... en beskrivelse av hva som skjer når

Detaljer

INF1010 Tråder II 6. april 2016

INF1010 Tråder II 6. april 2016 INF1010 Tråder II 6. april 2016 Stein Gjessing Universitetet i Oslo 1 Tråder i Java tråden minrunp class MinRun implements Runable { MinRun(... ) {... } public void run( ) {...... } } //end

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Eksamensdato: 26. mai 25 Varighet: 3 timer ( 9: 2: ) Avdeling for informatikk og e-læring Fagnummer: Fagnavn: LO249D Operativsystemer med Linux Klasser: BADR. ING FU Studiepoeng:

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Eksamensdato: 22. mai 2002 Varighet: Fagnummer: Fagnavn: 4 timer LO245D Datateknikk Klasse(r): 1D FU Vekttall: 3 Faglærer(e): Geir Maribu

Detaljer

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Programmering i C++ Løsningsforslag Eksamen høsten 2005 Programmering i C++ Eksamen høsten 2005 Simen Hagen Høgskolen i Oslo, Avdeling for Ingeniørutdanning 7. desember 2005 Generelt Denne eksamensoppgaven består av tre oppgaver, pluss en ekstraoppgave. Det

Detaljer

Dagens tema. Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene

Dagens tema. Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene Dagens tema Dagens tema Cs preprosessor Separat kompilering av C-funksjoner C og minnet Oversikt over operatorene Inkludering av filer Cs preprosessor Før selve kompileringen går C-kompilatoren gjennom

Detaljer

IN 147 Program og maskinvare. Dagens tema

IN 147 Program og maskinvare. Dagens tema Dagens tema Kort repetisjon Unioner Cs preprosessor Allokering av variable Separat kompilering Programmet make Datastrukturer Matriser Dynamiske matriser Ringbuffere Oblig2 Obligatorisk oppgave nr. 2 slippes

Detaljer

Løsningsforslag til eksamen i IN 147(A)

Løsningsforslag til eksamen i IN 147(A) Løsningsforslag til eksamen i IN 147(A) Dag Langmyhr (oppgave 1, 4 og 6) ØysteinGranLarsen (oppgave 2, 3 og 5) 31. mai 1999 1 Oversettelse Funksjonen strxxx går gjennom en tekst og finner adresessen til

Detaljer

Hendelser Apprentice ComputerCraft PDF

Hendelser Apprentice ComputerCraft PDF Helser Apprentice ComputerCraft PDF Introduksjon I denne leksjonen skal vi se nærmere på hvordan datamaskinene bruker såkalte helser for å reagere på ting som tastetrykk, museklikk og så videre. Etterhvert

Detaljer

Sprettende ball Introduksjon Processing PDF

Sprettende ball Introduksjon Processing PDF Sprettende ball Introduksjon Processing PDF Introduksjon: I denne modulen skal vi lære et programmeringsspråk som heter Processing. Det ble laget for å gjøre programmering lett for designere og andre som

Detaljer

1,r H øgs kolen i Østfol d

1,r H øgs kolen i Østfol d 1,r H øgs kolen i Østfol d EKSAMEN Emnekode: ITF22506 Emne: Operativsystemer Dato: 2. juni 2010 Eksamenstid: kl. 9.00 til kl. 13.00 Hjelpemidler: Faglærer: 1. Læreboken "A Practical Guide to Red Hat Linux"

Detaljer

Oppgave 1 Oversettelse (total vekt 20%)

Oppgave 1 Oversettelse (total vekt 20%) UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 47 Program- og maskinvare Eksamensdag: 27. mai 998 Tid for eksamen: 9. 5. Oppgavesettet er på 8 sider. Vedlegg: Tillatte hjelpemidler:

Detaljer

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/25 Forelesning 11 5.11.2003 Repetisjon:

Detaljer

Dagens tema. Oppsummering om assemblerspråk. Programmering i C. Bakgrunn. Et minimalt eksempel med forklaring. Datatyper i C.

Dagens tema. Oppsummering om assemblerspråk. Programmering i C. Bakgrunn. Et minimalt eksempel med forklaring. Datatyper i C. Dagens tema Oppsummering om assemblerspråk Programmering i C (kapittel 11 og 12 i Patt&Patel-boken) Bakgrunn Et minimalt eksempel med forklaring Datatyper i C Operatorer i C Et eksempel til med forklaring

Detaljer

KONTINUASJONSEKSAMEN

KONTINUASJONSEKSAMEN Høgskolen i Gjøvik KONTINUASJONSEKSAMEN FAGNAVN: FAGNUMMER: Grunnleggende programmering og datastrukturer LO169A EKSAMENSDATO: 4. september 1996 KLASSE: 1 AA/AE TID: 09.00-14.00 FAGLÆRER: Frode Haug ANTALL

Detaljer

En oppsummering (og litt som står igjen)

En oppsummering (og litt som står igjen) En oppsummering (og litt som står igjen) Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Eksamen En oppsummering Oppsummering Pensum læreboken til og med kapittel 7 forelesningene de

Detaljer

Debugging. Tore Berg Hansen, TISIP

Debugging. Tore Berg Hansen, TISIP Debugging Tore Berg Hansen, TISIP Innhold Innledning... 1 Å kompilere og bygge et program for debugging... 1 Når debugger er i gang... 2 Symbolene i verktøylinjen... 3 Start på nytt... 3 Stopp debugging...

Detaljer

Skisse til løsning for eksamensoppgave i TDT4186 Operativsystemer

Skisse til løsning for eksamensoppgave i TDT4186 Operativsystemer Institutt for datateknikk og informasjonsvitenskap Skisse til løsning for eksamensoppgave i TDT4186 Operativsystemer Faglig kontakt under eksamen: Svein Erik Bratsberg: 9953 9963 Eksamensdato: 9. desember

Detaljer

Løsningsforslag til eksamen 24. november 2015

Løsningsforslag til eksamen 24. november 2015 Operativsystemer med Linux Løsningsforslag til eksamen 24. november 2015 Oppgave 1 a) Et OS deler tiden inn i små deler, typisk et hundredels sekund, og fordeler slike korte timeslices til alle prossene

Detaljer

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning Data

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning Data HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning Data Øving 9 (Obligatorisk) Kommentarer til øvingen: Utlevert: 29. oktober 2010. Øvingen gjøres på lab A516 eller A521: Halve klassen møter torsdag 4.

Detaljer

Interprosess kommunikasjon. Berkeley Sockets. Hvordan identifiserer jeg hvem jeg vil snakke til? Hva må programmene gjøre?

Interprosess kommunikasjon. Berkeley Sockets. Hvordan identifiserer jeg hvem jeg vil snakke til? Hva må programmene gjøre? Interprosess kommunikasjon Berkeley Sockets Hvordan få to maskiner til å snakke sammen Maskin A...... typedef struct { char sawreceive; char sawsend; int packetpointer; char buf[packetlength+1]; linksession;

Detaljer

Løsningsforslag til 2. del av Del - EKSAMEN

Løsningsforslag til 2. del av Del - EKSAMEN Løsningsforslag til 2. del av Del - EKSAMEN Emnekode: ITD13012 Emne: Datateknikk Dato: 21. Mai 2013 Eksamenstid: kl 9:00 til kl 12:00 Hjelpemidler: 4 sider (A4) (2 ark) med egne notater. Ikke-kummuniserende

Detaljer

Dagens tema INF1070. Makroer. Sanntidsprogrammering. Avbrudd. Bruker- og supermodus. Blanding av C og assemblerkode. Selvmodifiserende kode

Dagens tema INF1070. Makroer. Sanntidsprogrammering. Avbrudd. Bruker- og supermodus. Blanding av C og assemblerkode. Selvmodifiserende kode Dagens tema Makroer Sanntidsprogrammering Avbrudd Bruker- og supermodus Blanding av C og assemblerkode Selvmodifiserende kode Dag Langmyhr,Ifi,UiO: Forelesning 2. mai 2005 Ark 1 av 20 Makroer Ofte gjentar

Detaljer

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen? OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.

Detaljer

Utførelse av programmer, metoder og synlighet av variabler i JSP

Utførelse av programmer, metoder og synlighet av variabler i JSP Utførelse av programmer, metoder og synlighet av variabler i JSP Av Alf Inge Wang 1. Utførelse av programmer Et dataprogram består oftest av en rekke programlinjer som gir instruksjoner til datamaskinen

Detaljer