[ Pobierz całość w formacie PDF ]
.Zapisana w nim informacja ma postać poniższych struktur:STRUC SEG_FIZ;segment strony fizycznejSEG DW ?;numer strony fizycznejNUM DW ?ENDS SEG_FIZ--></><basefont face="Times New Roman" size=3>5.4.Schematy alokacji pamięci rozszerzonej        Od czasu powstania pamięci rozszerzonej powstało wiele standardów według których programy mogły zarządzać dodatkową pamięcią.Niektóre z nich stanowią rozbudowane programy nie tylko ułatwiające dostęp do pamięci, ale także zawierające interfejsy realizujące podstawowe czynności związane z przełączaniem do trybu chronionego.Niestety każdy ze sposobów alokacji pamięci wiąże się z odmienną konfiguracją systemu co staje się ciężarem dla użytkownika, który musi za każdym razem restartować komputer modyfikując przy tym plik CONFIG.SYS.Dlatego programista powinien zadbać o to, aby jego program uruchamiał się z dowolnej konfiguracji.Może do tego wykorzystać jeden z dostępnych DOS extenderów, lub stworzyć własny algorytm do zarządzania pamięcią.        Złożone sterowniki pamięci zazwyczaj wykorzystują inne, prymitywniejsze sterowniki i schematy: XMS wykorzystuje schemat TOP-DOWN, VCPI(EMS) wykorzystuje XMS, natomiast DPMI wszystkie podrzędne.Dlatego program obsługujący pamięć powinien w pierwszej kolejności wykorzystywać schematy najbardziej rozbudowane.Poniżej przedstawiony jest sposób postępowania po wykryciu istnienia danego schematu:DPMI - po jego wykryciu program powinien przełączyć się w tryb chroniony za pomocą jego interfejsu, bez dodatkowego sprawdzania innych schematów,VCPI - program może sprawdzić istnienie pamięci TOP-DOWN i BOTTOM-UP i dołączyć ją do puli zarządzanych obszarów, następnie zaalokować pamięć XMS i na końcu VCPI.Ten sposób postępowania znacznie przyspiesza sam proces alokacji gdyż VCPI przydziela po jednej stronie 4kb, natomiast XMS dowolnie duży obszar.Przełączenie do trybu chronionego musi być wykonane przez interfejs VCPI,XMS - jeżeli nie wykryty został sterownik VCPI program alokuje pamięć za pomocą interfejsu XMS, opcjonalnie alokując także pamięć TOP-DOWN i BOTTOM-UP.Przełączenie do trybu chronionego następuje przez samodzielnie stworzony do tego mechanizm,TOP-DOWN - program alokuje pamięć według tego schematu licząc się jednocześnie ze schematem BOTTOM-UP.Przełączenie do trybu chronionego następuje przez samodzielnie stworzony do tego mechanizm,BOTTOM-UP - zalecane jest wykorzystanie zamiennie schematu TOP-DOWN który oferuje te same możliwości i jest bardziej elegancki.--></><basefont face="Times New Roman" size=3>5.4.1.BOTTOM-UP        Schemat BOTTOM-UP zwany także schematem VDISK, jest dosyć przestarzałym sposobem na alokację pamięci i raczej nie należy go używać.Zamiast niego programy mogą zastosować schemat TOP-DOWN.Różnica polega na tym że BOTTOM-UP alokuje pamięć rozszerzoną poczynając od adresu 100000H (1Mb) w górę, natomiast TOP-DOWN od górnej granicy w dół.Niezbędne jest jednak poznanie mechanizmu BOTTOM-UP, gdyż jeżeli jest obecny wyznacza on dolną granicę dla TOP-DOWN.        W praktyce uzyskanie górnej granicy BOTTOM-UP polega na odczytaniu wartości w dwóch miejscach pamięci, porównaniu ich i wybraniu wyższej.Wynika to z różnych implementacji tego schematu.Pierwsze z miejsc wskazywane jest przez wektor przerwania 19H.Pod przemieszczeniem 12H względem segmentu tego wektora znajduje się sygnatura 'VDISK V', pod przemieszczeniem 2CH mniej znaczące słowo a pod 2EH bardziej znaczący bajt górnej granicy.Drugie miejsce znajduje się w bootblocku umieszczonym na początku pamięci rozszerzonej (wymaga to odblokowania lini A20).Przemieszczenie 03H względem 1Mb wskazuje sygnaturę 'VDISK', natomiast przemieszczenie 1EH słowo górnej granicy wyrażone w kilobajtach.Poniższy kod pokazuje w jaki sposób otrzymać górną granicę schematu BOTTOM-UP:.CODE;odczytanie górnej granicy BOTTOM-UPXOR AX,AXMOV FS,AXDEC AXMOV GS,AXMOV EDX,0100000HMOV EBX,EDX;sprawdzenie pierwszej lokacjiMOV ES,[FS:19H*4+2]CMP [DWORD PTR ES:12H],'SIDV'JNE SHORT NASTMOV DL,[ES:2EH]SHL EDX,16MOV DX,[ES:2CH];sprawdzenie drugiej lokacjiNAST: CMP [DWORD PTR GS:13H],'SIDV'JNE SHORT POROWNXOR EBX,EBXMOV BX,[GS:2EH]SHL EBX,10;porównanie wynikówPOROWN: CMP EDX,EBXJB SHORT KONIECMOV EBX,EDXKONIEC:;w EBX zwracana jest górna granica BOTTOM-UP;w przypadku nie istnienia tego schematu;wartość EBX wynosi 100000H (1Mb)--></><basefont face="Times New Roman" size=3>5.4.2.TOP-DOWN        Schemat TOP-DOWN (zwany także schematem INT 15) jest stosunkowo prosty i zalecane jest jego używanie zamiast schematu BOTTOM-UP.Bazuje on na funkcji 88H przerwania 15H.Funkcja ta zwraca rozmiar pamięci rozszerzonej wyrażonej w kilobajtach:INT 15H, AH=88H, Odczytanie rozmiaru pamięci rozszerzonejWejście:    Nie maWyjście jeżeli CF=0:    AX - rozmiar pamięci w kilobajtachWyjście jeżeli CF=1:    Nie ma        Sposób alokacji pamięci polega na stworzeniu procedury obsługi przerwania 15H która w przypadku wystąpienia funkcji 88H zwraca wielkość pamięci rozszerzonej pomniejszonej o obszar zaalokowany przez siebie.Przy alokowaniu pamięci tą metodą programy muszą liczyć się ze schematem BOTTOM-UP, który wyznacza dolną granicę pamięci (w przypadku jego braku granica ta wynosi 1Mb) [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • gieldaklubu.keep.pl
  •