Tryb rzeczywisty

Tryb rzeczywisty – tryb pracy mikroprocesorów z rodziny procesorów x86, w którym procesor pracuje tak jak procesor Intel 8086.

Nowym trybem pracy procesora Intel 80286 był tryb chroniony.

Tryb rzeczywisty nie zapewnia ochrony pamięci przed użyciem przez inny proces oraz obsługi wielozadaniowości. W trybie tym pracowały programy w systemie operacyjnym DOS. Na przełomie lat 80. i 90. dwudziestego wieku prowadzono działania nad pracą programów w systemie DOS w trybie chronionym, pozostawiając sam system w trybie rzeczywistym. Zbudowano kilka systemów umożliwiających taką pracę systemu.

W trybie rzeczywistym dostępna jest 1-megabajtowa przestrzeń adresowa. Adres logiczny (programowy) składa się z dwóch liczb 16-bitowych: segmentu (numeru segmentu) oraz przemieszczenia względem początku segmentu (ang. offset). Adres fizyczny jest liczony jako segment * 16 + przemieszczenie. Ponieważ segmenty nie są rozłączne, wiele różnych adresów logicznych może odwoływać się do tej samej komórki pamięci (dokładnie – jeden adres fizyczny jest opisywany przez 4096 różnych adresów logicznych)[1]; na przykład:

segment:offset = 0x1000:0xA000
adres fizyczny = 0x1000*0x10 + 0xA000 = 0x1A000
segment:offset = 0x1900:0x1000
adres fizyczny = 0x1900*0x10 + 0x1000 = 0x1A000

Ponieważ segment i przemieszczenie mają 16 bitów, dlatego w trybie rzeczywistym można maksymalnie zaadresować 1088 kB pamięci, ale procesory Intel 8086, 8088, 80188 oraz 80186 mają 20-bitową szynę adresową i z tego powodu mogą zaadresować tylko 1024 kB pamięci – przy próbie sięgnięcia do adresu powyżej 1024 kB w rzeczywistości odwołają się do adresu o 1 MB niższego.

Procesory nowsze, tzn. i286, i386 itd., mają szersze szyny adresowe (24-, 32- lub 36-bitowe) toteż pracując w trybie rzeczywistym mogą adresować całe 1088 kB pamięci. System DOS począwszy od wersji 4.0 potrafił wykorzystać te dodatkowe 65536-16 B pamięci, która została nazwana pamięcią wysoką (HMA – High Memory Area).

Jednak powoduje to niepełną zgodność z procesorami Intel 8086 i dlatego w komputerach zgodnych z IBM/PC została wprowadzona możliwość blokowania 20. linii adresowej nowszych procesorów, co sprawia, że programy pracujące w trybie rzeczywistym mają dostęp do 20. linii. Blokowanie i odblokowywanie linii 20. jest udostępniane przez ustawienie w BIOS-ie komputera bramki A20 (ang. A20 gate; A20 to numer linii adresowej, liczony od 0).

Zobacz też

Przypisy

  1. W procesorach z 20 bitową szyną adresową pamięci fizycznej lub z szerszą, jeżeli zablokowano linię A20, każdy adres można przedstawić jako 4096 adresów logicznych. W procesorach z szerszą szyną adresy generujące 1 na 20 linii szyny adresowej tworzą dodatkowe adresy poza przestrzenią 1 MB, zmniejszając tym samym liczbę sposobów wygenerowania adresów o najniższych adresach fizycznych.