2. feladat
Válaszolj a kérdésekre írásban a kapott változat szerint.
Mi a futási könyvtár?
Futási könyvtár (RTL - Run Time Library).
A programozási rendszer szintjén végrehajtott API függvények végrehajtásakor ezek a funkciók a felhasználó számára a megfelelő programozási nyelv funkcióinak könyvtárában kerülnek átadásra. Általában ez egy futásidejű könyvtár (RTL). A programozórendszer a felhasználó számára egy függvénykönyvtárat biztosít, és a kapott programhoz az objektumkódot a fenti feladatok végrehajtásáért felelős.
Nyilvánvaló, hogy a hívás API funkcióinak hatékonysága ebben a verzióban valamivel alacsonyabb lesz, mint amikor közvetlenül hozzáfér az operációs rendszer funkcióihoz. Ez azért van így, mert számos API-funkció végrehajtásához az RTL programozási nyelvkönyvtárnak továbbra is hívásokat kell tennie az operációs rendszer funkcióira. Az RTL objektumkódban az összes szükséges hívás és hívás elérhetősége az operációs rendszer funkcióit a programozórendszer biztosítja.
Azonban a program forráskódjának hordozhatósága ebben a változatban a legmagasabb, mivel minden funkció szintaxisát és szemantikáját szigorúan szabályozzák a megfelelő programozási nyelv szabványában. A nyelvtől függenek, és nem függenek a célszámítógép rendszer felépítésétől. Ezért az alkalmazási programnak a számítógépes rendszer új architektúrájába történő futtatásához elegendő, ha a megfelelő programozási rendszer segítségével újraépítjük az eredményül kapott program kódját.
A nyelv funkcióinak egységes végrehajtását a programozórendszer biztosítja. A célszámítógép különböző architektúráinak célzása során a programozórendszer az operációs rendszer különböző funkciók kombinációját igényelheti a forrásnyelv ugyanazon funkcióinak végrehajtásához. Ezt figyelembe kell venni az RTL kódban. Általánosságban elmondható, hogy a célszámítógép minden architektúrájának szüksége lesz a programozási nyelv saját RTL kódjára. A programozórendszer ezt a vagy az RTL objektumkódot választja az automatikusan létrejövő programhoz való kapcsolódáshoz.
Például vegye figyelembe a C és a Pascal dinamikus elosztási funkcióit. A C-ben ezek a funkciók ma hoc, realloc és ingyenes (új és törlés funkciók C ++-ban), a Pascal újak és rendelkeznek funkciók. Ha a program forráskódjában ezeket a funkciókat használja, a forrásprogram szempontjából ugyanúgy fog működni, csak a program forráskódjának szemantikájától függően. Ugyanakkor a forrásprogram fejlesztője számára nem számít, hogy melyik architektúrát orientálja a program. Ez fontos a programozási rendszer számára, amely mindegyik funkcióhoz kapcsolja a könyvtár objektumkódját a kapott programhoz. Ez a kód foglalkozik az operációs rendszer vonatkozó funkcióival. Az is lehetséges, hogy az azonos típusú funkciók különböző nyelveken (például a malloc a C és az új Pascal végez hasonló műveleteket) ez a kód végrehajtja a hasonló hívásokat az operációs rendszer. Az operációs rendszer különböző verziói esetén azonban ez a kód akkor is eltérő lesz, ha ugyanazt a nyelvet használja.
A probléma fő oka, hogy a legtöbb programozási nyelv a felhasználó számára nem túl széles szabványos funkciókat tartalmaz. Ezért a forráskód fejlesztője jelentősen korlátozza az elérhető API-funkciók kiválasztását. Általában egy szabványos funkciókészlet nem elegendő egy teljes körű alkalmazás létrehozásához. Ezután a fejlesztő hivatkozhat a programozási rendszerben elérhető egyéb könyvtárak funkcióira. Ebben az esetben nincs garancia arra, hogy a programozási rendszerben szereplő, a programnyelvben nem szereplő funkciók egy másik programozási rendszerben elérhetők lesznek, különösen, ha a célszámítógép egy másik architektúrájára irányul. Ez a helyzet közelebb áll az API végrehajtásának harmadik verziójához. Például a C-ben szereplő ugyanaz a maUoc, realloc és szabad függvények valójában nem része a nyelvi szabványnak. Ezek a szabványos könyvtár részét képezik, amelyek "de facto" -ként szerepelnek az összes programozási rendszerben a C nyelv alapján. Ha konkrétabb funkciókat, például új folyamatok generálásának funkcióit vesszük alapul, akkor sem C-ben, sem Pascal-ban nem lesz általánosan elfogadott szabvány.