pamięćk.pdf

(362 KB) Pobierz
Systemy Operacyjne
Zarządzanie pamięcią
•Podstawy.
•Wymiana (swapping) .
•Przydział ciągły pamięci.
• Stronicowanie.
• Segmentacja.
• Segmentacja ze stronicowaniem.
 
73627889.006.png
Podstawy
Pamięć operacyjna lub główna (main memory) jest wielką tablicą
oznaczonych adresami słów lub bajtów.
• Aby program mógł być wykonywany , musi zostać umieszczony w procesie i
wprowadzony do pamięci operacyjnej .
• Zbiór procesów czekających na dysku na wprowadzenie do pamięci w celu
wykonania tworzy kolejkę wejściową (input queue).
• Jeden z procesów zostaje wybrany i załadowany do pamięci; podczas
wykonywania pobiera rozkazy i dane z pamięci , a po zakończeniu zwalnia
zajmowaną pamięć .
•Wększość systemów pozwala procesowi użytkownika przebywać w
dowolnej części pamięci fizycznej – wpływa to na zakres adresów
dostępnych dla procesu.
• Program użytkownika przechodzi kilka faz zanim zostanie wykonany –
podczas tych faz reprezentacja adresów może ulegać zmianie .
• W programie źródłowym adresy wyrażone są w sposób symboliczny (np.
licznik ) – kompilator na ogół wiąże je z adresami względnymi , a linker
( konsolidator ) wiąże dalej te adresy względne z adresami bezwzględnymi .
 
73627889.007.png
Wiązanie adresów
Wiązanie rozkazów i danych z
adresami pamięci może być dokonane
w dowolnym z trzech kroków:
Wiązanie adresów
Program
źródłowy
1.
Faza kompilacji: Jeżeli a priori znane
jest miejsce, w którym proces będzie
przebywał w pamięci, to można
wygenerować kod bezwzględny
(absolute code) ; zmiana położenia kodu
w pamięci wymaga jego rekompilacji.
Kompilator
lub asembler
Faza
kompilacji
Inne
moduły
wynikowe
Moduł
wynikowy
2.
Faza ładowania: Jeżeli przyszłe
położenie procesu w pamięci nie jest
znane podczas kompilacji, to kompilator
musi generować kod przemieszczalny
(relocatable code); wiązanie adresów
następuje w czasie ładowania kodu.
Konsolidator
systemowa
Moduł
ładowalny
Faza
ładowania
Program
ładujący
3.
Faza wykonania: Jeżeli proces podczas
wykonania może być przemieszczany w
pamięci, to wiązanie adresów musi być
opóźnione do czasu wykonania –
wymaga to specjalnego sprzętu
( stosowane w większości systemów ).
Biblioteka
systemowa
ładowana
dynamicznie
Obraz binarny
utworzony
w pamięci
Faza
wyko-
nania
Łączenie
dynamiczne
Inne
Biblioteka
73627889.001.png 73627889.002.png
Logiczna i fizyczna przestrzeń adresowa
Adresy logiczne (wirtualne) – adresy generowane przez CPU.
Adresy fizyczne – adresy widziane przez jednostkę pamięci.
• Adresy logiczne i fizyczne są:
takie same –w schematach wiązania adresów podczas kompilacji i
ładowania ;
różne –w schematach wiązania adresów podczas wykonywania .
• Zbiór wszystkich adresów logicznych generowanych przez
program nazywa się logiczną przestrzenią adresową , a zbiór
odpowiadających im adresów fizycznych – fizyczną
przestrzenią adresową.
• Odwzorowywanie adresów logicznych na fizyczne jest
dokonywane przez jednostkę zarządzania pamięcią (memory-
management unit – MMU ) – jest to urządzenie sprzętowe .
Do każdego adresu generowanego przez proces użytkownika w chwili
odwołania się do pamięci dodawana jest wartość rejestru
przemieszczenia (relocation register) .
Program użytkownika działa na adresach logicznych , nigdy nie ma do
czynienia z rzeczywistymi adresami fizycznymi.
Logiczna i fizyczna przestrzeń adresowa
 
73627889.003.png
Przemieszczenie dynamiczne z użyciem
rejestru przemieszczenia
rejestru przemieszczenia
Rejestr
przemieszczenia
Adres
15000
Adres
fizyczny
logiczny
Procesor
+
Pamięć
249
15249
Jednostka zarządzania
pamięcią (MMU)
Przemieszczenie dynamiczne z użyciem
73627889.004.png 73627889.005.png
Zgłoś jeśli naruszono regulamin