Asembler x86/Zaawansowana architektura: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Doles (dyskusja | edycje)
Doles (dyskusja | edycje)
Nie podano opisu zmian
Linia 2:
==Tryb chroniony==
W trybie chroniony procesora nie istnieje już model obliczania adresu w pamięci fizycznej jak to miało miejsce w trybie rzeczywistym w notacji 'segment:offset'. W tym trybie pamięć w ogóle nie jest podzielona na segmenty, jeden wielki segment gdzie program może zaadresować całe 4 GB pamięci. Zwróć uwagę na słowo "zaadresować". Komputer nie musi mieć w ogóle tyle pamięci operacyjnej, po prostu programowi wydaje się, że tyle ma i może obliczyć adres dla każdej komórki z tej puli. Wracając do modelu pamięci w trybie chronionym, program chcąć coś zapisać w pamięci operacyjnej musi liczyć się z tzw. stronicowaniem pamięci. Teraz są dwa kroki aby uzyskać pamięć w trybie chronionym:
* 1. Wyznaczenie adresu liniowego danej komórki
* 2. Translacja adresu liniowego na adres fizyczny
 
===1. Uzyskiwanie adresu Liniowego===
Dawniej w trybie rzeczywistym w danym rejestrze segmentowym zawarty był adres startowy danego segmentu w pamięci ( adres mówiący nam gdzie dany segment się rozpoczyna). Teraz w rejestrze segmentowym nie przechowujemy adresu segmentu. Zapisana tam 16-bitowa informacja nazywana jest "selektorem segmentu". Poniżej znajduje się rysunek przedstawiający budowę selektora segmentu.
 
Linia 44:
 
 
===2. Translacja na adres fizyczny===
Tutaj aby dany adres liniowy mógł być przetłumaczony na adres fizyczny, należy skorzystać z mechanizmu stronicowania pamięci. Pamięć operacyjna została pododzielona na małe obszary zwane stronami, zaś ich adresy to ramki stron. Nie myl obu tych pojęć. Strona jest to pewien blok danych zaś ramka strony to adres początkowy tego bloku. Procesory firmy Intel oraz zgodne z nimi mają rozmiar strony równy 4 KB.
Adres liniowy o długości 32 bitów (ten uzyskany z poprzedniego etapu) jest dzielony na następujące części: