Programowanie wspolbiezne

Transkrypt

Programowanie wspolbiezne
3URJUDPRZDQLHZVSyáELH*QHZVW
S
Problem sortowania N liczb
• Algorytm sekwencyjny
sortuj(1, N);
2
NRV]WVRUWRZDQLDSU]H]SURVW]DPLDQ
N SRUyZQD
• $OJRU\WPUyZQROHJá\
cobegin {wykonaj równolegle}
VRUWXMSyáB1
VRUWXMSyáB11
coend;
VFDODMSyáB11
2
NRV]WDOJRU\WPXUyZQROHJáHJRN /8) + NSRUyZQD
• $OJRU\WPUHNXUHQF\MQ\NWyU\QDND*G\PSR]LRPLHUHNXUHQFML
wykonuje równolegle dwa sortowania:
- koszt: 1 +3 + 7 + 15 + ... + (N-1) < 2N
Z\PDJDX*\FLDN/2 procesorów
• =áR*RQRüLORF]\QRZD algorytmu:
rozmiar (liczba procesorów) × czas
$OJRU\WP\VRUWRZDQLDUyZQROHJáHJR
2
- zrównoleglone sortowanie przez scalanie: Ο(N )
4
VLHüVRUWXMFDSDU]\VWRQLHSDU]\FLH2N × (log N) )
RSW\PDOQDVLHüVRUWXMFD2N × log N)
6LHüRVWDá\FKSRáF]HQLDFKND*G\SURFHVRUMHVWSRáF]RQ\]H
VWDáOLF]ESURFHVRUyZVVLDGXMF\FK
W sieci parzysto-nieparzystej]ND*GHJRNRPSDUDWRUDNRU]\VWDVL
tylko raz
Sieci systoliczneSRGF]DVSRMHG\QF]HJRSU]HELHJXSURFHVRU\V
uaktywniane wielokrotnie
5yZQROHJáRüLSRWHQFMDOQDUyZQROHJáRü
QDSR]LRPLHVSU]
WX
- na poziomie oprogramowania
3URJUDPRZDQLHZVSyáELH*QH
1RWDFMDLWHFKQLNLGRZ\UD*DQLDSRWHQFMDOQHMUyZQROHJáRFL
- Problem synchronizacji i komunikacji
cobegin
VRUWXMSyáBQ
VRUWXMSyáBQQ
coend;
VFDODMSyáBQQ
5yZQROHJáRüPR*HQLHW\ONRXVSUDZQLüG]LDáDQLHSURJUDPXDOH
UyZQLH*SRSUDZLüMHJRMDNRüSHZQHSUREOHP\
SURJUDPLVW\F]QHV]QDWXU\UyZQROHJáH
cobegin
while(TRUE) { /* proces 1 */
czytaj znak z klawiatury;
pisz go do portu szeregowego;
}
while (TRUE) { /* proces 2 */
czytaj znak z portu szeregowego;
pisz go na ekran;
}
coend;
3URFHV\ZVSyáELH*QH
• Proces sekwencyjnyUHDOL]DFMDSURJUDPXZRNUHORQ\P
URGRZLVNXEG(ZVWU]\PDQDUHDOL]DFMDZRF]HNLZDQLXQD
pewne zdarzenie
• Cechy procesu sekwencyjnego:
- obiekt aktywny, który ma przydzielone zasoby
- stany
Wykonywany
Zawieszony
Gotowy
Proces ma przydzielony
procesor wirtualny
• 'ZDSURFHV\VHNZHQF\MQHVZVSyáELH*QHMHOLZ\NRQ\ZDQLH
MHGQHJR]QLFK]DF]
áRVL
SRUR]SRF]
FLXDOHSU]HG
]DNRF]HQLHPGUXJLHJR
P1
P2
czas
• :VSyáELH*QRü jako DEVWUDNFMDUyZQROHJáRFL
• 3URJUDPZVSyáELH*Q\VNáDGDVL
]NLONXFRQDMPQLHMGZyFK
SURJUDPyZVHNZHQF\MQ\FKNWyU\FKFLJLZ\NRQDZF]HV
SU]HSOHFLRQH3URFHV\WH]Z\NOHPXV]VL
NRPXQLNRZDü, aby
V\QFKURQL]RZDüG]LDáDQLHOXEZ\PLHQLDüGDQH
• Klasyfikacja:
procesy
UR]áF]QH
interakcyjne
konkurencyjne
ZVSyá]DZRGQLF]FH
NRRSHUXMFH
ZVSyáSUDFXMFH
3RSUDZQRüSURJUDPyZZVSyáELH*Q\FK
• 1LHSU]\GDWQRüWHVWRZDQLDND*GRUD]RZHZ\NRQDQLHEá
GQHJR
SURJUDPXPR*HGDüLQQ\Z\QLN
• &LJZ\NRQDZF]\SURJUDPXZVSyáELH*QHJRklasa
SU]HSOHFLRQ\FKFLJyZZ\NRQDZF]\FKSURFHVyZVNáDGRZ\FK
• 'ODZ\ND]DQLDQLHSRSUDZQRFLZ\VWDUF]\SRGDüMHGHQ
VFHQDULXV]SU]HSODWDQLDRSHUDFMLGODNWyUHJRMHVW(OH
:áDVQRFLSURJUDPyZ
• :áDVQRü]DSHZQLDQLDEH]SLHF]HVWZDDQJsafety)
DQDORJLDGRF]
FLRZHMSRSUDZQRFLZSURJUDPRZDQLX
sekwencyjnym
- wynika z jawnej i statycznej specyfikacji programowanego
problemu
SU]\NáDG*GDQLHZ]DMHPQHJRZ\NOXF]DQLDUHMRQyZNU\W\F]Q\FK
ZDUXQHNEH]Z]JO
GQ\QLH]PLHQLDVL
ZF]DVLHZ\NRQ\ZDQLD
programu)
• :áDVQRü*\ZRWQRFL (ang. liveness)
DQDORJLDGRFDáNRZLWHMSRSUDZQRFLZáDVQRüVWRSX
GRW\F]\G\QDPLF]Q\FKDVSHNWyZND*GHRF]HNLZDQH]GDU]HQLH
NLHG\QDVWSL
SU]\NáDG\QDUXV]HQLDzastój, ]DJáRG]HQLH
Zastój (ang. deadlockND*G\SURFHVZSHZQ\P]ELRU]HSURFHVyZ
F]HNDQD]GDU]HQLHNWyUHPR*HE\üVSRZRGRZDQHW\ONRSU]H]
proces z tego zbioru
przydzielony
Zasób A
P1
potrzebny
potrzebny
P2
Zasób B
przydzielony
=DJáRG]HQLH (ang. starvationSURFHVMHVWQLHVNRF]HQLHGáXJR
ZVWU]\P\ZDQ\JG\*]GDU]HQLHQDNWyUHF]HND]DZV]H
powoduje wznowienie innego procesu
PQLHMJUR(QHSURFHVRUQDGDOZ\NRQXMHVHQVRZQSUDF
- zwykle trudniejsze do wykrycia
• 6SUDZLHGOLZRüQLHGHILQLXMHP\IRUPDOQLHF]DVDPLE
G]LHP\
FHORZRRGQLHMRGVW
SRZDüSULRU\WHW\
• Pomocny formalizm: logika temporalna
SR]QDF]D*HSMHVWzawsze prawdziwe
◊SR]QDF]D*HSZNRFXE
G]LHSUDZG]LZH
3RGDQHRSHUDWRU\XáDWZLDMZQLRVNRZDQLHRVWZLHUG]HQLDFK
NWyU\FKSUDZG]LZRü]PLHQLDVL
ZF]DVLH
• 8GRZRGQLHQLHSRSUDZQRFLSURJUDPXZVSyáELH*QHJRZ\PDJD
Z\ND]DQLD*HVVSHáQLRQH]DUyZQRZáDVQRFL]DSHZQLDQLDMDN
L*\ZRWQRFL
Schemat procesu
repeat
operacje lokalne
SURWRNyáZVW
SQ\
rejon krytyczny
SURWRNyáNRFRZ\
forever
• Operacje lokalne - faza nieistotna z punktu widzenia
V\QFKURQL]DFML3URFHVPR*HVL
]DWU]\PDüZVZRMHMVHNFML
ORNDOQHMDOHQLHPR*HWR]DNáyFLüSUDF\SR]RVWDá\FKSURFHVyZ
• Rejon krytycznyID]DZ\PDJDMFDV\QFKURQL]DFML3U]HZD*QLH
chodzi o wzajemne wykluczanieVL
UHMRQyZZáDVQRü
]DSHZQLDQLD-HOLNLONDSURFHVyZSUyEXMHZHMüGRVZRLFK
UHMRQyZNU\W\F]Q\FKWRMHGQHPXPXVLVL
WRZNRFXXGDü
EUDN]DVWRMX-HOLSURFHVFKFHZHMüGRUHMRQXNU\W\F]QHJRWR
ZNRFXZHMG]LHEUDN]DJáRG]HQLD
3URWRNRá\NRQVWUXNFMHV\QFKURQL]XMFHSUREOHPM
]\ND
VSHF\ILNDFML0XV]E\üNUyWNLHLHIHNW\ZQH
3U]\MPRZDQH]DáR*HQLD
• 3URFHV\VVáDERSRZL]DQH (ang. loosely connectedZL
NV]Rü
F]DVXSURFHVSRZL
FDQDVZRMHRSHUDFMHORNDOQHDZUHMRQLH
krytycznym przebywa krótko i okazjonalnie
• 1LHZROQRQLF]DNáDGDüREH]Z]JO
GQ\FKLZ]JO
GQ\FK
V]\ENRFLDFKZ\NRQ\ZDQLD
• -HG\QH]DáR*HQLDGRW\F]FHF]DVXNWyUHVL
SU]\MPXMHWR
*DGHQSURFHVQLHSR]RVWDMHQLHVNRF]HQLHGáXJRZVZRLPUHMRQLH
krytycznym
MHOLVSURFHV\JRWRZHWRZVNRF]RQ\PF]DVLHMHGHQ]QLFK
przejdzie w stan wykonywania
Systemy scentralizowane i rozproszone
• ']LHORQH]PLHQQHJOREDOQHMDNRUHSUH]HQWDFMDSDPL
FLZVSyOQHM
w systemach scentralizowanych i wieloprocesorach
• .RPXQLNDFMDSURFHVyZSRSU]H]Z\V\áDQLHLRGELHUDQLH
komunikatów w systemach rozproszonych
.ODV\F]QHSUREOHP\ZVSyáELH*QRFL
• Problem producenta i konsumenta
3U]\NáDG]*\FLD: fabryka, magazyn, odbiorca
3U]\NáDG]V\VWHPyZOLF]F\FKX*\WNRZQLNNRPSXWHUDEXIRU
klawiatury, system operacyjny
:DUXQNLSRSUDZQRFL
.RQVXPHQWSRELHUDSRUFM
Z\SURGXNRZDQSU]H]SURGXFHQWD
- Producent czeka na wolne miejsce w buforze
.RQVXPHQWF]HNDQDSHáQHPLHMVFHZEXIRU]H
Warianty:
- bez bufora
- bufor jednoelementowy
- bufor N-elementowy
- bufor nieograniczony (producent nie czeka)
- wielu producentów
- wielu konsumentów
SRUFMHUy*QHMZLHONRFL
=DMPXMHP\VL
V\QFKURQL]DFMSURGXFHQWDLNRQVXPHQWD3UREOHP
GRERUXZLHONRFLEXIRUDMHVWSR]DQDV]\PL]DLQWHUHVRZDQLDPL
• Problem czytelników i pisarzy
3U]\NáDG: rezerwacja miejsc lotniczych
:DUXQNLSRSUDZQRFL
- Gdy pisarz zapisuje, nikt inny nie czyta, ani nie pisze
*G\F]\WHOQLNF]\WDLQQLF]\WHOQLF\PRJF]\WDü
Warianty:
SULRU\WHWF]\WHOQLNyZGRSXV]F]HQLH]DJáRG]HQLDSLVDU]\
SULRU\WHWSLVDU]\GRSXV]F]HQLH]DJáRG]HQLDF]\WHOQLNyZ
UyZQHSULRU\WHW\EH]PR*OLZRFL]DJáRG]HQLD
- ograniczona liczba miejsc w czytelni
• 3UREOHPSL
FLXILOR]RIyZ
3U]\NáDGDEVWUDNF\MQ\DOHXND]XMF\SRGVWDZRZHSUREOHP\
ZVSyáELH*QRFL
Warianty narodowe:
ZáRVNLILOR]RIRZLHMHG]PDNDURQZLGHOFDPL
FKLVNLILOR]RIRZLHMHG]U\*SDáHF]NDPL
:DUXQNLSRSUDZQRFL
)LOR]RIMHMHOLPDREDZLGHOFH
)DGHQZLGHOHFQLHPR*HE\üMHGQRF]HQLHZSRVLDGDQLXGZyFK
filozofów
Warianty:
ZLGHOFHSRGQRV]RQHSRNROHLPR*OLZRüEORNDG\
ZLGHOFHSRGQRV]RQHMHGQRF]HQLHPR*OLZRü]DJáRG]HQLD
- dodatkowo lokaj