sysop, SOP2, Praca


0x08 graphic
Zarządzanie pamięcią operacyjną

Zbyszko Królikowski - Instytut Informatyki PP

Literatura

  1. Tanenbaum A., Modern Operating Systems, Prentice-Hall Icor., 1992.

  2. Silberschatz, P.B. Galvin, Operating System Concepts, Addison-Wesley Pub. Comp., 1994.

  3. ,

  4. Tanenbaum A., Operating Systems: Design and Implementation, Prentice-Hall Intern. Editions, 1995.

  5. Silberschatz, J.L. Peterson, P.B. Galvin, Podstawy systemów operacyjnych, WNT, W-wa, 1993.

  6. Z. Królikowski, M. Sajkowski, UNIX dla początkujących i zaawansowanych, Wyd. Nakom, 1995.

  7. Gościński, Distributed Operating Systems, Addison-Wesley Pub. Comp., 1992.

Funkcje modułów zarządzania pamięcią operacyjną

Funkcje:

Wiązanie adresów (ang. address binding)

0x01 graphic

Wiązanie adresów - cd.

Podczas faz kompilacji, ładowania i wykonywania reprezentacja adresów może ulegać zmianie.

W programie źródłowym adresy są wyrażone w sposób symboliczny (np. X=X+1)

Kompilator wiąże te adresy z adresami względnymi (relokowalnymi - kod względny, relokowany) np. 14 bajtów od początku modułu

Rozwiązania z przeszłości: program konsolidujący (ładujący) wiąże dalej te adresy względne z adresami bezwzględnymi (kod bezwzględny) np. 70014.

Zmiana reprezentacji adresów jest nazywana wiązaniem adresów - każde wiązanie adresów jest odwzorowaniem jednej przestrzeni adresowej w inną. Teoretycznie, wiązanie przestrzeni adresowej z przestrzenią pamięci może być wykonywane na każdym z etapów realizacji programu.

Każde wiązanie adresów jest odwzorowaniem jednej przestrzeni adresowej w inną.

Faza kompilacji:

- jeżeli podczas kompilacji wiadomo, gdzie proces będzie rezydował w pamięci, wówczas może być wygenerowany kod (adres) bezwzględny - wystarczy znajomość miejsca, od którego zaczyna się obszar przeznaczony dla danego programu;

- rozwiązanie to jest tylko możliwe dla wybranych organizacji pamięci, tj. przydział jednego spójnego obszaru lub przydział stref stałych;

- jeśli lokalizacja programu ulegnie zmianie, niezbędna jest rekompilacja programu .Wiązanie adresów - cd.

Faza łączenia i ładowania:

- jeśli nie wiadomo, gdzie program będzie umiejscowiony w pamięci to kompilator musi generować kod relokowalny (relocatable);

- ostateczne określanie (wiązanie) adresów jest realizowane dopiero na etapie ładowania (rozwiązanie bardziej elastyczne).Wiązanie adresów - cd.

Faza wykonywania:

- jeśli proces może być przemieszczany z jednego miejsca w pamięci w inne podczas swojego wykonywania, to wiązanie adresów powinno być realizowane dopiero na etapie wykonywania instrukcji programu.

Lokacja statyczna (faza kompilacji lub ładowania)

Lokacja dynamiczna (faza wykonywania)

Wiązanie adresów - rejestry relokacja dynamicznej

0x01 graphic

0x08 graphic
Wymiatanie (ang. swapping)

0x01 graphic

Wymiatanie (ang. swapping)

Dwie klasy organizacji pamięci: z wymiataniem i bez wymiatania

Cel wymiatania: zwiększenie liczby zadań, które jednocześnie mogą być przetwarzane w systemie (zwiększenie stopnia wieloprogramowości) . Stosowane w powiązaniu z rotacyjnym (Round Robin) i priorytetowym algorytmem szeregowania przydziału procesora

Związek z zastosowaną techniką wiązania adresów:

Wada: Czas przełączania kontekstu w systemie w którym stosuje się wymiatanie jest stosunkowo długi

Wniosek: aby wykorzystanie procesora mogło być wydajne, czas wykonywania (np. kwant czasu w algorytmie rotacyjnym) każdego procesu powinien być porównywalny z czasem wymiany . Wymianie nie mogą podlegać procesy bezczynne, w szczególności nie można wymiatać procesów, które czekają na zakończenie operacji we/wy

Problem: Jeśli z pamięci zostałby wymieciony proces P1 oczekujący na wykonanie operacji we/wy i zastąpiony procesem P2, to operacja we/wy procesu P1 mogłaby usiłować użyć pamięci należącej obecnie do procesu P2.

Rozwiązanie:

  1. nigdy nie wymiatać procesów, w którym trwają operacje we/wy

  2. wykonywać operacje we/wy tylko za pośrednictwem buforów systemowych

W praktyce wymiatanie stosuje się gdy przekroczona jest pewna wartość progowa ( pozostaje wolne 15 - 20 % pamięci ) .W UNIX-ie decyzję o wymiataniu podejmuje proces 1 - „swapper”

Organizacje pamięci

Przydział jednego, spójnego obszaru

Wada: statyczna wartość adresu bazowego podczas wykonywania programu - adres bazowy może być zmieniany tylko wtedy, gdy nie jest wykonywany żaden program użytkownika