background image

Szymon Kuczaj

background image

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

background image

Szymon Kuczaj

Pamięć I rzędu:

•rejestry

•Pamięć podręczna

•pamięć główna

Pamięć II rzędu:

•dysk magnetyczny

•taśmy dyski 
optyczne

background image

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

background image

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

background image

Szymon Kuczaj

background image

partycje o równym rozmiarze

problem zbyt małych partycji

Partycje o różnych rozmiarach

Szymon Kuczaj

background image

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

background image

Tworzenie obrazu:

– Kompilacja
– Konsolidacja
– Ładowanie kodu

• Relokacja

• Ochrona

• Współdzielenie

Szymon Kuczaj

background image

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

background image

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

background image

Weryfikacja poprawności adresu pod 
kątem zakresu dopuszczalności.

Weryfikacja praw dostępu:

– prawa zapisu,
– prawa odczytu,
– prawa wykonania.

Szymon Kuczaj

background image

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

background image

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

background image

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

background image

    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

background image

   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

background image

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


Document Outline