online kép - Fájl  tube fájl feltöltés file feltöltés - adja hozzá a fájlokat online fedezze fel a legújabb online dokumentumok Kapcsolat
   
 

Letöltheto dokumentumok, programok, törvények, tervezetek, javaslatok, egyéb hasznos információk, receptek - Fájl kiterjesztések - fajltube.com

 

Online dokumentumok - kep
   
kategória
 

Biológia állatok Fizikai Földrajz Kémia Matematika Növénytan Számítógépes
Filozófia
Gazdaság
Gyógyszer
Irodalom
Menedzsment
Receptek
Vegyes

 
 
 
 













































 
 

A Pascal programok memóriatérképe:

számítógépes

Fájl küldése e-mail Esszé Projekt


egyéb tételek

 
Átviteli minöséggel kapcsolatos kérdések
A WORD eszközei II
Szoftverek
Adatok tömörített tarolasa – előnyök, hatranyok
Alkalmazasok
Egy operaciós rendszer bemutatasa
Egyéb internetes szolgaltatasok
A WINDOWS NT/2000/XP
A relaciós adatmodell, kulcsok
File-kezelés
 
 

A Pascal programok memóriatérképe:
 
 A tétel elején volt már szó arról, hogy a Pascal programokat DOS operációs rendszer alatt futtathatjuk. A DOS alatt futó programok a 8086-os processzor regisztereit használják fel a memória címzéséhez (eléréséhez). A regiszterek mérete 16 bit, ami azt jelenti, hogy a legnagyobb megcímezhetõ memória mérete 1 MByte. Ahhoz, hogy 1 MByte memóriát címezni tudjuk 20 757c21h bites fiikai címekre van szükség. Mivel a regiszterek mérete 16 bit, ezért nem lehet direkt címeket használni a memória eléréséhez. A megoldást a szegmentált címzés biztosítja. A memóriát részekre (szegmensekre) osztjuk, így a teljes cím két részbõl épül fel: szegmens cím (16 bit), megmutatja, hogy a memória melyik részében található a keresett rekesz, offszet cím, amely a szegmensen belül megmutatja, hogy hányadik byte-on található a kívánt adat. A 8086-os mikroprocesszor maximálisan 4 szegmenst tud megcímezni a szegmensregiszterek használatával: CS - kódszegmens; DS - adatszegmens; SS - veremszegmens; ES - extra szegmens (másodlagos adatszegmens).
A Turbo Pascal programok a memóriacímeket 4 byte méretû adatként tárolják, ebbõl két byte a szegmens, 2 byte az offszet cím. Ezeket a címeket tárolhatjuk a mutató típusok segítségével. Mivel a 16 biten aábrázolható legnagyobb szám 65535, így a szegmensek mérete sem lépheti túl ezt a korlátot (az offszet cím segítségével ennyi byte-ot tudunk címezni egy szegmensen belül). A szegmensregiszterek tartalma megváltoztatható, így speciális módszerek segítségével kihasználhatnánk az operációs rendszer által biztosított 640 KByte-ot, de alapértelmezés szerint a szegmensek mérete 64 KByte.
Az egyes szegmensek a program egyes részeit tartalmazzák:
- Kódszegmens: A program futtatható része, és a konstansok.
- Adatszegmens: A program során felhasznált változók, és típusos konstansok.
- Stack szegmens: Az alprogramok által használt változók, illetve a dinamikus változók.
 Az ábrán látható egy Pascal program memóriatérképe.
A memória részei (kicsit részletesebben):
- Kódszegmens:
A program kódját tartalmazza (az EXE állomány tartalmának legnagyobb része). Itt található a fõprogram és a felhasznált unit-ok kódja, minden egyes unit-nak (és a fõprogramnak is) egy-egy 64 KB méretû memóriaterület van fenntartva. A unit-ok használata tehát az egyik módja a 64 KB-os határ átlépésének. A kódszegmensen találhatjuk meg a unit-okban és a fõprogramban felhasznált típus nélküli konstansokat is!
- Adat szegmens:
Mint az ábrán is látható, a programban (unit-okban is) felhasznált változók és típusos konstansok kerülnek ebbe a szegmensbe. Mérete rögzített, maximum 64 KByte lehet. Tehát a programban felhasznált adatok (változók) méretének összege nem haladhatja meg a 64 KByte-ot. Ez a korlátozás is feloldható a unit-ok alkalmazásával.
- Verem szegmens:
A verem szegmens három részbõl épül fel: Stack, Overlay puffer és a Heap. A Stack nevû területet az alprogramokban deklarált változók használják. Az Overlay puffernek az Overlay technikát használó programok esetén van szerepe, míg a Heap a dinamikus változók által felhasznált memóriaterület.
Érdekessége a Stack és Heap területnek, hogy ellenkezõ irányban növekednek.

Találat: 673