Szymon Kuczaj
Pamięć jest zasobem służący do
przechowywania danych i programów.
Z punktu widzenia systemu pamięć jest
zasobem
o strukturze hierarchicznej (począwszy od
rejestrów procesora, przez pamięć
podręczną,
pamięć główną, skończywszy na pamięci
masowej), w której na wyższym poziomie
przechowywane są dane, stanowiące
fragment
zawartości poziomu niższego.
Szymon Kuczaj
Szymon Kuczaj
Pamięć I rzędu:
•rejestry
•Pamięć podręczna
•pamięć główna
Pamięć II rzędu:
•dysk magnetyczny
•taśmy dyski
optyczne
Podział stały:
partycje o równym rozmiarze,
partycje o różnych rozmiarach
Podział dynamiczny.
Podział na bloki bliźniacze
(zwany też metodą sąsiedzkich stert).
Szymon Kuczaj
Podział pamięci na stałe obszary (strefy,
partycje),których rozmiar i położenie
ustalane są na etapie konfiguracji systemu.
Przydział całego obszaru o rozmiarze
większym lub równym zapotrzebowaniu,
określonym w żądaniu.
Zalety: łatwość implementacji i zarządzania.
Wady: słaba efektywność wykorzystania
pamięci (fragmentacja wewnętrzna,
ograniczona odgórnie liczba jednocześnie
przydzielonych partycji).
Szymon Kuczaj
Szymon Kuczaj
partycje o równym rozmiarze
problem zbyt małych partycji
Partycje o różnych rozmiarach
Szymon Kuczaj
Podział pamięci tworzony jest w czasie
pracy systemu stosownie do żądań
procesów.
Proces ładowany jest w obszar o
rozmiarze dosyć dokładnie
odpowiadającym jego wymaganiom.
Zalety:
lepsze wykorzystanie pamięci
(brak fragmentacji wewnętrznej).
Wady:
skomplikowane zarządzanie,
wynikające z konieczności utrzymywania
odpowiednich struktur danych w celu
identyfikacji obszarów zajętych oraz
wolnych.
Szymon Kuczaj
Tworzenie obrazu:
– Kompilacja
– Konsolidacja
– Ładowanie kodu
• Relokacja
• Ochrona
• Współdzielenie
Szymon Kuczaj
W wyniku translacji (kompilacja,
asemblacja) powstaje przemieszczalny
moduł wynikowy (relocatable object
module), w którym wszystkie adresy
liczone są względem adresu początku
modułu.
Gdyby program składał się z jednego
modułu, a jego docelowa lokalizacja w
pamięci była z góry znana, na etapie
translacji mogłyby zostać
wygenerowane adresy fizyczne.
Szymon Kuczaj
Efektywność wykorzystania pamięci:
współdzielenie kodu programu,
współdzielenie kodu funkcji
bibliotecznych
Kooperacja procesów:
synchronizacja działań procesów,
komunikacja pomiędzy procesami
(współdzielenie danych).
Szymon Kuczaj
Weryfikacja poprawności adresu pod
kątem zakresu dopuszczalności.
Weryfikacja praw dostępu:
– prawa zapisu,
– prawa odczytu,
– prawa wykonania.
Szymon Kuczaj
Arbitralny podział pamięci fizycznej na ramki,
w któreladowane są odpowiednie strony
obrazu procesu.
Podział logicznej przestrzeni adresowej na
strony o takim samym rozmiarze, jak ramki w
pamięci fizycznej.
Zalety:
– brak problemu fragmentacji zewnętrznej,
– wspomaganie dla współdzielenia i ochrony
pamięci.
Wady:
– narzut czasowy przy transformacji adresu,
– narzut pamięciowy (na potrzeby tablicy stron),
– fragmentacja wewnętrzna (niewielka).
Szymon Kuczaj
technika pamięci wirtualnej albo logicznej
(virtual/logical memory) pozwala, po
zaimplementowaniu w komputerze i jego
systemie operacyjnym, na wykorzystywanie
wielkich obszarow pamięci, większych od pamięci
fizycznej to pozornie paradoksalne zachowanie
się jest możliwe dzięki temu, że system mapuje
wirtualne adresy wykorzystywane przez
programistę w rzeczywiste adresy sprzętowe,
wykorzystując urządzenia o wielkiej pojemności,
takie jak dyski magnetyczne na pierwszy rzut oka
może się więc wydawać, że system udostępnia
więcej pamięci niż jej sam posiada przełączanie
(swapping) pomiędzy aktywną pamięcią (RAM) i
dyskiem lub innym urządzeniem, następuje w
porcjach nazywanych stronami (pages) o
rozmiarach od 1kB do wielu MB
Szymon Kuczaj
wieloprogramowość (multiprogramming)
jest szczątkową postacią przetwarzania
równoległego (parallel processing), czyli
jednoczesnego uruchomienia wielu
programów na maszynie
jednoprocesorowej; ponieważ jednak
maszyna jest jednoprocesorowa, nie ma
mowy o naprawdę równoczesnym
przetwarzaniu, lecz jedynie o przełączaniu
procesora pomiędzy programami
Szymon Kuczaj
ponadto programista, mając do czynienia z
utworzoną w technice pamięci wirtualnej pamięcią
logiczną o jednolitej i czytelnej strukturze, nie musi
tracić czasu na borykanie się z ograniczeniami
związanymi z akcydentalną strukturą pamięci
Fizycznej jak wspomniano, na pierwszy rzut oka
wydaje się nieuniknione umieszczenie
wykonywanego kodu w pamięci fizycznej - można na
przykład umieścić tam (o ile się zmieści) całą
logiczną przestrzeń adresową co jednak zrobić, jeśli
proces jest większy od dostępnych zasobow RAM?
jednym ze sposobow na to, aby proces mogł być
większy od przydzielonej mu pamięci, jest technika
nakładek (overlays) nakładkowanie polega na
przechowywaniu w pamięci tylko stale potrzebnych
rozkazow i danych; inne rozkazy wprowadzane są
tylko w razie potrzeby a następnie usuwane, gdy
okażą się (być może tylko chwilowo) zbyteczne
Szymon Kuczaj
sposobem lepszego wykorzystania pamięci
jest ładowanie dynamiczne(dynamic loading)
podprogram jest tym razem wprowadzany do
pamięci dopiero wówczas, gdy zostanie
wywołany (podprogramy w formie
przemieszczalnej są przechowywane na
dysku) ładowanie dynamiczne, podobnie jak
nakładkowanie, nie wymaga specjalnego
wsparcia SO, oprocz być może dostarczania
procedur bibliotecznych do wykonania
zadania odpowiedni plan programu wykonuje
użytkownik/programista zarowno
nakładkowanie jak i ładowanie dynamiczne
pozwalają w zasadzie wykonywać programy
większe od rozmiaru pamięci fizycznej, jednak
kosztem dodatkowej pracy użytkownika
Szymon Kuczaj
wspomnieliśmy przy okazji omawiania
nakładek, że nie cały program musi być w
pamięci w tym samym czasie zwykle tylko
część programu wymaga przebywania w
pamięci podczas wykonywania; oszczędzać
można miejsce między innymi dzięki temu,
że:
program może używać zajmujących dużo
miejsca a bardzo rzadko używanych
procedur obsługi bledów
programiści często z zapasem przydzielają
miejsce na tablice, listy, etc.
Nie które możliwości programu prawie
nigdy nie są wykorzystywane
Szymon Kuczaj