Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdSebastiaan Verbeek Laatst gewijzigd meer dan 10 jaar geleden
1
1/1/ / faculty of Computer Science eindhoven university of technology 5B040:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 8(2): Multi-processing
2
1/1/ / faculty of Computer Science eindhoven university of technology Wat is multiprocessing: Meerdere programma’s (processen) ‘tegelijk’ uitvoeren. Bij professionele apparatuur door meerdere processoren. Multitasking op de PC: Multiprocessing door Time-Sharing.
3
1/1/ / faculty of Computer Science eindhoven university of technology Multiprocessing >1 CPU écht sneller vaak voor 1 gedistribueerde taak technieken vaak voor processorbeheer 1 CPU met name makkelijk om meerdere taken uit te voeren technieken voor proces beheer
4
1/1/ / faculty of Computer Science eindhoven university of technology Multiprocessing door de µsec heen: Tijd P1 P2 Tijd PC1 PC2 Tijd P1 P2 Tijd PC1 PC2 > 1 CPU 1 CPU
5
1/1/ / faculty of Computer Science eindhoven university of technology Implementatie van Multitasking: Meerdere CPU’s 1/ voorbeeld: –Netwerk van 400 processoren (T800/T805) –Elk 25 MHz met 1 tot 4 Mb lokaal geheugen –Elke CPU heeft 4 asynchrone communicatiekanalen (± RS232) voor 1,5Mb/sec elk. Bij 1 CPU: –Coroutines (slecht) –Via Interrupt 1/1/
6
1/1/ / faculty of Computer Science eindhoven university of technology Voorbeeld met Communicatie: Producer: Bereken waarde als buffer vol is, wacht Zet waarde in buffer als buffer leeg was, start C Volgende waarde Consumer: als buffer leeg is, wacht Lees waarde uit buffer Verwerkt waarde als buffer vol was, start P Volgende waarde MP3-decoder CD-writer software MP3-decoder CD-writer software Audio driver CD-writer Audio driver CD-writer
7
1/1/ / faculty of Computer Science eindhoven university of technology FIFO buffer: buf 0s-1 in = volgende vrije plaats out= volgende te lezen waarde in=out buffer leeg in=(out-1)mod s buffer vol [if (k<s-1) return k+1;else return 0; return (k+1)%s]
8
1/1/ / faculty of Computer Science eindhoven university of technology Werking FIFO-buffer: IN OUT
9
1/1/ / faculty of Computer Science eindhoven university of technology Producer/Consumer in PasC: while true { x:=berekening if ((in+1)%s=out) wait; buf[in]:=x; in:=(in+1)%s; if ((out+1)%s=in) start C } Producer while true { if (in=out) wait; x:=buf[out]; verwerk(x); out:=(out+1)%s if (out=(in+2)%s) start P } Consumer if (in=out) x:=berekening while true { x:=buf[out]; verwerk(x); out:=(out+1)%s if (out=(in+2)%s) start P } if ((in+1)%s=out) wait; Situatie: (in+1)%s=out
10
1/1/ / faculty of Computer Science eindhoven university of technology Race Condities: Voorgaand effect noemen we een Race- conditie, omdat na het vrijmaken van een buffercel er een ‘race’ onstaat over wie de nieuwe waarde als eerste test! Probleem is dat de programma’s op ieder moment kunnen worden onderbroken. Dijkstra’s oplossing: Semaforen! (zijn onderdeel van Operating Systeem)
11
1/1/ / faculty of Computer Science eindhoven university of technology Semaforen: Een semafoor is een geheel getal dat niet negatief mag worden. Er zijn twee operaties mogelijk op semaforen: –Verhogen –Verlagen Deze operaties zijn atomair (dus kunnen niet worden onderbroken) Als verlagen niet kan (semafoor is 0), dan blokkeert het ‘verlagende’ proces.
12
1/1/ / faculty of Computer Science eindhoven university of technology Acties op Semaforen (S): ActieS = 0S > 0 S:=S+1; Als er processen ‘slapen’ op de semafoor; maak deze wakker S:=S+1Verhoog Ga slapenS:=S-1Verlaag
13
1/1/ / faculty of Computer Science eindhoven university of technology Gebruik van Semaforen: In plaats van in en out gebruiken we semaforen filled en available. –filled=0 ; dan buffer leeg; Consumer blokkeert –available=0 ; dan buffer vol; Producer blokkeert. Omdat er tussen het testen van de semafoor en het blokkeren van het proces geen onderbreking plaatsvindt, gaat dit goed.
14
1/1/ / faculty of Computer Science eindhoven university of technology Semaforen erg flexibel: Semaforen lossen niet alleen het race- condition probleem op. Ze zijn ook heel goed bruikbaar voor Mutual exclusion voor een willekeurig aantal processen! Wat is mutual exclusion? –Van een aantal ‘parallelle processen’ mag er telkens maar één tegelijk een bepaald gedeelte uitvoeren. –Bijvoorbeeld het gedeelte dat een database update uitvoert.
15
1/1/ / faculty of Computer Science eindhoven university of technology Mutual exclusion met Semafoor: S=1 S=0 S=1 S=0
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.