Oppsummering av IN147 siste del Operativsystemer Parallellisering Veien videre

Like dokumenter
IN 147 Program og maskinvare

Dagens tema: Synkronisering

Dagens tema: Synkronisering

IN 147 Program og maskinvare. Dagens tema:

Oversikt over IN147(A):

Kort notat om parallellstyring IN147

Dagens tema: Parallellstyring

IN 147 Program og maskinvare

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

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

IN 147 Program og maskinvare

IN 147 Program og maskinvare

Løsningsforslag til eksamen i IN 147 og IN 147A

Mer om C programmering og cuncurrency

Tråder og concurrency i Linux

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

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

Løsningsforslag til eksamen i IN147(A)

INF1010 Tråder II 6. april 2016

GetMutex(lock) { while(testandset(lock)) {} } En context switch kan ikke ødelegge siden testen og endringen av lock skjer i samme instruksjon.

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

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

IN 147 Program og maskinvare

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

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

Pekere og vektorer. Dagens tema. 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

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.

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

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

Dagens tema C, adresser og pekere

Ark 3 av 26. printf("i adresse %08x ligger b med verdien %d.\n", &b, b); printf("i adresse %08x ligger a med verdien %d.

Dagens tema. Nyttige programmer Programmet make. Hvis én fil endres, hvilke filer må da kompileres på nytt?

Programmeringsspråket C

Dagens tema: Datastrukturer

Løsningsforslag til eksamen i IN 147(A)

Dagens tema: Liten repetisjon Håndtering av statusverdier

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

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

IN1010 våren Repetisjon av tråder. 15. mai 2018

IN 147 Program og maskinvare

IN 147 Program og maskinvare

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

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

Mer om Perl INF3110/4110. Filer og bruk av disse. Lister. Tabeller. Søking og regulære uttrykk. Oppsummering

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

UNIVERSITETET I OSLO

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

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

HØGSKOLEN I SØR-TRØNDELAG

IN 211 Programmeringsspråk. Java. på 20 enkle ark. spesielt for de som kan. Simula. (og gjerne litt C) Ark 1 av 20

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

IN 147 Program og maskinvare

Dagens tema: INF2100. Syntaksanalyse. Hva annet gjør en kompilator? Sjekking av navnebruk. Testutskrifter

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

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

2 Om statiske variable/konstanter og statiske metoder.

Dagens tema (kapittel 15 i Englander-boken)

1,r H øgs kolen i Østfol d

Kapittel 1 En oversikt over C-språket

Del 4 Noen spesielle C-elementer

Syntaksanalyse. Dagens tema: Språkdiagrammene Jernbanediagrammene er et ypperlig utgangspunkt for å analysere et program: INF2100 INF2100 INF2100

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

Del 3. Pekere RR 2016

Administrivia INF 3110/ INF /02/2005 1

Runtimesystemer - II. Funksjoner som parametere. Virtuelle metoder

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

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

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

En oppsummering (og litt som står igjen)

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

2 Om statiske variable/konstanter og statiske metoder.

Del 1 En oversikt over C-programmering

INF4140 MODELLER FOR PARALLELLITET. PMA-gruppen. Institutt for informatikk Universitetet i Oslo.

Dagens tema. Perl: Mer om regulære uttrykk Filer Lister og tabeller Kompilering og interpretering (kapittel ) IN 211 Programmeringsspråk

Eksempler på ikke-blokkerende systemkall:

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

Programmeringsspråket C

GRAFER. Hva er en graf? Det første grafteoretiske problem: Broene i Königsberg. Grafer vi har sett allerede

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

UNIVERSITETET I OSLO

Anbefalt litteratur: Pensum-bøker: Forelesere: Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Prosesser og tråder. Martin Gilje Jaatun. 30. april 2007

Kontinuasjonseksamen

Synkronisering II. Kapittel 7. Betingelse oppfylt (0) liste. tråd-deskriptor. venteliste. tråd-deskriptor. tråd-deskriptor.

IN 147 Program og maskinvare

IN 147 Program og maskinvare

Transkript:

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 mindre grad for alle operativsystemer. Hva er en prosess? En prosess er et program under kjøring. Stakk Data Kode Hvordan kommunisere med operativsystemet? En liste systemkall definerer grensesnittet, og dermed egentlig også operativsystemet. UNIX-standarden heter POSIX. Forelesning 12.5.1999 Ark 2 av 12

Hvordan oppstår prosesser Prosesser lages med fork(). De kan endre innhold med execve(program, param-liste, omgivelse). Hvordan dør prosesser? Prosesser avsluttes på én av tre måter: 1. Kall på exit(status). 2. Bruk av return i main. 3. Hovedprogrammet main avsluttes (med uspesifisert statusverdi). Forelesning 12.5.1999 Ark 3 av 12

Hvordan overføres parametre? Programparametrene overføres som de to første parametrene til main: int main(int argc, char *argv[]) Hva er omgivelsen? Omgivelsen er en samling definisjoner om den enkelte bruker og hans eller hennes preferanser. Definisjonene er av typen NAME=dag PATH=/local/bin:/bin:/usr/bin:. PRINTER=prent De overføres på én av to måter: 1. via den globale variabelen extern char **environ; 2. som tredje parameter til main: int main(...,..., char **env) Forelesning 12.5.1999 Ark 4 av 12

Parallellitet Formålet med parallellitetskontrollen er å forhindre kappløp ved å sikre kritiske regioner og hindre vranglås og utsulting. Hvorfor programmerer man parallelt? Noen problemer er naturlig parallelle. For å få opp hastigheten. Teknikker Følgende teknikker er blant de viktigste: UNIX-prosesser med wait(&status) samt UNIX-signaler signal(signalrutine) og pause(). UNIX-rør: pipe(rørvektor), read(rør, buffer, #byte) og write(rør, buffer, #byte). Felles lager, lettvektsprosesser Semaforer Monitorer Meldinger Linda Forelesning 12.5.1999 Ark 5 av 12

Felles lager Et felles lager ligger «utenfor» de prosessene som bruker det: I tillegg trengs synkronisering. Lettvektsprosesser Slike prosesser har kode og data felles: Stakk Stakk Data Kode Synkronisering trengs også her. Forelesning 12.5.1999 Ark 6 av 12

Semaforer En semafor er en datastruktur med en teller og en kø: Verdi Kø - - - Semaforer har to operasjoner: down(&s) Hvis verdien til s er > 0, vil den bli senket med 1. Hvis ikke, vil prosessen bli blokkert og dens nummer lagt til køen til s. up(&s) Hvis køen til s er tom, økes verdien med 1. Hvis ikke, fjernes ett prosessnummer fra køen, og den tilhørende prosessen startes opp igjen. Beskyttelse av kritisk region semaphore mutex = 1; /* Mutual exclusion */. down(&mutex); Kritisk region up(&mutex); Forelesning 12.5.1999 Ark 7 av 12

Monitorer En monitor er en høynivå mekanisme for parallellstyring: Monitor class Eksempel; begin integer I;! Lokal variabel. ; condition C;! Betingelsesvariabel ; procedure P(...);! Operator. ; begiṇ. Wait(C);. Signal(C);. end P; I :=...;! Initiering. ; end Eksempel; ref(eksempel) E; E :- new Eksempel; E.P(...); Forelesning 12.5.1999 Ark 8 av 12

Linda I Linda skjer synkrosineringen og dataoverføringen via et eget tuppellager. Produment-konsumentproblemet med Linda void producer(void) { while (1) { data = produce_item(); in("free"); out("data", data); void consumer(void) { while (1) { in("data",?data); out("free"); consume_item(data); /* Initiering: */ for (i = 1; i <= N; ++i) out("free"); Forelesning 12.5.1999 Ark 9 av 12

Fraktaleksemplet Den «ypperste» utgaven av fraktaleksemplet: Delt lager med en ringbuffer til dataoverføringen. «Oppgaver» hentes fra en egen buffer. Konsumenten void konsument(void) { col_data buf; int cx, iy; for (cx = 0; cx < NX; ++cx) { /* Kritisk region... */ down(full); down(mutex); buf = buffer->data[buffer->outp++]; if (buffer->outp >= BUFSIZE) buffer->outp = 0; up(mutex); up(empty); /*... slutt på kritisk region. */ for (iy = 0; iy < NY; ++iy) { x147plot(buf.xpos, iy, buf.ycol[iy]); x147sync(); Forelesning 12.5.1999 Ark 10 av 12

Produsenten void produsent(void) { float x, y; int ix, iy, fx; col_data buf; while (1) { /* Kritisk region... */ down(xpos); ix = xpos->data[xpos->n++]; up(xpos); /*... slutt på kritisk region. */ if (ix < 0) exit(0); 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); /* Kritisk region... */ down(empty); down(mutex); buffer->data[buffer->inp++] = buf; if (buffer->inp >= BUFSIZE) buffer->inp = 0; up(mutex); up(full); /*... slutt på kritisk region. */ Koden finnes på kursområdet. Forelesning 12.5.1999 Ark 11 av 12

Veien videre Om du liker programmeringsspråk, anbefales IN102 Programmeringslaboratorium IN211 Programmeringsspråk IN310 Kompilatorteknikk operativsystemer, anbefales IN-MOS Moderne operativsystemer IN305 Parallellprogrammering & op.sys parallellitet og kommunikasjon, anbefales IN270 Datakommunikasjon digitalteknikk, anbefales IN240 Digital systemkonstruksjon IN241 VLSI-konstruksjon Forelesning 12.5.1999 Ark 12 av 12