Tłumaczenie stron oraz jego zabezpieczenia

July 3rd, 2008 | by admin |

Mechanizm translacji stron znany z x86 (lub prościej mechanizm stronicowania) pozwala oprogramowaniu systemowemu tworzyć oddzielne przestrzenie adresowe dla każdego procesu czy aplikacji. Są to tzw. przestrzenie adresów wirtualnych. Oprogramowanie systemowe używa mechanizmu stronicowania – selektywnego mapowania stron pamięci fizycznej do przestrzeni adresów wirtualnych używając zestawu hierarchicznych tablic tłumaczących adresy (address-translation) znanych także jako tablice stron (page tables).

Mechanizm stronicowania i tablice stron są używane, aby dostarczyć każdemu procesowi jego własny prywatny obszar w pamięci fizycznej, by mógł w nim przechowywać swój kod i dane. Procesy mogą być chronione między sobą poprzez ich izolację w przestrzeni adresów wirtualnych. Dany proces nie może dostać się do tego obszaru pamięci fizycznej, która nie jest mu przyznana przez system.

Mapowanie pamięci fizycznej pozwala na jej podział pomiędzy aplikacje i procesy. Strony pamięci fizycznej mogą być konfigurowane przez tzw. tablice stron w celu udostępnienia ich np tylko do odczytu. To zapobiega błędom mogącym powstać przy współdzieleniu stron między aplikacjami i zapewnia ich integralność.

Współdzielone mapowanie jest zazwyczaj używane do udostępniana popularnych bibliotek, potrzebnych wielu aplikacjom. Dla każdej aplikacji jej wymagającej, jest mapowana kopia tylko do odczytu w jej przestrzeni adresów wirtualnych, ale w pamięci fizycznej jest tylko 1 (oryginalna) kopia
tejże biblioteki. Dzięki temu możliwe jest skopiowanie kernela sytemu operacyjnego, czy też różnych sterowników do wirtualnej przestrzeni adresowej wybranej aplikacji. Aplikacjom dostarcza się efektywny dostęp do usług systemowych bez czasochłonnego przełączania przestrzeni adresowych.

Obszar adresów pamięciowych przeznaczony tylko dla systemu musi być zabezpieczony przed dostępem dla innych aplikacji. System więc używa tablic stron do jego ochrony przez ich oznaczenie jako supervisor pages, które są dostępne tylko dla niego. Dodatkowo, system może używać translacji stron do mapowania wielu dużych obszarów adresów wirtualnych w dużo mniejsze obszary pamięci fizycznej. Każda aplikacja może używać całej 32 lub 64 bitowej przestrzeni wirtualnych adresów. System aktywnie mapuje najczęściej używane strony pamięci wirtualnej na dostępną pulę stron pamięci fizycznej. Najrzadziej używane strony są zrzucane na dysk do pliku wymiany. Ten proces nazywamy pamięcią wirtualną zależną od stronicowania (demand-paged virtual memory).

Sorry, comments for this entry are closed at this time.