A számítógép-programok kategóriái

Befejeződött

A számítógépes program egy számítási algoritmust valósít meg, és tartalmazza a változók deklarációit, az értékek változókhoz rendelését, kifejezéseket és folyamatvezérlő utasításokat, amelyek általában egy magas szintű programozási nyelven, például Java vagy C++ nyelven vannak kifejezve. A végrehajtásuk előtt a programokat általában lefordítják, majd átalakítják a központi feldolgozó egység (CPU, processzor) által szekvenciálisan vagy egyidejűleg futtatható gépi utasításokká/kóddá. A szekvenciális programok a program sorrendjében (tehát az utasítások programozó által megadott sorrendjében) futnak.

Az egyidejű programok ezzel szemben olyan szekvenciális programok halmazai, amelyek futás közben egy vagy több CPU-n osztoznak az időben. Ezzel az időosztással több program felváltva használhat egyetlen számítási erőforrást. Olyan CPU esetében, amely egyszerre egy programot képes futtatni, több szekvenciális program egy processzoron való futtatásához az operációs rendszernek valamilyen ütemezési stratégiát, például ciklikus időszeletelést alkalmazva kell lefoglalnia az erőforrást az egyes programok számára egy meghatározott időtartamra.

Our taxonomy of programs.

1. ábra: A programok osztályozása

Az általános alkalmazás kifejezés, gyakran félreérthetően, szekvenciális és egyidejű programot is jelenthet, az utóbbiakat pedig olykor párhuzamos programoknak is nevezik. A párhuzamos program olyan szekvenciális programok halmaza, amelyek egymást átfedő időtartamokban futnak külön CPU-kon. Többprocesszoros rendszerekben, például többmagos processzorlapkával szerelt gépeken a külön magokon végrehajtott, egymással összefüggő szekvenciális programok együttesen párhuzamos programot alkotnak. Ezzel szemben azok az egymással összefüggő szekvenciális programok, amelyek egyetlen CPU idején osztoznak, egyidejű programot képeznek. Ebben a leckében megkülönböztetjük továbbá azokat a párhuzamos programokat, amelyek több különálló, hálózatba kötött számítógépen (nem pedig egyetlen gép különböző magjain) futó szekvenciális programokból állnak. Ezeket elosztott programoknak nevezzük. Az előző ábra a programoknak ezt az osztályozását mutatja be.

A párhuzamos/elosztott programozás másik gyakran használt szakkifejezése a többfeladatos feldolgozás, amely arra vonatkozik, hogy egy program számításai átfedésben vannak egy másikéival. Ez a fogalom minden modern operációs rendszerben központi szerepet tölt be, és olyan ütemezési mechanizmust ír le, amellyel egy operációs rendszer több programot képes egyszerre kiszolgálni. A többfeladatos feldolgozás annyira hasznosnak bizonyult, hogy már minden modern programozási nyelv támogatja a többszálú szerkezetek által.

A „szál” kifejezés a Pthreads (POSIX-szálak)1 kapcsán terjedt el, amely az egyidejűségi szerkezetek széles körben, elsősorban UNIX rendszereken alkalmazott specifikációja.2 Egy végrehajtási szál az a legkisebb utasítássorozat, amelyet egy operációs rendszer kezelni tud az ütemezőjével. A szál fogalma szorosan összefügg a folyamatéval: egy szál egy folyamat címterében fut, a folyamat viszont a saját címterében. Egy folyamat tehát egy vagy több szálat tartalmazhat, a szálak pedig nem önálló munkaegységek. A különböző folyamatok elvileg nem osztoznak a memórián, az egy folyamaton belüli szálak viszont mind osztoznak a szülőjük címterén.

A tevékenység egy másik kifejezés, amely egy kis munkaegységre hivatkozik, és ebben a leckében a "folyamat" kifejezésre használjuk. Emellett közösen jelöljük azokat a tevékenységeket (esetleg csak egyet), amelyek ugyanahhoz a programhoz/alkalmazáshoz tartoznak, mint egy feladat. Egy alkalmazás több feladatot is magában foglalhat. Egy folyadékdinamikai alkalmazás például általában három feladatból áll, amelyek egymástól függetlenül felelnek a szerkezeti, áramlástani és hőtani elemzésekért. Az egyes feladatok több tevékenységen keresztül végzik el a munkát. Az alábbi ábra a folyamat, a szál, a tevékenység, a feladat és az alkalmazás fogalmát szemlélteti.

A demonstration of the concepts of processes, threads, tasks, jobs, and applications.

2. ábra: A folyamatok, szálak, feladatok, feladatok és alkalmazások fogalmainak bemutatása


Hivatkozások

  1. Barney, Blaise (utolsó frissítés: 2019. július). POSIX Threads Programming Lawrence Livermore National Laboratory
  2. M. Ben-Ari (2006. március 6.). Az egyidejű és elosztott programozási Addison-Wesley alapelvei

Tesztelje tudását

1.

Egy UNIX rendszerhéj-szkript grep és awk használatával, egyesével dolgoz fel egyszerű szövegfájlokat az információk kinyeréséhez. Ez a program másokkal együtt fut egy UNIX operációs rendszeren. Milyen program lehet ez?

2.

Egy robotrecepciós alkalmazás Linux operációs rendszeren fut, és több funkcionális modullal rendelkezik, amelyek egyidejűleg futva látnak el különböző funkciókat, amilyen például a beszédgenerálás és az arcmimika. Ezek a funkcionális modulok külön folyamatokként vannak kialakítva, amelyek időosztással futnak egyetlen processzoron vagy magon. Milyen program lehet ez?

3.

A MATLAB része egy olyan eszközkészlet, amely a MATLAB-ben írt kódot automatikusan hajtja végre többmagos processzorokon és/vagy GPU-kon a számítások felgyorsítása érdekében. Feltehetően milyen programot generál ez az eszközkészlet?

4.

Folding@Home egy nagy léptékű számítástechnikai projekt, amely az önkéntesek számítógépeinek tétlen idejét használja összetett, fehérje-összecsukható szimulációk végrehajtására az interneten keresztül. Milyen típusú program Folding@Home a legvalószínűbb?

5.

Az alábbi állítások közül melyik igaz az elosztott programokra?