Stronicowanie jest jednym ze sposobów rozwiązania problemu zewnętrznej fragmentacji polegającym na dopuszczeniu nieciągłości logicznej przestrzeni adresowej procesu. Zostało wynalezione przez polskiego inżyniera Jacka Karpińskiego.

Podstawowa metoda stronicowania:

  • Pamięć fizyczna dzielona jest na bloki staÅ‚ej dÅ‚ugoÅ›ci zwane ramkami.
  • Pamięć logiczna dzielona jest na bloki staÅ‚ej dÅ‚ugoÅ›ci zwane stronami.
  • Rozmiary stron i ramek sÄ… identyczne.
  • Przy wykonywaniu procesu, strony z pamiÄ™ci pomocniczej wprowadzane sÄ… w dowolne ramki pamiÄ™ci operacyjnej.

W systemach komputerowych podział pamięci na mniejsze obszary o ustalonej lub zmiennej wielkości przydzielanie tym blokom adresów fizycznych lub logicznych.

Spis treści

edytuj Historia

Inż. Jacek Karpiński przy konstruowaniu komputera K-202 w latach 1970 - 1973, jako pierwszy w historii rozwiązał problem adresowania większej ilości pamięci poprzez stronicowanie. Inne porównywalne ówczesne komputery 16-bitowe dostępne na świecie mogły zaadresować jedynie 64 kilobajty (były to Super-Nova i Modular One). Dzięki owemu mechanizmowi komputer K-202 adresował do 8 megabajtów pamięci operacyjnej.

edytuj Stronicowanie pamięci fizycznej

Stronicowanie pamięci fizycznej wykonywane było z powodu ograniczenia przestrzeni adresowej procesora (stronicowanie fizyczne). Stronicowanie takie stosowano w systemach 8- i 16-bitowych, w których ilość zainstalowanej pamięci przekraczała możliwości adresowania procesora.

W pamiÄ™ciach Flash EEPROM zapis do pamiÄ™ci nastÄ™puje poprzez wypeÅ‚nienie bufora (strony) i nastÄ™pnie na wybrany rozkaz: bufor zostaje przeniesiony do pamiÄ™ci, co trwa od 1 ms do 10 ms.

edytuj Stronicowanie pamięci w systemie MS DOS

System MS DOS używa procesora 8086 lub jego nastÄ™pcy w trybie rzeczywistym. W trybie tym procesor może zaadresować 1 MB pamiÄ™ci. Na poczÄ…tku lat dziewięćdziesiÄ…tych pojawiÅ‚a siÄ™ koncepcja wykorzystania w MS DOS pamiÄ™ci w obszarze ponad 1 MB, pamięć ta byÅ‚a dzielona na bloki (strony) o wielkoÅ›ci 16 kB i w tej wielkoÅ›ci dostÄ™pna przez okienko o wielkoÅ›ci 64 kB w przestrzeni adresowej procesora. Patrz: pamięć EMS.

edytuj Stronicowanie pamięci w procesorach 80386

Procesory 80386 i nowsze pracujÄ…ce w trybie chronionym umożliwiajÄ… dowolne mapowanie adresów logicznych na adresy fizyczne – mechanizm ten nazywany jest stronicowaniem (ang. paging). Adresy logiczne obejmujÄ… całą przestrzeÅ„ adresowÄ… procesora, czyli 4 GB, niezależnie od tego, ile w rzeczywistoÅ›ci w komputerze zainstalowano pamiÄ™ci. Zadaniem systemu operacyjnego jest odpowiednie mapowanie adresów logicznych na adresy pamiÄ™ci fizycznej, co pozwala zwykÅ‚ym programom użytkowym przez caÅ‚y czas dziaÅ‚ania odwoÅ‚ywać siÄ™ do tych samych adresów logicznych.

JeÅ›li włączone jest stronicowanie, wówczas caÅ‚a pamięć (4 GB) dzielona jest na bloki – strony o rozmiarach 4 kB; w procesorach Pentium i nowszych możliwe jest także używanie stron o rozmiarach 4 MB. Gdy program odwoÅ‚uje siÄ™ do pamiÄ™ci, podaje adres wÅ‚aÅ›ciwej komórki pamiÄ™ci. Adres ten jest 32-bitowÄ… liczbÄ…, która skÅ‚ada siÄ™ z trzech części:

  1. indeks w katalogu stron (liczba 10-bitowa),
  2. indeks w tablicy stron (liczba 10-bitowa),
  3. przesunięcie w obrębie strony (liczba 12-bitowa).

Katalog stron zawiera wskaźniki do tablic stron, tablice stron przechowują adresy fizyczne stron. (System operacyjny może zarządzać wieloma katalogami i tablicami stron).

Zatem pierwsza część adresu wybiera z katalogu stron tablicę stron. Druga część adresu wybiera pozycję z tablicy stron, która wyznacza fizyczny adres konkretnej strony. Przesunięcie jest adresem lokalnym w obrębie wybranej strony. Zatem adres fizyczny, na który zamapowano adres logiczny, wyznaczany jest z dwóch składników: adresu fizycznego strony i przesunięcia.

Ponieważ uzyskiwanie dostępu do pamięci w celu odczytania informacji o stronie jest czasochłonne, dlatego procesory posiadają pamięć podręczną (ang. TLB, Translation Lookaside Buffer), w której pamiętane są ostatnio wyznaczone adresy fizyczne stron. TLB przechowuje 32, 64, 256 lub więcej pozycji.



Każda pozycja w tablicy stron przechowuje pewne dodatkowe informacje dotyczące strony pamięci, także te przydatne w realizacji pamięci wirtualnej:

  • Bit obecnoÅ›ci (ang. present) – mówi czy strona znajduje siÄ™ w pamiÄ™ci fizycznej. Gdy system operacyjny usuwa stronÄ™ z pamiÄ™ci, tzn. zapisuje jÄ… na dysk, zeruje ten bit. JeÅ›li program odwoÅ‚a siÄ™ do strony nieobecnej w pamiÄ™ci procesor generuje wyjÄ…tek i wówczas system operacyjny wczytuje z dysku uprzednio zapisanÄ… tam zawartość strony.
  • Bit użycia (ang. accessed) – jest ustawiany przez procesor, gdy nastÄ…pi odwoÅ‚anie do danej strony. System operacyjny zwalnia pamięć zapisujÄ…c nieużywane strony pamiÄ™ci na dysku. Wartość zerowa bitu użycia oznacza brak odwoÅ‚aÅ„ do strony i jest sygnaÅ‚em dla systemu, że może być przeniesiona na dysk. Ustawiony bit użycia może w pewnym stopniu zabezpieczać stronÄ™ przed przeniesieniem na dysk.
  • Bit modyfikacji (ang. dirty lub modified) – jest ustawiany podczas zapisu danych. Jeżeli dana strona jest usuwana z pamiÄ™ci, to w przypadku ustawienia bitu modyfikacji musi być zapisana na dysk. Wartość zerowa bitu modyfikacji oznacza, że strona w pamiÄ™ci oraz strona na dysku jest taka sama, wiÄ™c podczas usuwania strony z pamiÄ™ci nie ma koniecznoÅ›ci ponownego zapisywania jej na dysk.

edytuj Zobacz też