Stronicowanie polega na podziale przestrzeni 32 bitowych adresów liniowych na jednostki zwane stronami.
Adres liniowy bajta można zinterpretować jako parę liczb:
Numer strony (20 bitów)
Przesunięcie na stronie (12 bitów)
Adresowanie bajta na stronie odbywa się zatem za pomocą 12 najmniej znaczących bitów adresu liniowego.
W procesorach firmy INTEL mechanizm translacji adresów liniowych na fizyczne przy stronicowaniu jest dwupoziomowy.
Zbiór 1M wszystkich stron jest podzielony na 1K grup stron po 1K stron w każdej grupie. Każda grupa stron ma swoją
tablicę stron (TS) składającą się z 1K wierszy, z których każdy opisuje jedną stronę. Będziemy go nazywać opisem
strony. Objętość TS wynosi zatem 1K*4B=4KB czyli jedną stronę. Strony z TS tworzą osobną grupę stron, która ma swoją
tablicę wyższego poziomu zwaną katalogiem tablic stron (KTS).
Opis strony w KTS i w TS jest taki sam, 4 bajtowy i zawiera numer
ramki strony i atrybuty ramki strony:
Pole numeru ramki strony służy do przechowania numeru ramki, w której aktualnie dana strona znajduje się w pamięci
fizycznej, będzie więc wykorzystane przy tworzeniu adresu fizycznego tej strony. Adres taki tworzymy łącząc numer
ramki z indeksem na stronie pobranym z adresu liniowego.
Pole atrybutów stron (12 bitów) zawiera między innymi następujące użyteczne pola:
Pole dostępne dla programu (3 bity),
D (ang. dirty) - bit informujący czy strona była zmieniana,
A (ang. accessed) - bit informujący czy strona była używana
Bit wyłączania zapamiętywania strony w pamięci podręcznej,
Bit jednoczesnego zapamiętywania strony w pamięci podręcznej i pamięci głównej,
U/S (ang. user/supervisor) - bit poziomu ochrony (użytkowy/ systemowy)
Bit: tylko odczytywanie / dozwolone zapisywanie
P (ang. present) - strona obecna w pamięci fizycznej (1 bit)
Translacja adresu zaczyna się od zlokalizowania KTS w pamięci fizycznej. Do tego celu używamy 32 bitowego rejestru
sterującego CR3. Jego 20 bitów zawiera numer ramki strony, gdzie znajduje się KTS:
Numer ramki strony z KTS (20 bitów)
Inne (12 bitów)
Załóżmy, że adres liniowy podlegający translacji składa się z
następujących 3 części:
Indeks KTS
(bity 31-22)
Indeks TS
(bity 21-12)
Indeks na stronie
(bity 11-0)
Schemat działania stronnicowania w trybie chronionym znajduje się tutaj
Algorytm przebiega według następujących kroków:
Z rejestru CR3 odczytuje się numer ramki strony, na której znajduje się KTS (np. 1). Numer ten określa lokalizację
KTS w pamięci fizycznej.
Za pomocą indeksu do KTS (zawartym w adresie liniowym) (np. 9) dociera się w znalezionej KTS do opisu TS
(tablicy stron). Z opisu tego odczytuje się numer ramki strony, na której znajduje się TS (np. 3).
Za pomocą indeksu do TS (zawartego w adresie liniowym) (np. 7) dociera się w znalezionej ramce zawierającej TS do
opisu strony docelowej. Z tego opisu odczytuje się numer ramki strony docelowej (np. 10).
Za pomocą indeksu na stronie (zawartego w adresie liniowym) (np. 15) dociera się w znalezionej ramce strony docelowej
do poszukiwanego bajta.