Ryszard Goczynski, Michal Tuszynski:
Mikroprocesory 80286, 80386 i i486.
Komputerowa Oficyna Wydawnicza "Help".
Warszawa 1991. Strona 47.
Pamiec wirtualna
================
Realizacja pamieci wirtualnej (logicznej) o wielkosci wiekszej niz rozmiar
faktycznie zainstalowanej pamieci operacyjnej polega na uzupelnieniu pamieci
operacyjnej przez pomocnicza pamiec masowa (na ogol dysk) i na odpowiednim
zarzadzaniu przesylaniem danych miedzy tymi pamieciami. Pamiec dyskowa sluzy
do przechowywania obrazow tych fragmentow pamieci (logicznej), ktore aktualnie
nie mieszcza sie w pamieci fizycznej. Niezbedne w trakcie wykonywania programu
fragmenty (kod, dane) sa odczytywane z dysku i umieszczane w pamieci
operacyjnej (swap-in), z kolei niektore fragmenty sposrod obecnych w pamieci
musza byc przenoszone na dysk w celu uzyskania wolnego miejsca (swap-out).
Zarzadzaniem pamiecia wirtualna zajmuje sie system operacyjny korzystajac
z mechanizmow wbudowanych w mikroprocesor, odbywa sie to bez udzialu programu
(programisty tworzacego programy uzytkowe). Realizacja pamieci wirtualnej
w systemach z mikroprocesorami 80286, 80386 i i486 jest scisle zwiazana
z segmentacja i stronicowaniem - fragmenty pamieci wymieniane miedzy pamiecia
operacyjna a pamiecia pomocniczaodpowiadaja bowiem segmentom lub stronom.
W dotychczasowych rozwazaniach nie omawiano znaczenia poszczegolnych bitow
atrybutow w deskryptorach segmentow oraz w elementach katalogu tablic i
elementach tablic stron, wiekszosc z nich zwiazana jest bowiem z metodami
ochrony. Tu nalezy wspomniec o bitach zwiazanych z implementacja pamieci
wirtualnej. W przypadku deskryptorow segmentow sa to: bit obecnosci P (Present)
i bit A (Accessed) oznaczajacy segment uzyty, zas w odniesieniu do atrybutow
elementow tablic zwiazanych ze stronicowaniem - bity P (Present), A (Accessed)
i bit zmiany D (Dirty).
W mikroprocesorze 80286 pamiec wirtualna moze byc zrealizowana jedynie
z zastosowaniem segmentacji. Podczas ladowania selektora do rejestru segmentu
procesor automatycznie odwoluje sie do odpowiedniego deskryptora i sprawdza
wartosc bitu obecnosci P. Jezeli P=1, po sprawdzeniu praw dostepu deskryptor
jest umieszczany w ukrytym rejestrze deskryptora stowarzyszonym z rejestrem
segmentu. Wartosc P=0 oznacza, ze segment opisywany przez deskryptor nie jest
dostepny w pamieci operacyjnej i w takiej sytuacji procesorgeneruje wyjatek
(exception). Procedura obslugi wyjatku zwiazanego z nieobecnoscia segmentu
w pamieci stanowi fragment systemu operacyjnego i jej zadaniem jest
znalezienie miejsca w pamieci na brakujacy segment, odczytanie segmentu
z dysku, uaktualnie deskryptora - tzn. wpisanie wlasciwych wartosci adresu
bazowego i ewentualnie wielkosci oraz ustawienie bitu P. Po zakonczeniu
obslugi wyjatku nastepuje ponowne wykonanie instrukcji, ktora wyjatek
spowodowala. Podczas tego ponownego wykonania nie nastapi juz zgloszenie
wyjatku braku segmentu.
Istotnym elementem implementacji pamieci wirtualnej, wplywajacym na efektywnosc
dzialannia systemu, jest strategia usuwania segmentow z pamieci operacyjnej w
celu uzyskania miejsca do wprowadzenia brakujacych segmentow. Czesto stosowana
jest strategia usuwania tych czesci pamieci, ktore byly najdawniej uzywane
(LRU - Least Recently Used). Strategia taka jest uzasadniona, gdyz ze wzgledu
na lokalnosc odwolan do pamieci w programie zaklada sie, ze w najblizszej
przyszlosci nie bedzie rowniez do nich odwolan. Inna stosowana strategia polega
na usuwaniu z pamieci segmentow najrzadziej uzywanych (LFU - Least Frequently
Used), przy czym w pierwszym rzedzie usuwa sie segmenty nie modyfikowane, gdyz
nie jest wowczas konieczne zapisywanie obrazow pamieci na dysku. W celu
zaimplementowania w systemie operacyjnym wybranej strategii usuwania segmentow
mozna skorzystac z bitu A w deskryptorze segmentu. Bit ten jest ustawiany przez
procesor zawsze przy ladowaniu selektora do rejestru segmentu i deskryptora
do rejestru deskryptora (a nie przy odwolaniu do segmentu w operacji odczytu
lub zapisu jak moglaby sugerowac nazwa bitu - Accessed). Bit A nie jest
natomiast nigdy zerowany automatycznie przez procesor. System operacyjny moze
zbierac informacje o czestotliwosci korzystania z poszczegolnych segmentow
przez systematyczne przegladanie bitow A deskryptorow w tablicach GDT i LDT
i jednoczesne zerowanie ustawionych bitow A.
Realizacja pamieci wirtualnej w oparciu o mechanizm segmentacji moze byc
stosowana w systemach z mikroprocesorem 80286 jak i 80386 (i486). W tym
rozwiazaniu pojawiaja sie jednak problemy zwiazane z faktem, ze segmenty
maja niejednakowa dlugosc. Czesto wprowadzenie nowego segmentu do pamieci
operacyjnej wymaga usuniecia kilku mniejszych segmentow. Wielokrotne wykonanie
operacji wymiany obrazow pamieci z dyskiem prowadzi do znacznego stopnia
fragmentacji pamieci tzn. pojawia sie wiele malych obszarow pamieci nie
uzywanej (czasem stosuje sie przesuwanie segmentow w celu uzyskania duzego
spojnego obszaru wolnego). Ze wzgledu na niejednakowa dlugosc segmentow rowniez
czesc oprogramowania systemowego zwiazanego bezposrednio z obsluga pomocniczej
pamieci dyskowej jest znacznie bardziej rozbudowana. Pewna zaleta, jednak nie
rekompensujaca wymienionych wad, jest silny zwiazek podzialu na segmenty z
logiczna struktura programu, co na ogol zmniejsza liczbe koniecznych przeslan
w porownaniu z przedstawiona nizej metoda korzystajaca ze stronicowania.
W mikroprocesorach 80386 i i486 wbudowano mechanizmy umozliwiajace efektywna
realizacje pamieci wirtualnej w oparciu o stronicowanie. Podobnie jak w
przypadku segmentow, rowniez i tu najwazniejsza role odgrywa bit opecnosci P
w elementach katalogu tablic stron i samych tablic stron. W sytuacji, gdy
nastepuje odwolanie do strony, dla ktorej w odpowiednim elemencie tablicy
stron bit P=0, mikroprocesor zglasza wyjatek braku strony. Reakcja programu
obslugi polega na przygotowaniu wolnego miejsca (strony) w pamieci operacyjnej,
wprowadzeniu pozadanej strony, uaktualnieniu opisu strony w tablicy stron.
Strategia wymiany stron moze korzystac z bitu A, ktory jest ustawiany przez
procesor w nastepujacych okolicznosciach: w elemencie tablicy stron - gdy
nastepuje odwolanie do strony opisywanej przez ten element, w katalogu tablic
stron - gdy nastepuje odwolanie do ktorejkolwiek ze stron opisanych w tablicy
stron wskazywanej przez ten element katalogu. Bit ten nie jest nigdy
samoczynnie zerowany przez procesor. Dodatkowe ulatwienie dla oprogramowania
systemowego stanowi bit D. Jest on ustawiany przez procesor (jedynie w
elementach tablicy stron), gdy odbywa sie zapis do odwzorowywanej przez
element strony. Na podstawie wartosci tego bitu system operacyjny moze
okreslic, czy podczas usuwania z pamieci danej strony jest konieczne jej
zapisanie na dysku, gdyz w trakcie jej obecnosci w pamieci nastapily zmiany,
czy ze obraz przechowywany na dysku jest wlasciwy, poniewaz nie bylo operacji
zapisu na danej stronie. Przy realizacji pamieci wirtualnej w oparciu o
stronicowanie unika sie fragmentacji (wszystkie bloki maja jednakowa dlugosc).
Upraszcza to rowniez program obslugi pomocniczej pamieci dyskowej. W systemach
z mikroprocesorem 80386 i i486 wskazana jest implementacja pamieci wirtualnej
w oparciu o stronicowanie, zas innych mechanizmow systemowych -
z wykorzystaniem segmentacji lub lacznie segmentacji i stronicowania.
Wyszukiwarka
Podobne podstrony:
dist mem gen v6 2 readmeC w4 funkcje mem lancuchymem 4FREE MEMmem c (6)mem fun1 ref tmem eexdr mem c (3)det memfunction domxml open memC w6 funkcje mem lancuchyFREE MEMfunction domdocument dump memtopo mem skw 2010mem cmem sectionsxdr mem c (2)więcej podobnych podstron