html5-img
1 / 15

5B040: Computerarchitectuur 2M200: Inleiding Computersystemen

5B040: Computerarchitectuur 2M200: Inleiding Computersystemen. Sessie 8(2): Multi-processing. Wat is multiprocessing:. Meerdere programma’s (processen) ‘tegelijk’ uitvoeren. Bij professionele apparatuur door meerdere processoren. Multitasking op de PC: Multiprocessing door Time-Sharing.

chesmu
Download Presentation

5B040: Computerarchitectuur 2M200: Inleiding Computersystemen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 5B040: Computerarchitectuur2M200: Inleiding Computersystemen Sessie 8(2): Multi-processing

  2. 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 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 Multiprocessing

  4. P1 PC1 P2 PC2 Tijd Tijd P1 PC1 P2 PC2 Tijd Tijd Multiprocessing door de µsec heen: > 1 CPU 1 CPU

  5. 1/ Implementatie van Multitasking: • Meerdere CPU’s1/ 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

  6. 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 Voorbeeld met Communicatie: MP3-decoder CD-writer software Audio driver CD-writer

  7. buf 0 s-1 FIFO buffer: 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. Werking FIFO-buffer: IN OUT

  9. Producer Consumer while true { x:=berekeningif ((in+1)%s=out) wait; buf[in]:=x; in:=(in+1)%s;if ((out+1)%s=in) start C} while true {if (in=out) wait; x:=buf[out]; verwerk(x); out:=(out+1)%sif (out=(in+2)%s) start P} Producer/Consumer in PasC: while true { while true { x:=berekening if (in=out) if ((in+1)%s=out) wait; x:=buf[out]; verwerk(x); out:=(out+1)%s if (out=(in+2)%s) start P } Situatie: (in+1)%s=out

  10. 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. 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. Actie S = 0 S > 0 Acties op Semaforen (S): Verhoog S:=S+1; Als er processen ‘slapen’ op de semafoor; maak deze wakker S:=S+1 Verlaag Ga slapen S:=S-1

  13. 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. 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. Mutual exclusion met Semafoor: S=1 S=0 S=1 S=0

More Related