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

Usunięta treść Dodana treść
Doles (dyskusja | edycje)
Nie podano opisu zmian
Doles (dyskusja | edycje)
Linia 50:
*Przesunięcie (Offset)
Samą translację podzielono na dwa etapy w celu oszczędzenia pamięci RAM. Najpierw jest translacja z użyciem Katalogu Stron, następnie przy użyciu Tablicy Stron. Każdy uruchomiony proces ma przydzielony odpowiedni wpis w Katalogu ale nie oznacza to że każdy proces musi go mieć od razu. Dany proces może zgłosić żądanie do systemu operacyjnego o przeprowadzenie tej operacji. Zjawosko to nazywa się ''' stronicowaniem na żądanie'''. Przedstwię teraz translację adresu liniowego.
W rejestrze CR3 umieszczony jest surowy, fizyczny adres Katalogu Stron (Page Directory). W Katalogu Stron znajduje się adres liniowy właściwej Tablicy Stron dla danego procesu. Z kolei Tablica Stron przechowuje informację o adresie fizycznym początku danej ramki strony. Ostatnie pole zwane Przesunięciem (Offset) determinuje jak o ile należy się przemieścić wewnątrz strony ( innymi słowy ile należy się przemieścić od adresu ramki strony). Całość prezentuje poniższy schemat:

[[Grafika:Stronicowanie.jpg|640px]]

Ponieważ to pole ma 12 bitów zatem pojedyńcza strona może mieć rozmiar właśnie 4 KB.
Zarówno pola Katalogu Stron jak i Tablicy Stron mają po 10 bitów, więc obie te lokacje mogą mieć maksymalnie 1024 pól. W ten sposób Katalog Stron może zaadresować tyle komórek pamięci: