Tryb rzeczywisty: Różnice pomiędzy wersjami
[wersja przejrzana] | [wersja nieprzejrzana] |
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ż
- ↑ 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.