Tryb rzeczywisty

Z Wikipedii, wolnej encyklopedii

Tryb rzeczywisty – tryb pracy mikroprocesorów z rodziny procesorów x86, w którym procesor pracuje tak jak procesor Intel 8086[1], czyli w trybie 16-bitowym, nawet gdy processor jest 32-bitowy.

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[1]. 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)[1]. 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)[2]; 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ż[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

  1. a b c Leonid Bułhak, Ryszard Goczyński, Michał Tuszyński: DOS 5.00 od środka. Komputerowa Oficyna Wydawnicza "Help", 1997, s. 19. ISBN 83-87211-01-X. (pol.).
  2. 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.