Kategorie szkoleń | Egzaminy | Kontakt

Odpowiedź (1)

  • 3

Zrozumienie na czym polega płaski model adresowania pamięci wymaga poznania historii procesorów rodzin x86. Procesor 8086 posiada 16 bitowe rejestry adresowe i kolejne 16 bitowe rejestry segmentowe. One dzielą całą dostępną przestrzeń adresową na 64-kilobajtowe segmenty, czyli coś w rodzaju "okienek", przez które można dostać się do pamięci. Rejestr segmentowy wskazuje segment, a rejestr adresowy offset od początku segmentu pamięci. Dzięki temu przy 16 bitowych rejestrach procesor 8086 może zaadresować 1 MB pamięci, ale aby określić konkretny fizyczny adres, używa się zapisu - x:y, gdzie x to adres segmentu, zaś y to offset.

Dla przykładu:

 

#FF00h:#00A2h - fizycznie dla procesora 8086 oznacza to adres: xFF0A2h

 

Jak dobrze można zauważyć, adres składał się z 32 bitów, co powinno umożliwić adresowanie 4 GB pamięci. Niestety, by nie było tak prosto, segmenty zachodzą na siebie i fizycznie adresować można tylko obszar 20-bitowy. Do tej pory ze względu na wsteczną zgodność nadal istnieje możliwość adresowania segmentowego w procesorach Intel. 

Taki model przy programowaniu w assemblerze niósł coraz to więcej ograniczeń.

Bardzo ciężko jest adresować np. pamięć video (wyświetlającą raster obrazu),  jeżeli karta ma więcej pamięci niż 64 KB. W czasach MS-DOS istniały tricki umożliwiające adresowanie 4 segmentów pamięci video jednocześnie. Dlatego udawało się uzyskiwać płynną animację na kartach VGA. 

 

Tego problemu z tamtych czasów procesora 8086 i 80286 pozbawione były inne  procesory np.Motoroli z serii 68xxx, gdzie występował od samego początku model płaski.

Intel taką możliwość wprowadził w procesorze 80386 wraz wprowadzeniem trybu chronionego. Ten model polega na tym, że cała pamięć dostępna dla systemu operacyjnego jest traktowana jako jeden wielki segment. Adresujemy komórki pamięci, jak byśmy mieli jeden segment o adresie 0 i adresowali całą dostępną pamięć za pomocą offsetu, czyli jednym rejestrem adresowym. 

Pawel_Bakowski
  • Odpowiedział
  • @ Pawel_Bakowski | 09.06.2014
Komentarze