plik


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 readme
C w4 funkcje mem lancuchy
mem 4
FREE MEM
mem c (6)
mem fun1 ref t
mem ee
xdr mem c (3)
det mem
function domxml open mem
C w6 funkcje mem lancuchy
FREE MEM
function domdocument dump mem
topo mem skw 2010
mem c
mem sections
xdr mem c (2)

więcej podobnych podstron