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