Semaforer Hvordan virker semop() hvis der er flere operationer ? I hvilken rækkefølge vækkes blokerede semaforer ? man semop.. The system call semantic.

Slides:



Advertisements
Lignende præsentationer
Etiske & metodiske problemer i online research - kort diskussionsoplæg.
Advertisements

Overskrift her Navn på oplægsholder Navn på KU- enhed For at ændre ”Enhedens navn” og ”Sted og dato”: Klik i menulinjen, vælg ”Indsæt” > ”Sidehoved / Sidefod”.
Almindelige ("hårde") links (i filsystemer med i-noder) opg.txt jens: pia: ln /home/pia/opg.txt /home/jens/opg.txt hård link: ny post får i-node-nummer.
1 C-kursus 6. Lektion n Repetition af 5. Lektion n Vi mødes igen kl til gennemgang af 6. Lektion.
Pædagogisk psykologi 23. september Intro Dannelse og funktion Adfærd
// Semaphore.java package semaphore; public class Semaphore { int resources = 1; // Constructors Semaphore() {} Semaphore(int i) { resources = i; } synchronized.
Flerbrugermaskine Fælles maskine Root: webserver Peter: uploader filer Pia: programudvikling 1 langvarig proces, evt. med børneprocesser skiftende behov.
Database Normalization without Mathmatics
Datalogi 1F: Multiprogrammering[4] 1 Planen for i dag Repetition af kerner med afbrydelser Kerner med tvungent processkift Præsentation af K1.
Peter Mikkelsen Med arbejdsglæde til top præstationer.
Særligt fokus på interessentanalyse og performancemåling
Operativsystemer [3]: Synkronisering og baglåse Datalogi 1F: Forår 2003 Jørgen Sværke Hansen
Linking international students and Danish businesses.
Effektivitetstabet (fig. 11)
Datalogi 1F Forår 2003 Multiprogrammering[4] Kerner og processer Jørgen Sværke Hansen
Vores Bibliotek Brugerskabt biblioteksudvikling Sociale teknologier i fremtidens bibliotek 2.0 Temadag d. 27. september 2007, Danmarks Biblioteksskole,
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
Indsæt nyt billede: Format: B 254 x 190,5 mm Efter indsættelse, højreklik på billedet og placér det bagerst. Delete det gamle foto Restrictions on access.
ENTER The Clil4U project has been funded with support from the European Commission. This publication reflects the views only of the author, and the Commission.
Slide 1 of 11 © Ingeniørhøjskolen i Århus Presentation 14: Callbacks Objektorienteret Middleware (TIOOMI)
Vælg layout 1. Højre klik uden for dit slide 2. Vælg et passende layout fra “drop ned” menuen 3. Bemærk at der findes 4 forskellige farvetemaer du kan.
Datalogi 1F Forår 2003 Multiprogrammering[3] Eksempler på multiprogrammeringskerner Jørgen Sværke Hansen
Innovationsbehov erkendt, men hvad så? V/Dan Boding-Jensen, Vestforbrænding.
18. Strategisk analyse af interne forhold
- 3 books. Suzanne Marie Collins -Born in USA in 1962 August 10 -Her career began in She rode The hunger games in She has a husband and two.
Klik på nummerne i den rigtige rækkefølge
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.
Simulering af spisende filosoffer
Udvikling af immunforsvaret
Personal Leadership Bachelor of Leisure Management.
Forretning og Ledelse lektion 7 Kultur og Strategi.
SQL Jesper Tørresø DAB1 E September Punkter for i dag. SQL baggrund. Relationel algebra. SQL koncept –Vises ved brug af VS2008.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
 Processer og tråde  Implementation af tråde  Trådinterferens  Synkronisering  Atomare aktiviteter.
OPERATIONEL ANALYSE AF WEBADFÆRD OAW – LEKTIONSGANG 11.
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.
ØSTAFRIKA Fremtidens Vækstmarked 14. april 2011, Hotel Hvide Hus Køge.
Saint Ambrose High School. Cut cylinders and cones – Standard Grade If you are sitting an SQA Credit paper in Graphic Communication, you will be required.
Per P. MadsenStyresystemer og tjenester1 Threads.
DB analyse og modellering Jesper Tørresø DAB1 F Februar 2008.
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.
Supervisor’s toolbox Enhedens navn Sted og dato Dias 1 Approaches / styles Meta-communication Perspectives Caps Themes and progression Feedback and Assessment.
Datalogi 1F: Multiprogrammering[3] 1 Planen for idag Kerner uden afbrydelser (KB4 kap. 6): –akernen: kerne med decentralt processkift –bkernen: kerne med.
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.
 Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler.
Finansiering og Investering 2011 Finansiering og investering 2011 – 27. januar 2011 – PWC.
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.
RMS - Record Management System Record Store En Record er et bytearray af vilkårlig størrelse En RecordStore er et antal Records nummerede.
Mikkel deMib Svendsen Duplicate Content & Multiple Site Issue Mikkel deMib Svendsen
Similar Triangles Scavenger Hunt: Cut out each of the question slides and place them around the room, stick them on the walls if you wish. Print out and.
GIS and statistical data analysis Copenhagen September 11, 2013.
Mesterlære contra Ansvar for egen læring Kári J. Mikines Urologisk afdeling H Herlev Hospital.
OBS OBS OBS OBS OBS OBS OBS OBS !!!!! Prisen INDEN den 1. juni Prisen EFTER den 1. juni Dobbeltværelse Dkr. 1795,- Dobbeltværelse Dkr. 1995,- Enkeltværelse.
 Niels K. Kristensen  Lærer og int. Koordinator  Fjordbakkeskolen, Fredericia.
AARHUS UNIVERSITY Oktober 2013 Villum Research Station Henrik Skov, Morten Rasch og Bent Lorenzen Arctic Research Centre, Aarhus Universitet.
Finansiering og håndtering af potentielle investorer
SCALE-UP DENMARK Tue David Bak Direktør, Innovation & Vækst, Region Sjælland & Formand for Scale-Up Denmark Thank you to the Ambassador, Mrs Louise Jespersen.
Institutional Investor investing in infrastructure
Completing secondary education
Dansk HL7 CDA profil til deling af aftaler Data i en aftale
DB analyse og modellering
Compositional Design Principles “SemiCiv”
Software Testing Software testing.
MaaS i Europe Rasmus Lindholm.
Tilmelding til valgfag og seminarer på FSV BA
Annette Falberg, Dansk Industri Handel
WiseFlow En introduktion i anvendelsen af Wiseflow
Præsentationens transcript:

Semaforer Hvordan virker semop() hvis der er flere operationer ? I hvilken rækkefølge vækkes blokerede semaforer ? man semop.. The system call semantic assures that the operations will be performed if and only if all of them will succeed.... The process sleeps until..

Vække-rækkefølge P0P1P2 R

Testprogram Hovedprogram: Børneproces 1 Børneproces 2 1. p(); printf(".."); printf(".."); 2. printf("Start i k.r. "); p(); p(); 3. start børneproces 1 printf(".."); printf(".."); 4. start børneproces 2 v(); v(); 5. sleep(2); 6. printf(".. "); 7. v();

Testprogram.. main() { int pid,i; create_sem(); p(); printf("Hovedprogram starter i kritisk region \n"); for (i=1;i<=2;i++) { pid=fork(); if (pid==0) { printf("Proces %d på vej ind i kritisk region \n",i); p(); printf("Proces %d starter i kritisk region \n",i); v(); exit(0); } sleep(2); printf("Hovedprogram forlader kritisk region \n"); v(); }

Test-resultat (i) Hovedprogram starter i kritisk region Proces 1 på vej ind i kritisk region Proces 2 på vej ind i kritisk region Proces 1 starter i kritisk region Proces 2 starter i kritisk region Hovedprogram forlader kritisk region

Procestilstande kørende blokeretklar OS (skedulator) vælger næste klare proces Blokerede processer skal være klar før de kan køre igen

Semafor-implementation P1P2 Semafor For hver semafor vedligeholder operativsystemet information om hvilke processer, som er blokeret "på" semaforen. Hver gang semaforens heltalsværdi tælles op, "vækkes" de processer, som nu potentielt kan køre. Dvs. de markeres som "klar". Skedulatoren afgør hvem som kører først.

Testprogram (ii).. main() { int pid,i; create_sem(); p(); printf("Hovedprogram starter i kritisk region \n"); for (i=1;i<=2;i++) { pid=fork(); if (pid==0) { printf("Proces %d på vej ind i kritisk region \n",i); p(); printf("Proces %d starter i kritisk region \n",i); v(); exit(0); } sleep(2); printf("Hovedprogram forlader kritisk region \n"); v(); } switch(i) { case 1:.. case 2:.. }

Påvirkning af skedulering switch(i) { case 1: nice(19); } switch(i) { case 1: work(); } switch(i) { case 1: work(); case 2: work(..); }

Test-resultat (ii) Hovedprogram starter i kritisk region Proces 2 på vej ind i kritisk region Proces 1 på vej ind i kritisk region Proces 1 starter i kritisk region Proces 2 starter i kritisk region Hovedprogram forlader kritisk region

Kan jeg være sikker på mine test-resultater ? Børneproces 1 Børneproces 2 printf(".."); printf(".."); p(); p(); printf(".."); v(); Morale: Det er skedulatoren, der allokerer cpu-tid til processerne.

"Forhånds-bestilling" philosopher(int i) { while (TRUE) { think(); take_forks(i); eat(); put_forks(i+1); } take_forks(int i) { int left = i, right = (i+1) % 5; down(sem_left,sem_right); } semop() tilbyder flere semafor-operationer i samme kald til semop() semafor-værdier ændres kun hvis alle ændringer kan gennemføres uden blokering læs detaljer på man-sider

Semafor-arrays Enhver semafor tilhører et semafor-array Det er arrayet der identificeres af semafor-id-et Normalt bruges semafor-arrays med kun et enkelt element semop() giver mulighed for "alt-eller-intet" operationer på semaforer indenfor samme array

Grænseflade til semafor-arrays (forslag) create_mult_sem() // opret og initialiser // et array med 2 semaforer p_first() // p/down til første sem. p_second() // -- anden -- p_both() // -- begge v_first() v_second() v_both() del_mult_sem() // nedlæg semafor-arrayet

P1P2 Semafor 0Semafor 1 H Målsætning Skabe den viste tilstand Efter forespørgsler fra processer i rækkefølge H, P1, P2.

Testprogram (alt-eller-intet) Hovedprogram: 1. p_first(); 2. start børneproces 1 3. start børneproces 2 5. sleep(..); 4. v_first(); Børneproces 1 p_both(); v_both(); Børneproces 2 sleep(..); p_second(); v_second();

p_first(void) { struct sembuf sem_b; sem_b.sem_num = 0; // 0-te semafor sem_b.sem_op = -1; // p / down sem_b.sem_flg = SEM_UNDO; // omgør semop(min_sem_id,&sem_b, 1); } Kald af semop() (1 operation) På 0-te ("første") semafor Bemærk at sembuf-struktur parameter-overføres som adresse/pointer

p_second() { struct sembuf sem_b = {1,-1,SEM_UNDO}; semop(..,&sem_b, 1); } Kald af semop() (1 operation, forenklet) Initialisering af struktur ved hjælp af liste med attributter

p_both() { int i; struct sembuf sem_b[2] = {0,-1,SEM_UNDO, // 0-te semafor 1,-1,SEM_UNDO}; // 1-ste semafor semop(get_mult_semid(),sem_b, 2); } Kald af semop() (to operationer) Hvordan overføres arrayet sem_b ?