Összesítés

Befejeződött
  • 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.