Tryb rzeczywisty: Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
[wersja przejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
ort.
0000
Linia 1: Linia 1:
cych taką pracę systemu.
'''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 [[Oprogramowanie|programy]] w [[system operacyjny|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-[[megabajt]]owa przestrzeń adresowa. Adres logiczny (programowy) składa się z dwóch liczb 16-[[bit]]owych: 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)<ref>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.</ref>; na przykład:
W trybie rzeczywistym dostępna jest 1-[[megabajt]]owa przestrzeń adresowa. Adres logiczny (programowy) składa się z dwóch liczb 16-[[bit]]owych: 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)<ref>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.</ref>; na przykład:

Wersja z 12:34, 14 lut 2013

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ż

  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.