Simulering af spisende filosoffer

Slides:



Advertisements
Lignende præsentationer
- en lille lektie i det rigtige
Advertisements

Ildsjælekonferencen 2009 v. Gitte Olin Larsen, Landliv a/s.
»Tal til mig, Supermax!« - Joakim von And, ca. 1980
Idegrundlag og koncept
IAA Marketing Management Session 1 forberedelse til: Marketings rolle i virksomheden.
Skriftlighed og læring
Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
Denne diasshow anbefales til alle personer som er dødtrætte af at modtage « blomster ».
- en lille lektie i de gode ting for kroppen
ORIENTERING OM LEDELSESEVALUERING – til medarbejdere
Dansk Landbrugsrådgivning Landscentret | Planteavl Flerårige energiafgrøder som miljøfremmende foranstaltning Irene Wiborg.
Flerbrugermaskine Fælles maskine Root: webserver Peter: uploader filer Pia: programudvikling 1 langvarig proces, evt. med børneprocesser skiftende behov.
Semaforer Hvordan virker semop() hvis der er flere operationer ? I hvilken rækkefølge vækkes blokerede semaforer ? man semop.. The system call semantic.
Første generation (maskiner/operativsystemer) 45-55: radiorør Kun maskinsprog programmering = skrivning af nullerog ettaller Intet operativsystem programmør.
DS-kursusgang nr. 4 IPC generelt IPC eksempel: beskedkøer IPC tidsforbrug: kontekstskift, skedulering C: abstraktion, funktionsbiblioteker.
Hvorfor trådning? Performance Responsivness. Succeskriterier Forbedring af performance –Opgaverne skal være uafhængige –Jo flere afhængige opgaver, jo.
Projektbeskrivelse Der anvendes i stigende grad digitale modeller i både projekteringen, udførelsen og driften af bygninger. De digitale modeller indeholder.
Problemer eller udfordringer.
Adresserum Adresserum: Det interval af adresser, der kan arbejdes med i den samme proces (fra 0 til største adresse) Lippiatt++: adresser fylder 8 bit.
Operativsystemer [3]: Synkronisering og baglåse Datalogi 1F: Forår 2003 Jørgen Sværke Hansen
Emergency call button Stabilt og simpelt. I dag Problemer? Højtaler/mikrofon er ikke i samme rum som personen der har brug for hjælp Systemet kræver.
Proces overblik med SIPOC modellen
Rødekro Kommune Præsentation af Rødekro Kommunes Indkøbsnet Eva Minke Andersen.
Swapping og paging Flytning af processer (swapping) eller dele af processer (paging) mellem arbejdslager og fjernlager. Baggrund: På den ene side skal.
Morgenmad Nogle spiser havregryn med mælk og sukker.
Peter Westmark Relationskompetence - det er de professionelle voksne der ansvar for kvaliteten af relationen STU - Træf Den
SYNKRONISER DIN S3 SCANNER. At synkronisere sin scanner betyder at man sender data fra alle de scanninger man har lavet, ind til Nu Skins server, der.
18. Strategisk analyse af interne forhold
Aktiviteter målrettet landmænd Din Bundlinje NU! 2010 Din Bundlinje NU! 2010 Landmandens Bundlinje NU! 2011 Landmandens Bundlinje NU! 2011 Løft Bundlinjen!
To måder at overføre objekt- referencer mellem processer (1) Via naming service - interface RMISolver (2) Som parametre til fjernprocedurekald - interface.
Beskeder/beskedkøer Afsender- proces hej Modtager- proces.. msgsnd(..,"hej",..);.. msgrcv(..);.. Afsender skal bl.a. angive den besked der ønskes afsendt.
Ingeniørhøjskolen i Århus Slide 1 Newton approximation ”Oversæt” til algoritme - Step 5: Skriv kode - Step 4: Skriv pseudokode - Step 3: Specificér pre-
Mål og visioner for fremtiden Vision, mission, mål og værdier blev revurderet sidste år – og de holder. Det politiske program er fra 2007, og det skal.
Procestræ under afvikling af cp init login shell cp cp src dest.
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
Indledning Resultater fra spørgeskema undersøgelsen 374 har svaret på spørgsmålene Svaret på spørgsmålet: Hvem vil til den tid være i gang med at bruge:
Transaktioner og ACID Spørgsmål 8. Transaktioner og ACID ACID (Atomicity, Consistency, Isolation, Durability) ACID-egenskaber er sæt egenskaber, der garanterer.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
 Processer og tråde  Implementation af tråde  Trådinterferens  Synkronisering  Atomare aktiviteter.
Operativsystemer, processor og tråde. Disposition Operativsystem Kerne funktionalitet Presser og adresserum Tråde.
Per Printz Madsen Linux proces og tråd programmering Per Printz Madsen Aalborg Universitet Institut for.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
Process Control Hardware baggrund Process begrebet i et OS Process tilstande Context switching.
Per Printz Madsen 1 Linux kernen Monolithic kernel Support for dynamiske moduler Få kerne tråde Preemptive.
Per P. MadsenStyresystemer og tjenester1 Threads.
Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
1 Processer. 2 fork int fork(); Danner en ny proces med samme indhold som forældre processen. I begge processer er programtælleren placeret lige efter.
Samtidighed. Disposition Formål med tråde Eksempel på fordel ved tråde Thread-pooling Livscyklus Problemstillinger Algoritmer ◦Dekkers ◦Peterson Opsumering.
Den Kreative Platform I TIK 3
DAIMIProgrammering af Store Systemer1 Concurrency i Java – Samarbejdende tråde.
Multiple processer på web-site Web- server filer Kunde 1 Kunde 2 Kunde p1p2p internet.
Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står.
Velkommen til borgermødet Husk sammen kan vi mere!
Det gode liv – i nye ”landsby” rammer Udbygning af Bank-Mikkelsens Vej Orienteringsmøde den 1. september
Hvordan har du det med udenlandske chauffører, der kører i Danmark?
Nu har du installeret uVision og set at både programmet og boardet virker. Man kan ikke lære at cykle ved at se på andre, så i det efterfølgende skal du.
ITERATIV PLANLÆGNING AF LETBANEN PÅ RING 3
ADC (Analog/Digital converter) Bruges til at måle analoge spændinger på kontrollerens inputporte. På dit board sidder en drejeknap under displayet som.
I det efterfølgende vil vi prøve at opnå forbindelse til de knapper som er på boardet. Opgaven er at vi ved at trykke på knapperne kan få lyset til at.
Lav et nyt projekt og tilføj denne gang pakken Graphic LCD.
Egenkontrol Varmholdelse.
Interrupts. Indtil nu har hastigheden på dine blinkende LEDs været styret af et loop. Som du muligvis også har bemærket afhænger det meget af hvor travlt.
Bestilling og ordrebekræftelse
Nye digitale løsninger
At simulere betyder at efterligne
1. Hvordan kan vi bruge dem som undervisere?
Det lydløse terningekast
Værktøj 10: Forandringer og stress - Arbejdsgruppen
Præsentationens transcript:

Simulering af spisende filosoffer // philosopher.c #include <forks.h> #include <think_and_eat.h> philosopher(int i) { while (TRUE) { think(); take_fork(i); take_fork((i+1) % 5); eat(); put_fork(i); put_fork(i+1); } Middagsselskab simuleres med fem (mindst) samtidige processer. Krav til simulering ingen gaffeldeling spisning kræver to gafler ingen deadlock mindst mulig forsinkelse .. kræver raffineret brug af IPC = Inter-Proces Communication

Kildetekstfiler forks.h forks.c think_and_eat.h think_and_eat.c philosopher.h philosopher.c dinner.c

Skabelse af filosofprocesser // dinner.c #include <philosopher.h> main() { int philosophers = 5,i,pid; for (i=0; i<philosophers; i++) { pid = fork(); switch(pid) { case -1: printf("error"); exit(1); case 0: philosopher(i); exit(0); } Filosof skabes alene med fork(), dvs. uden exec(). "Middagsselskab" og "filosof" deler programtekst. Filosof-procedure kaldes i betinget sætning.

Beskyttelse af kritisk region Problem: race-conditions fejl, inkonsistens el.lign. opstår hvis flere processer tilgår samme ressource eksempel: flere processer læser og skrive i samme datafil ..; første tilgang til ressource ressource; .. sidste tilgang til ressource; Test og sæt lås Kritisk region Lås op igen Løsninger semaforer, låsefiler, m.m. Krav til løsningerne: lås kun hvis nødvendigt ingen race conditions i selve test-og-sæt-lås programdelen ingen deadlock

Hvor er kritiske region(er) ? // philosopher.c #include <forks.h> #include <think_and_eat.h> philosopher(int i) { while (TRUE) { think(); take_fork(i); take_fork((i+1) % 5); eat(); put_fork(i); put_fork(i+1); }

Kritiske regioner (I) (II) philosopher(int i) { philosopher(int i) { while (TRUE) { think(); take_fork(i); take_fork((i+1) % 5); eat(); put_fork(i); put_fork(i+1); } (II) philosopher(int i) { while (TRUE) { think(); take_fork(i); //1 take_fork((i+1) % 5); //1 eat(); put_fork(i); //2 put_fork(i+1); //3 }

Naiv implementation af "test og sæt lås" #define TRUE 1 #define FALSE 0 int available; while (! available){ sleep(1); } available = FALSE; available = TRUE ..; første tilgang af ressource; .. sidste tilgang til ressource;

Implementation af "test og sæt lås" med låsefil char lock[] = "LockFile" while (open(lock,O_RDWR|O_CREAT|O_EXCL,0666)<0){ sleep(1); } remove(lock); ..; første tilgang af ressource; .. sidste tilgang til ressource; open() tester og (evt.) låser i udelelig sekvens. Test = findes filen ? Låsning = skab filen

Implementation af "test og sæt lås" med semafor (forenklet) semaphore sem; down(sem); up(sem); ..; første tilgang af ressource; .. sidste tilgang til ressource; Hvad er en semafor ? Har talværdi som altid er større end eller lig nul. Har atomisk "down" operation som trækker 1 fra hvis muligt, ellers blokeres. Har atomisk "up" operation som lægger 1 til og vækker blokerede processer.

Skitse af semafor-implementation a la Tanenbaum ? down(int *sem) { if (*sem == 0) { SLEEP}; (*sem)-- ; } up(int *sem) { (*sem)++; {WAKE UP ONE SLEEPING PROCESS}; Skitse bruger pointer for at modificere variabel i kaldsomgivelser. Skitse mangler sikring af atomicitet og kommunikation (WAKE UP). SLEEP (*sem)-- (*sem)++ WAKE UP

Pointer-opgave #include <stdio.h> main() { char ch = 'A',*p = &ch; printf("(1) %d %c \n",ch,ch); // hvad udskrives ? ch = ch*2 - 64; printf("(2) %d %c \n",*p,*p); }

Systemkald til at arbejde med semaforer Atomicitet via disabling af interrupt. "Sleep" og "wake up" håndteres af operativsystemet. Uafhængige processer kan tilgå samme semafor. Navngivning af semaforer med heltal. Faciliteter til gruppering, initialisering, m.m. int semget(<nøgle>,<antal>,<flag: rettigheder, betingelser>) int semop(<id>,<nr;ændring;flag>,<antal>) int semctl(<id>,<nr>,<flag:SETVAL>,<værdi;..>); Normalt +1 eller -1

Producent / forbruger (jf. Tanenbaum fig. 2-11 s. 43) Krav: undgå kaos (samtidig læs/skriv) undgå overflow undgå "underflow" Løsning med semaforer mutex (0-1) empty (0-1-2-3-4-5) // tomme poster full (0-1-2-3-4-5) // fyldte poster

Shellscripts Et shellscript er en fil med kommandoer der kan forstås og udføres af shellen. Shellscripts kan begynde med #!/bin/sh for at fortælle operativsystemet, at sciptet skal fortolkes af det angivne program (shellen). Samme effekt af følgende: <prompt> Kommando <prompt> /bin/sh Fil hvis Fil indeholder Kommando <prompt> Fil hvis Fil indeholder #!/bin/sh samt Kommando

#!/bin/bash # bytecounter (kommentar) if [ $# != 1 ] # test, antal par. then echo "usage: bytecounter katalog" # udskrivning exit # terminering fi cd $1 # ref. til par. for file in $(ls) # loop; stdout af ls do if [ -f $file ] # er det en fil ? then wc -c $file # antal tegn udskrives else if [ -d $file ] # et katalog ? echo "Går til katalog: $file" $0 $file # prøv & and exec her echo "Tilbage i katalog: $1" done

Udførelse af delopgave "p" (selvstændigt program) Program F vil have udført program P start-vent start-fortsæt overlejring F F F P P P

Processkabelse i C vs. shellscripts Start "p" og vent: shellscript: p c-program: fork(); exec(p,..) // wait() Start "p" og fortsæt: shellscript: p & c-program: fork(); exec(p,..) // - Fortsæt som "p": shellscript: exec p c-program: exec(p,..)