[OPGELOST] H10 semaphores

Gebruikersavatar
ideglier
Prof in de forumwetenschappen
Prof in de forumwetenschappen
Berichten: 5400
Lid geworden op: 11 okt 2008, 18:27
Locatie: Asse

[OPGELOST] H10 semaphores

Berichtdoor ideglier » 16 jan 2010, 15:30

Wat is het doel van semaforen? En wat doet het programma precies bij process communicating through circular buffer? Slides 29-34
I love the smell of petrol in the morning. Smells like ... SPEED!
Afbeelding
Gebruikersavatar
AdamCooman
The IRW God
The IRW God
Berichten: 2376
Lid geworden op: 28 nov 2007, 18:19
Locatie: Aalst
Contacteer:

Re: Hoofdstuk 10 semaphores

Berichtdoor AdamCooman » 18 jan 2010, 16:34

een semafoor is een gedeelde variabele die enkel kan aangepast worden met atomaire instructies down en up

down vermindert de waarde van de semafoor, en als de waarde op 0 staat wordt het proces in slaapstand gezet
up verhoogt de waarde van de semafoor en maakt een proces wakker als er in slaap liggen.

stel ge hebt een stuk waar maar 1 thread tegelijkertijd in mag, dan maken we een semafoor mutex die 1 als beginwaarde heeft

er komt een programmatje toe aan die critische sectie, doet down van mutex en gaat in de critische sectie
als een andere thread dan in die critische sectie wilt staat mutex op 0 en wordt het thread in slaap gezet tot het andere thread uit de critische sectie gaat en up van mutex doet, dan kan het slapende thread binnen en zijn ding doen.

het voordeel van dat slapen is dat die andere thread dan niet de hele tijd zit te kijken of het binnen mag.
AdamCooman The IRW God
Als een link niet meer werkt, bezoek mijn site om het bestand te vinden
Afbeelding

Mooiste avatar: AdamCooman
Beste moderator: AdamCooman
Gebruikersavatar
AdamCooman
The IRW God
The IRW God
Berichten: 2376
Lid geworden op: 28 nov 2007, 18:19
Locatie: Aalst
Contacteer:

Re: Hoofdstuk 10 semaphores

Berichtdoor AdamCooman » 18 jan 2010, 16:47

Allright, circular buffer ding

er mag maar een iemand tegelijk in de buffer, dus we hebben weer een mutex (semafoor met waarde 1)
er kan in de buffer geschreven worden als hij lege plaatsen heeft daarvoor maken we ook een semafoor die aangeeft hoe veel lege plaatsen er zijn
er kan uit de buffer gelezen worden als hij volle plaatsen bevat, dus nog een semafoor die aangeeft hoeveel volle plaatsen er zijn

in het begin is de buffer leeg, dus empty is buffersize en full is 0

Stel ge wilt iets printen met zo'n ding, dan wilt ge iets schrijven. de mutex uitleg is dezelfde uit mijn vorige post, dan moet er gewoon gekeken worden of er vrije plaatsen zijn, op exact dezelfde manier als die mutex. als het niet zo is gaat het proces in slaap tot er een plaats vrij komt, als het wel zo is wordt het gewekt en kan het beginnen schrijven.

De printer doet hetzelfde, maar dan met lezen, dus hij controleert de full semafoor en print iets als die niet 0 is en gaat in slaap als hij wel 0 is om gewekt te worden als er iets in de buffer geschreven wordt.
AdamCooman The IRW God
Als een link niet meer werkt, bezoek mijn site om het bestand te vinden
Afbeelding

Mooiste avatar: AdamCooman
Beste moderator: AdamCooman
Gebruikersavatar
ideglier
Prof in de forumwetenschappen
Prof in de forumwetenschappen
Berichten: 5400
Lid geworden op: 11 okt 2008, 18:27
Locatie: Asse

Re: [OPGELOST] Hoofdstuk 10 semaphores

Berichtdoor ideglier » 18 jan 2010, 17:43

all right! Thanks Adam!
I love the smell of petrol in the morning. Smells like ... SPEED!
Afbeelding

Terug naar “Computersystemen”

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 1 gast

cron