Ľudmila Jánošíková | ||||||||||||||||||||||||||||||
Programovanie v jazyku symbolických adries | ||||||||||||||||||||||||||||||
pre 32-bitové procesory Intel | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
Pracovný režim procesora
V procesoroch Intel sa používa segmentová organizácia pamäti. Segment je časť
pamäti, ktorá obsahuje buď inštrukcie alebo dáta. Poloha segmentu v pamäti však nie je
pevne daná, ale určí ju buď operačný systém pri spustení programu, alebo vo výnimočných prípadoch
sám programátor.
Logická adresa ľubovoľného miesta v pamäti pozostáva z dvoch zložiek:
Kombináciou bázovej adresy segmentu a offsetu dostaneme lineárnu adresu. Lineárna adresa nemusí byť totožná s fyzickou adresou, ktorá sa posiela na externú adresovú zbernicu. V prípade, že fyzický adresový priestor je menší než logický adresový priestor, musí sa lineárna adresa nejakým spôsobom transformovať na fyzickú adresu. Veľkosť (počet bitov) lineárnej aj fyzickej adresy je rovnaká. Výhodou segmentovej organizácie pamäti je skrátenie adresovej časti inštrukcie. Namiesto toho, aby inštrukcia obsahovala celú adresu operandu, obsahuje len offset, pričom bázovú adresu segmentu nájde procesor v určenom registri. Ďalším dôvodom pre segmentovú organizáciu pamäti je oddelenie dátovej a inštrukčnej časti programu do rôznych segmentov s rôznym spôsobom prístupu, čo umožňuje ochranu dát pred úmyselným či neúmyselným poškodením. Napríklad je zakázaný zápis do segmentu, ktorý obsahuje inštrukcie. Podľa toho, aký druh údajov je v segmente uložený, rozoznávame tri typy segmentov:
Program i dáta môžu byť uložené vo viacerých segmentoch. Reálny režim (real mode)Procesor 8086, prvý 16-bitový procesor firmy Intel, bol schopný pracovať len v reálnom režime. Kvôli spätnej kompatibilite sa tento režim zachoval aj v nasledujúcich procesoroch. V reálnom režime má softvér neobmedzený prístup ku všetkým pamäťovým miestam a periférnym zariadeniam. Režim neposkytuje nástroje pre ochranu pamäti ani multitasking. Procesor 8086 mal 20-bitovú adresovú zbernicu, ktorá dovolila adresovať 220 B = 1 048 576 B = 1 MB pamäti. V reálnom režime je teda fyzická adresa 20-bitová. Bázová adresa segmentu aj offset sú 16-bitové čísla. Lineárnu adresu dostaneme tak, že bázovú adresu segmentu vynásobíme 16-imi (posunieme o 4 bity doľava) a pripočítame offset (pozri obr. 4).
Obr. 4. Výpočet lineárnej adresy V reálnom režime je fyzická adresa totožná s lineárnou adresou. Pretože bázová adresa má 16 bitov, môžeme v rámci jedného segmentu vytvoriť 216 rôznych adries, teda maximálna veľkosť segmentu je je 216 bajtov, čo je 64 kB. Adresy sa obvykle udávajú v šestnástkovej (hexadecimálnej) sústave. Ukážeme preto ešte príklad na výpočet fyzickej adresy z logickej adresy v šestnástkovej sústave. Akému pamäťovému miestu zodpovedá adresa 020A:1BCD? Podľa predchádzajúceho návodu vynásobíme bázovú adresu 16-timi (v desiatkovej sústave), čomu zodpovedá vynásobenie číslom 10 v sústave šestnástkovej (posunutie o 1 rád doľava) a pripočítame offset:
Chránený režim sa prvýkrát objavil v procesore 80286, ale až od procesora 80386 sa začal využívať v operačných systémoch a aplikáciách. Procesor 80386 má 32 bitovú adresovú zbernicu, čo umožňuje adresovať 232 B = 22 * 230 B = 4 GB pamäti. V chránenom režime má bázová adresa segmentu 32 bitov. Dĺžka offsetu sa určuje pri deklarácii segmentu v programe. Môže byť 16 alebo 32 bitov. Podľa toho sa potom určí maximálna veľkosť segmentu: pri 16-bitovom offsete môže mať segment nanajvýš 64 kB, pri 32-bitovom offsete je maximálna veľkosť segmentu 4 GB, teda z hľadiska tvorcu aplikačných programov neobmedzená. Lineárnu adresu získame jednoduchým sčítaním bázovej adresy segmentu a offsetu. V chránenom režime sa lineárna adresa prepočíta na fyzickú adresu pomocou mechanizmu, ktorý sa nazýva stránkovanie. Stránkovanie umožňuje:
Ak je veľkosť offsetu nastavená na 16 bitov, hovoríme o 16-bitovom režime bez ohľadu na to, či procesor pracuje v reálnom alebo v chránenom režime. Ak je veľkosť offsetu 32 bitov, hovoríme o 32-bitovom režime. Virtuálny režim (virtual mode)Z chráneného režimu sa môžeme prepnúť do virtuálneho režimu. Vo virtuálnom režime sa emuluje (predstiera) reálny režim procesora 8086. Do virtuálneho režimu sa procesor prepína napríklad vtedy, keď spracováva DOS-ovskú aplikáciu pod operačným systémom Windows pre 32-bitové procesory (napr. Windows 98 alebo XP). Programátorovi sa procesor 80386 (tiež nasledujúce procesory) vo virtuálnom režime javí ako procesor 8086. Lineárna adresa je 20-bitová (báza segmentu krát 16 plus offset), takže úloha má k dispozícii 1 MB pamäti. Lineárna 20-bitová adresa sa však neposiela na externú adresovú zbernicu, ale pomocou stránkovania sa prepočíta na 32-bitovú (80386, 80486 a Pentium), resp. 36-bitovú (Pentium Pro, Pentium 4) fyzickú adresu. To umožňuje mapovať adresový priestor 1 MB po stránkach kdekoľvek do 4, resp. 64 GB pamäti. V praxi to znamená, že pod operačným systémom Windows môže súčasne bežať viacej DOS-ovských aplikácií, z ktorých každá má svoj vlastný nezávislý adresový priestor. Legacy a long režimTieto dva režimy sa zaviedli v 64-bitových procesoroch. Legacy režim tu je kvôli spätnej kompatibilite - je určený pre 32-bitový operačný systém a umožňuje spúšťať aplikácie vyvinuté pre všetky tri doteraz spomenuté režimy (reálny, chránený, virtuálny). Long režim umožňuje operačnému systému a aplikáciám využívať 64-bitové registre a inštrukčnú sadu x86-64. V pôvodnom 64-bitovom režime (64-bit mode) sa už nepoužíva segmentácia. Lineárna 64-bitová adresa sa stránkovaním transformuje na 48-bitovú fyzickú adresu. Long režim tiež umožňuje spúšťať 32-bitové programy napísané pre chránený režim (v tzv. compatibility sub-mode), ale nedovoľuje spustiť 16-bitové aplikácie napísané pre reálny alebo virtuálny režim. Prehľad režimov v 64-bitovom procesore je v nasledujúcej tabuľke.
|
Načo je vám jazyk symbolických adries?
Architektúra moderných procesorov Služby operačného systému MS-DOS Služby operačného systému Windows 95/98/NT/XP |
|||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||
Vydala Žilinská univerzita v Žiline, 2000. ISBN 80-7100-723-4. Otázky a pripomienky môžete poslať autorke. Naposledy upravené 9.9.2011. |