Összesítés
- Egy számítógépprogram a szekvenciális, párhuzamos, elosztott és egyidejű programok osztályainak egyikébe sorolható be.
- A szekvenciális programok a program sorrendjében futnak egyetlen CPU-n (pontosabban egyetlen processzormagon).
- Az egyidejű programok olyan szekvenciális programok halmazai, amelyek futás közben egy vagy több CPU-n osztoznak az időben.
- A párhuzamos programok olyan szekvenciális programok halmazai, amelyek egymást átfedő időtartamokban, egymással párhuzamosan futnak külön CPU-kon.
- Az önálló, hálózatba kötött számítógépek külön CPU-in futó párhuzamos programokat elosztott programoknak nevezzük.
- A szál az a legkisebb utasítássorozat, amelyet egy operációs rendszer az ütemezővel kezelni tud. Egy folyamatot több szál alkot, amelyek mindegyike a processzornak ugyanazon a címterén osztozik. Egy tevékenység több folyamatból állhat, több tevékenység pedig általában egy feladatként van csoportosítva.
- Az elosztott programozás sok olyan probléma megoldásához nélkülözhetetlen, mint a természettudományos számítások, a big data jellegű számítások, az adatbázisok vagy a keresőmotorok.
- A felhőhöz készülő elosztott programok tervezését több szempont határozza meg, nevezetesen a programozási modell, a számítási modell és a program-architektúra.
- A tipikus programozási modellek közé tartozik a memóriamegosztási modell és az üzenetátadási modell.
- A memóriamegosztási modell egy megosztott címteret tételez fel, amely minden tevékenység számára elérhető. A tevékenységek ennek a megosztott címtérnek az olvasásával és írásával kommunikálnak. A tevékenységek közötti kommunikációt explicit módon szinkronizálni kell (olyan szerkezetekkel, mint a határok, szemaforok és zárolások). A memóriamegosztási modellt használó programozási nyelvekre példa az OpenMP.
- Az üzenetátadási modellben a tevékenységek nem osztoznak közös címtéren, és csak üzenetek explicit küldése és fogadása útján kommunikálhatnak egymással. Az üzenetátadási modellt használó programozási nyelvekre példa az MPI.
- A programozási modellek a szinkron és az aszinkron kategóriák egyikébe is besorolhatók a párhuzamosan futó különböző tevékenységek szervezése alapján. A szinkron programozási modellek kikényszerítik az összes összetevő tevékenység lépésenként összehangolt működését, az aszinkron modellek pedig nem.
- A programok az általuk megvalósított párhuzamosság típusa szerint is osztályozhatók. Lehetnek adatalapúan vagy gráfalapúan párhuzamosak.
- Az adatalapú párhuzamos modellek elsősorban az adatokat osztják szét több számítógépre, és mindegyiken ugyanazt a kódot futtatják. Ez a modelltípust egy program, több adat (SPMD) modellnek is nevezik.
- A gráfalapú párhuzamossági modellek lényege nem az adatok, hanem a számítások elosztása. Ez a modelltípust több program, több adat (MPMD) modellnek is nevezik.
- Egy elosztott programozási modellben a tevékenységek két különböző architektúra-modellben rendezhetők el: aszimmetrikus/fölé- és alárendelő, vagy szimmetrikus/egyenrangú.
- A fölé- alárendelő szervezéshez az szükséges, hogy egy tevékenység külön főtevékenységként legyen kijelölve, amely az alárendelt tevékenységek körében koordinálja a program végrehajtását.
- Az egyenrangú szervezés egyforma tevékenységekből áll, de ebben bonyolultabb sémák szükségesek a számítások megszervezéséhez és a döntések meghozatalához.
- A felhőalapú programok készítése során fellépő jelentősebb megoldandó problémák közé tartozik a méretezhetőség, a kommunikáció, a heterogenitás, a szinkronizálás, a hibatűrés és az ütemezés kezelése.
- A programok az Amdahl-törvény értelmében nem gyorsíthatók fel tetszőlegesen. Ez a törvény a program gyorsításának mértékét annak az aránynak a függvényeként fejezi ki, amennyit a program a végrehajtási idejéből a szekvenciális kódra fordít.
- Az elosztott tevékenységek közötti kommunikáció hatékony kezelése sok alkalmazás teljesítményét meghatározza. A felhőbeli kommunikáció szűk keresztmetszeteit feloldó stratégiák közé tartozik a sokat kommunikáló tevékenységek közös elhelyezése, valamint az adatparticionálás hatékony kezelése, hogy az adatok a hozzájuk legközelebbi csomópontokra legyenek leképezve.
- A felhők sajátossága a mögöttes fizikai hardver heterogenitása, amelyet a végfelhasználók számára általában elfed a virtualizáció. Azoknál a felhőben futó programoknál, amelyek képesek felmérni a heterogén hardvert és alkalmazkodni hozzá, ennek előnye a teljesítményben mutatkozik meg.
- Az elosztott programozásban robusztus szinkronizálási technikák szükségesek az olyan problémák kezelésére, mint a holtpontok.
- A hibatűrés biztosítása nagy kihívás a felhőbe szánt programok írása során. A felhőben futó programoknak fel kell készülniük a szoftver és a hardver meghibásodásaira, és az azokból való helyreállásra.
- A tevékenységek és feladatok ütemezési technikái a felhő erőforrásainak sajátosságait számításba véve maximalizálják a teljesítményt.