Menu

Budowa systemu

Budowa komputera

Przykładowe systemy

Programowanie

Linki



Pamięć operacyjna

Pamięć operacyjna jest zaraz po procesorze, najważniejszym składnikiem komputera. Zawiera ona programy wykonywane przez procesor, jak również dane potrzebne do ich wykonania. Dla systemu operacyjnego pamięć jest bardzo ważna. Przechowuje nie tylko sam system operacyjny, sterujący pracą komputera, ale także programy uruchamiane przez użytkownika tego systemu. Musi być jej nie tylko wystarczająco dużo, aby to wszystko pomieścić, ale musi zostać także odpowiednio podzielona właśnie przez system operacyjny. Bo co by się działo gdyby jeden program nadpisywał dane drugiego programu? Stąd właśnie z pamięcią operacyjną wiążą się różne zagadnienia związane z jej ochroną, zarządzaniem i dostępem do niej.

Dostęp do pamięci

Jak zostało wspomniane w dziale Budowa komputera -> Procesor, może działać w trzech trybach - rzeczywistym, chronionym i wirtualnym. Z punktu widzenia dostępu do pamięci operacyjnej tryb wirtualny jest mało ważny, ponieważ programy widzą ten tryb tak samo jak rzeczywisty. Natomiast tryby rzeczywisty i wirtualny dość znacznie róznią się pod względem pamięci operacyjnej i właśnie dlatego opiszę te dwa tryby.

1. Tryb rzeczywisty

W tym trybie, program ma jedynie dostęp do 1 megabajta pamięci, a w tym tylko 640 kb pamięci użytecznej, pozostałe 384 kb to pamięć o specjalnym znaczeniu. Jest to związane z ograniczeniem adresowania pamięci do 16 bitów. Dodatkowo pamięć jest adresowana poprzez system segmentacji (bez której można by odwołać sie tylko do 64 kb pamięci), który będzie omówiony poniżej, przy okazji różnych rodzajów adresowania. Jako ciekawostkę należy wymienić historyczne słowa wypowiedziane przez Bill'a W. Gates'a "640 kB powinno wystarczyć każdemu" wypowiedziane w 1981 roku. Jak widać nie miał racji ponieważ obecne ilości pamięci operacyjnej ponad tysiąckrotnie większe i będą jeszcze większe. Z trybu rzeczywistego korzystały takie systemy operacyjne jak MS-DOS, pierwsze wersje Windows do 3.0 (3.1 na procesorach obsługujących tryb chroniony, wykorzystywał już tą możliwość). Obecnie chyba żaden porządny system nie korzysta z tego trybu, bo pod względem możliwości trybowi chronionemu nie dorasta do pięt.

2. Tryb chroniony

Tryb ten został wprowadzony wraz z procesorem Intel 80386 (właściwie pewna jego część już w 80286) i wprowadził wiele innowacji w porównaniu z trybem rzeczywistym. Dzięki niemu programy mają dostęp do 4 gigabajtów pamięci (z procesorami 64-bitowymi nawet do 64 gigabajtów). Wprowadzone zostały także dwa rodzaje adresowania pamięci: dostęp ciągły i stronnicowanie. O nich także jest napisane kilka słów poniżej. Z tego trybu korzystają wszystkie nowoczesne systemy operacyjne i to dzięki niemu możemy zawdzięczać to czym systemy operacyjne są teraz.

Adresowanie pamięci

1. Segmentacja

Segmentacja umożliwiła rozszerzenie adresowania 16-bitowego (64 kilobajty) do 640 kilobajtów pamięci. W trybie rzeczywistym, segmentacja działa dość specyficznie. Każdy z 65536 segmentów ma rozmiar 64 kilobajtów. Ale chwileczkę... 65536 * 64 daje nam 4194304 kilobajtów, czyli 4 gigabajty. Wygląda to za pięknie jak na tryb 16-bitowy i dlatego na prawdę działa to trochę inaczej. Poszczególne segmenty nachodzą na siebie co 16 bajtów. Tak więc segment 0 zaczyna się pod adresem fizycznym 0, a segment 1 pod adresem 16 (dziesiętnie). Aby obliczyć adres fizyczny na podstawie segmentu i offsetu (położenia danych względem początku segmentu) należy do segmentu dopisać zero po prawej stronie i dodać do tego offset, na przykład dla segmentu 0x7400 i offsetu 0x1234 wygląda to tak:

0x74000
+0x1234
------------
0x75234

2. Dostęp ciągły

Dostęp ciągły to najłatwiejszy system adresowania pamięci we wszystkich wszechświatach równoległych i nierównoległych. Dostępny jest on tylko w trybie chronionym. Pamięć adresowana jest na podstawie jej adresu fizycznego, a więc dane znajdujące się pod adresem fizycznym 1234 znajdują się pod adresem logicznym wynoszącym także 1234. Ponieważ w trybie chronionym rejestry mają 32 bity, adresowanie to pozwala na dostęp do 4 gigabajtów pamięci operacyjnej (64 gigabajtów w przypadku procesorów 64-bitowych).

3. Stronnicowanie

Jest to chyba najbardziej rozbudowany system adresowania pamięci. Wprowadzony wraz z dostępem ciągłym razem z trybem chronionym, daje systemowi operacyjnemu bardzo wiele możliwości. Możliwe jest między innymi mapowanie pamięci(przypisywanie adresu logicznego danemu adresowi fizycznemu), w celu na przykład stworzenia ciągłości pamięci nie będącej ciągłą według adresu fizycznego. Jest to możliwe, ponieważ procesor w trybie stronnicowania, dokonuje tłumaczenia adresów. Korzysta przy tym ze specjalnych struktur (katalogu stron i tablic stron) opisujących sposób tego tłumaczenia. Dodatkowo, ten system adresowania dzieli pamięć na nienachodzące na siebie strony o rozmiarze zwykle 4 kilobajtów. Adres fizyczny każdej strony musi być podzielny przez 4096. Na przykład odpowiedni wpis w katalogu i tablicy stron umożliwia przemapowanie adresu fizycznego 0x1234 na adres logiczny 0xc0001234.



Valid XHTML 1.1 License Poprawny CSS!
© 2007 by Tomek Figa na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne 2.5 Polska.