3URJUDPRZDQLHZVSyáELH*QHZVWS Problem sortowania N liczb Algorytm sekwencyjny sortuj(1, N); NRV]WVRUWRZDQLDSU]H]SURVW]DPLDQN 2 SRUyZQD $OJRU\WPUyZQROHJá\ cobegin {wykonaj równolegle} VRUWXMSyáB1 VRUWXMSyáB11 coend; VFDODMSyáB11 NRV]WDOJRU\WPXUyZQROHJáHJRN 2 /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 - zrównoleglone sortowanie przez scalanie: Ο(N 2 ) VLHüVRUWXMFDSDU]\VWRQLHSDU]\FLH2N (log N) 4 ) 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 'ZDSURFHV\VHNZHQF\MQHVZVSyáELH*QHMHOLZ\NRQ\ZDQLH MHGQHJR]QLFK]DF]áRVLSRUR]SRF]FLXDOHSU]HG ]DNRF]HQLHPGUXJLHJR P1 P2 Proces ma przydzielony procesor wirtualny czas :VSyáELH*QRü jako DEVWUDNFMDUyZQROHJáRFL 3URJUDPZVSyáELH*Q\VNáDGDVL]NLONXFRQDMPQLHMGZyFK SURJUDPyZVHNZHQF\MQ\FKNWyU\FKFLJLZ\NRQDZF]HV SU]HSOHFLRQH3URFHV\WH]Z\NOHPXV]VLNRPXQLNRZDü, 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]JOGQ\QLH]PLHQLDVLZF]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 P1 potrzebny Zasób A Zasób B potrzebny P2 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]DVDPLEG]LHP\ FHORZRRGQLHMRGVWSRZDüSULRU\WHW\ Pomocny formalizm: logika temporalna SR]QDF]D*HSMHVWzawsze prawdziwe SR]QDF]D*HSZNRFXEG]LHSUDZG]LZH 3RGDQHRSHUDWRU\XáDWZLDMZQLRVNRZDQLHRVWZLHUG]HQLDFK NWyU\FKSUDZG]LZRü]PLHQLDVLZF]DVLH 8GRZRGQLHQLHSRSUDZQRFLSURJUDPXZVSyáELH*QHJRZ\PDJD Z\ND]DQLD*HVVSHáQLRQH]DUyZQRZáDVQRFL]DSHZQLDQLDMDN L*\ZRWQRFL Schemat procesu repeat operacje lokalne SURWRNyáZVWSQ\ 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 wykluczanievluhmrqyzzádvqrü ]DSHZQLDQLD-HOLNLONDSURFHVyZSUyEXMHZHMüGRVZRLFK UHMRQyZNU\W\F]Q\FKWRMHGQHPXPXVLVLWRZNRFXXGDü 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 connectedzlnv]rü F]DVXSURFHVSRZLFDQDVZRMHRSHUDFMHORNDOQHDZUHMRQLH krytycznym przebywa krótko i okazjonalnie 1LHZROQRQLF]DNáDGDüREH]Z]JOGQ\FKLZ]JOGQ\FK V]\ENRFLDFKZ\NRQ\ZDQLD -HG\QH]DáR*HQLDGRW\F]FHF]DVXNWyUHVLSU]\MPXMHWR *DGHQSURFHVQLHSR]RVWDMHQLHVNRF]HQLHGáXJRZVZRLPUHMRQLH krytycznym MHOLVSURFHV\JRWRZHWRZVNRF]RQ\PF]DVLHMHGHQ]QLFK przejdzie w stan wykonywania Systemy scentralizowane i rozproszone ']LHORQH]PLHQQHJOREDOQHMDNRUHSUH]HQWDFMDSDPLFLZVSyOQHM 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.RQVXPHQWSRELHUDSRUFMZ\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\VLV\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 3UREOHPSLFLXILOR]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