To tylko jedna z 12 stron tej notatki. Zaloguj się aby zobaczyć ten dokument.
Zobacz
całą notatkę
Zarządzanie pamięcią
Zarzadzanie pamięcią (Memory Management) na poziomie SO jest uwarunkowane
architekturą systemu cyfrowego. Podstawowymi elementami determinującymi wybór
konkretnej organizacji i jej struktury są:
pole adresacji argumentów rozkazu
jego miejsce w słowie
sprzętowe możliwości jego przekształcenia.
W zależności od długości pola adresacji (liczby bitów przeznaczonych na adres)
przestrzeń adresowa (PA) może pokrywać się z zakresem adresów PO, może być
większa lub mniejsza.
Funkcjami SO są:
zagospodarowanie przestrzeni
mechanizmów translacji adresu
ochrona zawartości pamięci
dostęp do obszarów dzielonych
efektywna organizacja PO
adresowej
poprzez
wykorzystanie
Wielkość PO przeznaczonej na kod SO jest z reguły stała, natomiast problemem jest
przydział wolnej części PO procesom użytkowym Pu.
Istnieją trzy metody przydziału PO procesom Pu.
1. brak podziału - wolna przestrzeń adresowa jest w danej chwili w całości
przydzielona jednemu Pu
2. podział pamięci - wolna przestrzeń adresowa jest w danej chwili podzielona
na części, które są przydzielane pojedyńczym Pu
3. pamięć wirtualna - istnieje jedna lub wiele wirtualnych przestrzeni
adresowych przydzielanych pojedyńczym Pu, mających w niewielkim stopniu
pokrycie w pamięci operacyjnej
Pamięć niepodzielna
Brak możliwości podziału PA pamięci na fizycznie wyróżnione bloki wynika z braku
wyposażenia procesora w układy MM.
Wolna PA pozostała po załadowaniu SO jest w całości przydzielona pojedyńczemu
programowi użytkownika. W trakcie translacji początek adresacji jest określony
pierwszym wolnym adresem.
Wieloprogramowanie można realizować poprzez wymiatanie (swapping).
Pamięć dzielona
Celem dzielenia pamięci jest lepsze wykorzystanie elementów sprzętowych systemu,
a głównie procesora i pamięci.
Ponadto, jednoczesne załadowanie do PO więcej niż jednego Pu umożliwia szybkie
przełączanie procesora z jednego procesu na drugi.
W ramach systemów z podziałem pamięci można wyróżnić:
1. z podziałem statycznym
2. z podziałem dynamicznym
Podział statyczny dzieli pamięć na stałe partycje o różnej wielkości lub na bloki o
stałej długości zwane ramami (frame).
Podział dynamiczny jest realizowany z wykorzystaniem struktur opisujących wolne
bloki pamięci (WBP) o różnych długościach oraz mechanizmu wymiatania.
Podział dynamiczny
Przykładowe funkcje realizujące podział dynamiczny
Dla realizacji podziału dynamicznego pamięci można stosować następujące
hipotetyczne funkcje:
*
przydziel(rozmiar, adres)
Wybranie spośród wolnych bloków, bloku pokrywającego zapotrzebowanie
(blok wolny może być większy bądź równy blokowi określonemu przez
parametr rozmiar). Efektem wykonania funkcji jest przekazanie adresu
wybranego wolnego bloku poprzez parametr adres oraz usunięcie
przydzielonego bloku ze zbioru wolnych bloków.
malloc(size), calloc(n, size), realloc(ptr, size)
zwolnij(adres)
Dołączenie bloku dotychczas zajętego do zbioru wolnych bloków.
free(ptr)
informuj(rozmiar_max)
Przekazanie w argumencie
... zobacz całą notatkę
Komentarze użytkowników (0)