Processer og koordinering. dopsys 1

Relaterede dokumenter
Processer og tråde. dopsys 1

Koordinering. dopsys

Deadlocks dopsys 1 onsdag den 8. december 2010

Implementation af Koordinering. dopsys 1

Processer og koordinering

Principper for Samtidighed og Styresystemer

1 Operativsystemer oversigt

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

Schedulering. dopsys 1

Schedulering. dopsys 1

Netværksalgoritmer 1

Real-time programming safety in Java and Ada

Niveauer af abstrakte maskiner

Operativsystemer - dopsys

Algoritmedesign med internetanvendelser ved Keld Helsgaun

Synkronisering af sekventielle processer

Resource types R 1 1, R 2 2,..., R m CPU cycles, memory space, files, I/O devices Each resource type R i has W i instances.

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

Planen for idag. Datalogi 1F Forår Hvad er en proces? Livscyklus for en proces. Hvad består en proces af?

Systemkald DM Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/ Afleveret af: Jacob Christiansen,

Programmering i C. Lektion september 2009

Principper for Samtidighed og Styresystemer

Netværk & elektronik

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU

VMware og dopsys-linux

Systemkald i Unix/Linux

Input/Output: Brugergrænseflader. dopsys

Sider og segmenter. dopsys 1

Operativsystemer - dopsys. Erik Ernst

Schedulering af SAS job i MS Task Scheduler, som sender med log og statuskode ved fejl

Parallelle algoritmer

QUICK START Updated:

Programmering i C. Lektion oktober 2008

Modern Concurrency Abstractions for C#

DATALOGI 1F. Skriftlig eksamen tirsdag den 10. juni % 2 10 % 3 25 % 4 10 % 5 30 %

Bits DM534. Rolf Fagerberg, 2012

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Programmering i C. Lektion december 2008

User Manual for LTC IGNOU

Common Language Runtime. Multithreading

QUICK START Updated: 18. Febr. 2014

uprocessorens hardware

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2.

Introduktion. Philip Bille

Filsystemer. dopsys. fredag den 26. november 2010

Lageret er hierarkisk fokus nu: disk

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 4 n n 3n n 2 /logn 5 n n (logn) 3n n 2 /logn 4 n n 5 n

The purpose of our Homepage is to allow external access to pictures and videos taken/made by the Gunnarsson family.

Maskinarkitektur. Lars Kristensen Christian Storm dmasark 1

Selvstudium 1, Diskret matematik

Danmarks Tekniske Universitet

Algoritmer og invarianter

Sider og segmenter. dopsys 1

Prioritetskøer og hobe. Philip Bille

Planen for idag. Opdatering af delt lager

Start på Arduino og programmering

Mandatory Assignment 1

Filsystemer: Anvendelse. dopsys

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

Lageradministration. dopsys

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

Input/Output: Disk & Clock. dopsys

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

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

Sommeren 2001, opgave 1

DM507 Algoritmer og datastrukturer

Grundlæggende Algoritmer og Datastrukturer

Danmarks Tekniske Universitet

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

Filsystemer: Implementation. dopsys

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n

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

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

Løsning af skyline-problemet

Operativsystemer - dopsys. Erik Ernst

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

ODIN-webservice ændringer release 2010 v2.0

Citrix CSP og Certificate Store Provider

Oracle PL/SQL. Overview of PL/SQL

Virkefeltsregler i Java

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4

Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune

Programmering i C. Lektion november 2008

P (n): rekursiv beregning af f n kræver f n beregninger af f 1. P (n) er sand for alle n 2.

E-PAD Bluetooth hængelås E-PAD Bluetooth padlock E-PAD Bluetooth Vorhängeschloss

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

Eksamen dcomnet Q2/2010. Navn

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7

I profil-feltet kan imastra-kunder vælge om upload skal ske ligesom filerne var indsendt til mailboksen eller

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 2 n (log n) 2. 3 n /n 2 n + (log n) 4

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Dynamisk programmering

Programmering i C. Lektion september 2009

UML til kravspecificering

Parallelle algoritmer

Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Transkript:

Processer og koordinering dopsys 1

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

Motivation.. parallelle algoritmer kan gøre store beregninger hurtigere: Evaluering af aritmetiske udtryk: Proces-flowgraf: (a + b) * (c + d) - (e / f).. flere aktiviteter afvikles samtidigt (logisk eller fysisk). dopsys 3

Motivation.. parallelle algoritmer kan gøre store beregninger hurtigere: Evaluering af aritmetiske udtryk: Proces-flowgraf: (a + b) * (c + d) - (e / f).. flere aktiviteter afvikles samtidigt (logisk eller fysisk). dopsys 3

Motivation.. parallelle algoritmer kan gøre store beregninger hurtigere: Evaluering af aritmetiske udtryk: Proces-flowgraf: (a + b) * (c + d) - (e / f).. flere aktiviteter afvikles samtidigt (logisk eller fysisk). dopsys 3

Motivation.. parallelle algoritmer kan gøre store beregninger hurtigere: Evaluering af aritmetiske udtryk: Proces-flowgraf: (a + b) * (c + d) - (e / f).. flere aktiviteter afvikles samtidigt (logisk eller fysisk). dopsys 3

Motivation.. parallelle algoritmer kan gøre store beregninger hurtigere: Evaluering af aritmetiske udtryk: Proces-flowgraf: (a + b) * (c + d) - (e / f).. flere aktiviteter afvikles samtidigt (logisk eller fysisk). dopsys 3

Proces-begrebet.. er centralt i understøttelse af virtualisering: Kørende system: samling af samtidige, sekventielle processer Proces: et program under afvikling SP A data stack SP B data stack proces-struktur (process image) PC A program Proces A program Proces B.. processer kommunikerer og synkroniserer med hinanden. PC B dopsys 4

Proces-primitiver (1) cobegin-coend (Dijkstra, 1968): cobegin C1 // C2 // // Cn coend cobegin cobegin t1 = a+b // t2 = c+d coend; t4 = t1*t2 // t3 = e/f coend; t5 = t4-t3;.. begrænset form for synkronisering ifm. terminering kan udtrykkes. dopsys 5

Proces-primitiver (2) fork-join-quit (Conway 1963, Dennis/Van Horn 1966): fork x : skab en ny proces, begynd udførelse ved label x join t,y : t = t 1; if (t == 0) goto y; (atomart) quit : terminér processen n = 2; fork L3; m = 2; fork L2; t1 = a+b; join m,l4; quit; L2: t2 = c+d; join m,l4; quit; L4: t4 = t1*t2; join n,l5; quit; L3: t3 = e/f; join n,l5; quit; L5: t5 = t4-t3;.. alle proces-flowgrafer kan udtrykkes, men ikke pænt... dopsys 6

? [Click] Hvorfor kan denne procesgraf ikke udtrykkes med cobegin/coend? S A. To kanter ender i samme knude, men starter ikke i samme knude B. Et ulige antal kanter mødes i et punkt C. Manglende parentes-struktur D. Vi kan ikke udtrykke S og F E. Den kan da godt udtrykkes! F dopsys 7

Eksempel: Unix OS.. implementerer variant af fork-join-quit: dopsys 8

Dokumentation af systemkald %> man fork NAME fork - create a child process SYNOPSIS #include <sys/types.h> #include <unistd.h> pid_t fork(void); DESCRIPTION fork creates a child process that differs from the parent process only in its PID and PPID, and in the fact that resource utilizations are set to 0. File locks and pending signals are not inherited. RETURN VALUE On success, the PID of the child process is returned in the parent's thread of execution, and a 0 is returned in the child's thread of execution. On failure, a -1 will be returned in the parent's context, no child process will be created, and errno will be set appropriately. ERRORS dopsys 9

void process_a(void) { pid_t pid = fork (); if (pid == 0) { /* child process */ int i; for (i=0; i<10; i++) { printf("process B\n"); sleep(2); else { /* parent process */ int i; for (i=0; i<10; i++) { printf("process A\n"); sleep(1); int main(int argc,char *argv[]) { process_a(); exit(0); >%./processab process A process B process A process B process A process A process B process A process A process B process A process A process B process A process B process B dopsys 10

void process_a(void) { pid_t pid = fork (); if (pid == 0) { /* child process */ int i; for (i=0; i<10; i++) { printf("process B\n"); sleep(2); else { /* parent process */ int i; for (i=0; i<10; i++) { printf("process A\n"); sleep(1); int main(int argc,char *argv[]) { process_a(); exit(0); OK, men her har vi selvfølgelig glemt noget. >%./processab process A process B process A process B process A process A process B process A process A process B process A process A process B process A process B process B Hvad er det? ;-) dopsys 10

/* processa.c */ void process_a(void) { pid_t pid = fork (); /* execute the program */ if (pid == 0) { /* child process */ char filename[9] = "processb"; char *argv[2]; argv[0] = filename; argv[1] = NULL; execvp(filename,argv); else { /* parent process */ int i; for (i=0; i<10; i++) { printf("process A\n"); sleep(1); /* processb.c */ #include <stdio.h> #include <unistd.h> int main(int argc,char *argv[]) { int i; for (i=0; i<10; i++) { printf("process B\n"); sleep(2); exit(0); %> gcc o processb processb.c %> gcc o processa processa.c %>./processa... int main(int argc,char *argv[]) { process_a(); exit(0); dopsys 11

spørgsmål omkring processer? dopsys 12

Proces-interaktion.. processer skal synkronisere adgang til delte data: cobegin P1: x = x + 1; // P2: x = x + 1; coend ønsket: x new = x old +2 P1 1 mov x,r1 2 inc R1 3 mov R1,x P2 1 mov x,r1 2 inc R1 3 mov R1,x.. korrekthed af resultatet afhænger af schedulering (race condition). dopsys 13

Kritiske regioner cobegin p1: while(1) {CS1; program 1; // p2: while(1) {CS2; program 2; //... // pn: while(1) {CSn; program n; coend data Antagelser: 1. Delte data tilgås kun i kritisk region (CSi) 2. Læsning/skrivning af lagerceller sker atomart 3. Processers hastighed kendes ikke (kan være lav!) 4. Processer terminerer kun udenfor kritiske regioner (program i) dopsys 14

Gensidig udelukkelse (mutual exclusion).. kun een proces ad gangen kan udføre kode i en kritisk region: entry kode exit kode data Undgå gensidig blokering (mutual blocking): 1. Processer udenfor CS må ikke forhindre andre processers adgang 2. En proces der ønsker adgang skal have adgang med tiden (starvation) 3. Processer må ikke gensidigt blokere hinanden (deadlocks) 4. Processer må ikke altid gensidigt udsætte adgang til CS (livelocks) dopsys 15

Alternerings-algoritme int turn = 1; cobegin p1: while (1) { while (turn==2); /* wait */ CS1; turn = 2; program 1; // p2: while (1) { while (turn==1); /* wait*/ CS2; turn = 1; program 2; coend dopsys 16

Alternerings-algoritme int turn = 1; cobegin p1: while (1) { while (turn==2); /* wait */ CS1; turn = 2; program 1; // p2: while (1) { while (turn==1); /* wait*/ CS2; turn = 1; program 2; coend Naiv! dopsys 17

Forsøg #2 int c1 = 0, c2 = 0; cobegin p1: while (1) { c1 = 1; while (c2); /* wait */ CS1; c1 = 0; program 1; // p2: while (1) { c2 = 1; while (c1); /* wait */ CS2; c2 = 0; program 2; coend Dur ikke! (deadlock) dopsys 18

Forsøg #2 int c1 = 0, c2 = 0; cobegin p1: while (1) { c1 = 1; while (c2); /* wait */ CS1; c1 = 0; program 1; // p2: while (1) { c2 = 1; while (c1); /* wait */ CS2; c2 = 0; program 2; coend Dur ikke! (deadlock) dopsys 19

Forsøg #3 int c1 = 0, c2 = 0; cobegin p1: while (1) { c1 = 1; if (c2) { c1 = 0 else { CS1; c1 = 0; program 1; // p2: while (1) {... /* similar */ coend Dur ikke! (livelock) dopsys 20

Forsøg #3 int c1 = 0, c2 = 0; cobegin p1: while (1) { c1 = 1; if (c2) { c1 = 0 else { CS1; c1 = 0; program 1; // p2: while (1) {... /* similar */ coend Dur ikke! (livelock) dopsys 21

Petersons Algoritme (1981) int c1 = 0, c2 = 0, willwait; cobegin p1: while (1) { c1 = 1; willwait = 1; while (c2 && (willwait==1)); /* wait */ CS1; c1 = 0; program 1; // p2: while (1) { c2 = 1; willwait = 2; while (c1 && (willwait==2)); /* wait */ CS2; c2 = 0; program 2; coend dopsys 22

Q/A En kritisk region er associeret med to typer områder i lageret. Beskriv dem (to og to)! dopsys 23

Korrekthed Kun kritiske regioner bruger delte data. Højst een proces ad gangen er i en kritisk region. Undgå gensidig blokering (mutual blocking): 1. Processer udenfor CS må ikke forhindre adgang for andre processer 2. En proces der ønsker adgang skal senere få muligheden (starvation) 3. Processer må ikke gensidigt blokere hinanden (deadlocks) 4. Processer må ikke gensidigt kunne udsætte adgang til CS (livelocks) dopsys 24

spørgsmål om synkronisering? dopsys 25

Semaphorer (Dijkstra, 1968).. et ikke-negativt heltal der kan blokere processer: Atomare operationer: V (up): if anyblocked() then unblockone() else s = s + 1; P (down): if s > 0 then s = s - 1; else block () Tællesemaphorer: husker antallet af up operationer. Binære semaphorer (mutex): kun værdierne 0 eller 1 antages... semaphor-operationer ofte implementeret via systemkald. dopsys 26

Eksempel: Wait/Wakeup semaphore s = 0; cobegin p1:... down(s); /* sit down and wait for signal */... // p2:... up(s); /* send signal to wake up p1 */...... coend; dopsys 27

Eksempel: Gensidig udelukkelse.. kan nu realiseres ved brug af binære semaphorer: semaphore mutex = 1; cobegin pi: while(1) { down(mutex); /* lock CS */ CSi; up(mutex); /* unlock CS */ program i; coend dopsys 28

Eksempel: Producer-Consumer Begrænset buffer af størrelse n mellem Producer og Consumer: 1. Producer blokerer hvis buffer er fuld. 2. Consumer blokerer hvis buffer er tom... integritet af buffer datastruktur skal sikres. dopsys 29

Eksempel: Producer-Consumer Tællesemaphorer: e antal tomme buffer indgange (blokering af producer). f antal fyldte buffer slots (blokering af consumer). Mutex: b gensidig udelukkelse omkring buffer opdatering. semaphore e = n, f = 0, b = 1; cobegin Producer: while (1) { Produce_next_record; down(e); lock(b); Add_to_buf; unlock(b); up(f); // Consumer: while (1) { down(f); lock(b); Take_from_buf; unlock(b); up(e); Process_record; coend dopsys 30

[Click] Hvad hvis vi bytter down/lock? A. OK B. Fare for deadlock C. Fare for race condition semaphore e = n, f = 0, b = 1; cobegin Producer: while (1) { Produce_next_record; down(e); lock(b); Add_to_buf; unlock(b); up(f); // Consumer: while (1) { down(f); lock(b); Take_from_buf; unlock(b); up(e); Process_record; coend dopsys 31

Opsummering Processer: Proces-begreb: program under afvikling Logisk og fysisk parallellitet Basale proces-primitiver: cobegin/coend, fork/join/quit Unix OS primitiver: fork, execve, exit og waitpid Koordinering: Kritiske regioner og gensidig udelukkelse Peterson s algoritme Semaphorer: tælle-semaphorer og binære semaphorer Nyhedsværdi: Flere begreber kendt fra andre kurser, nu på vej ind i ny kontekst dopsys 32