Wykład 4 - Jan Kazimirski

Transkrypt

Wykład 4 - Jan Kazimirski
Systemy operacyjne III
Jan Kazimirski
Systemy
operacyjne III
WYKŁAD 4
Jan Kazimirski
1
Systemy operacyjne III
Jan Kazimirski
Zarządzanie pamięcią
operacyjna
2
Systemy operacyjne III
Jan Kazimirski
Architektura komputera
SZYNA DANYCH
PAMIĘĆ
CPU
SZYNA ADRESÓW
URZĄDZENIA I/O
3
Systemy operacyjne III
Jan Kazimirski
Pamięć operacyjna
●
●
●
Składa się z komórek o określonych adresach
CPU posiada rozkazy operujące na komórkach
pamięci
Rozmiar fizycznej pamięci zależy od szerokości
szyny adresów:
16 bitów
64KB
20 bitów
1MB
32 bity
4GB
36 bitów
64GB
4
Systemy operacyjne III
Jan Kazimirski
Model pamięci
●
●
System jednoprogramowy – pamięć podzielona
na dwie części: pamięć systemu operacyjnego i
pamięć programu
System wieloprogramowy – konieczność
zarządzania pamięcią poszczególnych
programów
5
Systemy operacyjne III
Jan Kazimirski
Zarządzanie pamięcią
●
●
Model jednoprogramowy
–
Przydział całej wolnej pamięci do zadania
–
Przykład: DOS
Model wieloprogramowy
–
Przydział poszczególnych fragmentów pamięci do
poszczególnych programów (zadań)
–
Efektywne zarządzanie (jak najwięcej zadań w
pamięci)
–
Przykłady: Unix/Linux, Windows
6
Systemy operacyjne III
Jan Kazimirski
Zarządzanie pamięcią –
wymagania ogólne
●
Relokacja 
●
Ochrona pamięci 
●
Współdzielenie 
●
Struktura logiczna 
●
Struktura fizyczna 
7
Systemy operacyjne III
Jan Kazimirski
Relokacja
●
●
●
●
Pamięć wykorzystywana jest przez wiele
procesów
Programista nie zna położenia swojego programu
w czasie wykonania
Położenie programu może się zmienić.
Program zawiera odwołania do adresów, które
muszą być konwertowane.
8
Systemy operacyjne III
Jan Kazimirski
Relokacja – system
jednozadaniowy
SO 1.1
SO 1.2
SO 1.3
Program
Program
Program
Problem relokacji może
wystąpić również w
systemie
jednozadaniowym jeżeli
program ma być
uruchamiany np. na
różnych wersjach
systemu operacyjnego
9
Systemy operacyjne III
Jan Kazimirski
Relokacja – system
wielozadaniowy
SO
Program 1
SO
SO
Program 2
Program 3
Program 3
Program 1
Program 3
Program 2
Program 1
Program 2
Adresy programów będą
się różnić zależnie od
ilości, wielkości i
kolejności ich
uruchomienia
Mechanizm wymiany
między pamięcią a
urządzeniem wymiany
jeszcze bardziej
komplikuje sytuację
(zmiana adresów w
trakcie wykonania)
10
Systemy operacyjne III
Jan Kazimirski
Ochrona pamięci
●
●
●
●
Każdy proces powinien być chroniony przed
innymi
Poszczególne elementy programu mogą
wymagać dodatkowej ochrony (dane, kod, dane
stałe).
Ze względu na relokację ochrona musi być
realizowana w trakcie wykonywania programu
Efektywne mechanizmy ochrony wymagają
wsparcia sprzętu.
11
Systemy operacyjne III
Jan Kazimirski
Współdzielenie
●
●
●
Możliwość współdzielenia tego samego bloku
pamięci przez kilka procesów
Kontrolowane współdzielenie pamięci pozwala na
komunikację między procesami.
Współdzielenie fragmentów programu ( np.
biblioteki standardowe) oszczędza pamięć.
12
Systemy operacyjne III
Jan Kazimirski
Struktura logiczna
●
Programy w postaci modułów
●
Niezależna kompilacja modułów
●
●
Niezależne uprawnienia (tylko do odczytu, tylko
do wykonania itp.)
Współdzielenie modułów przez procesy.
13
Systemy operacyjne III
Jan Kazimirski
Struktura fizyczna
●
●
●
Fizyczna organizacja pamięci (rozmiar, sposób
adresowania)
Przepływ danych między pamięcią operacyjną a
urządzeniem wymiany
Reagowanie na sytuacje braku pamięci.
14
Systemy operacyjne III
Jan Kazimirski
Metody zarządzania pamięcią
●
Partycjonowanie (statyczne, dynamiczne) 
●
Proste stronicowanie 
●
Prosta segmentacja 
●
Pamięć wirtualna i stronicowanie 
●
Pamięć wirtualna i segmentacja 
15
Systemy operacyjne III
Jan Kazimirski
Partycjonowanie
●
●
Prosta metoda zarządzania pamięcią – obecnie
nie używana
Podział dostępnej pamięci na obszary
–
partycjonowanie statyczne
–
partycjonowanie dynamiczne
16
Systemy operacyjne III
Jan Kazimirski
Partycjonowanie statyczne
●
●
●
●
Dostępna pamięć podzielona jest na obszary o
stałych granicach.
Proces o rozmiarze mniejszym lub równym
wielkości partycji może być załadowany.
Procesy większe muszą być nakładkowane
(overlays).
Gdy brakuje pamięci proces może być usunięty z
partycji („wymieciony”).
17
Systemy operacyjne III
Jan Kazimirski
Partycjonowanie statyczne c.d.
SO
Partycjonowanie
statyczne
SO
Partycje mają taki
sam rozmiar
4 MB
6 MB
4 MB
4 MB
Partycjonowanie
statyczne
4 MB
Partycje mają różne
rozmiary
2 MB
1 MB
18
Systemy operacyjne III
Jan Kazimirski
Partycjonowanie statyczne c.d.
●
●
●
Problem – proces zawsze zajmuje cała partycję „fragmentacja wewnętrzna”
Narzucona maksymalna liczba aktywnych
procesów
Zaleta – prosta implementacja, niewielkie
obciążenie systemu
19
Systemy operacyjne III
Jan Kazimirski
Algorytm rozmieszczania
●
●
Partycje o jednakowych rozmiarach – nie ma
znaczenia która będzie użyta
Partycje o różnych rozmiarach:
–
Najmniejsza pasująca
–
Minimalizuje fragmentację
–
Rozwiązanie z osobną kolejką dla każdej partycji lub z
globalną kolejką procesów
20
Systemy operacyjne III
Jan Kazimirski
Partycjonowanie dynamiczne
●
●
●
●
Partycje o różnej wielkości (dopasowanej do
procesu)
Różna liczba partycji.
Eksploatacja prowadzi do powstawania „dziur”
(„fragmentacja zewnętrzna”)
Konieczność okresowego porządkowania
pamięci.
21
Systemy operacyjne III
Jan Kazimirski
Partycjonowanie dynamiczne
SO
SO
SO
SO
SO
SO
22
Systemy operacyjne III
Jan Kazimirski
Algorytmy rozmieszczania
●
Najlepsze dopasowanie 
●
Pierwsze dopasowanie 
●
Kolejne dopasowanie 
●
System bliźniaczy („Buddy system”) 
23
Systemy operacyjne III
Jan Kazimirski
Najlepsze dopasowanie
●
Szukany jest blok najlepiej pasujący rozmiarem
do procesu.
●
Niewielka fragmentacja
●
„Zaśmiecanie” pamięci przez małe bloki
●
Duży narzut (poszukiwanie pasującego bloku)
24
Systemy operacyjne III
Jan Kazimirski
Pierwsze dopasowanie
●
●
●
●
Szukanie pierwszego wolnego bloku pamięci w
którym zmieści się proces
Duża szybkość
„Zaśmieca” początkową część pamięci
operacyjnej
Konieczność przeglądania wielu bloków na
początku pamięci
25
Systemy operacyjne III
Jan Kazimirski
Kolejne dopasowanie
●
●
●
Pamięć przeglądana jest od bloku do którego
ostatnio wstawiono proces
Tendencja do wykorzystywania końcowej części
pamięci
Wydajny, ale może wymagać częstego
porządkowania.
26
Systemy operacyjne III
Jan Kazimirski
System bliźniaczy
●
●
●
●
Początkowo pamięć traktowana jest jako jeden blok o rozmiarze 2u.
Jeżeli rozmiar procesu jest większy niż połowa bloku to cały blok jest
przydzielany
W przeciwnym wypadku blok jest dzielony na połowę
Podziału dokonuje się dopóki nie zostanie wygenerowany
najmniejszy blok do którego proces pasuje
●
System przechowuje listę „dziur”.
●
Dziury mogą być wykorzystane do rozmieszczania procesów
●
Sąsiednie „dziury” są łączone w większe bloki i umieszczane w puli.
27
Systemy operacyjne III
Jan Kazimirski
System bliźniaczy c.d.
28
Systemy operacyjne III
Jan Kazimirski
Relokacja
●
●
●
Po załadowaniu procesu do pamięci system musi
wyliczyć bezwzględne odwołania do pamięci.
Mechanizm wymiatania może wymagać zmiany
absolutnego położenia procesu w pamięci
Porządkowanie (defragmentacja) pamięci
również zaburza bezwzględne adresy pamięci
29
Systemy operacyjne III
Jan Kazimirski
Rodzaje adresów
●
●
●
Adresy logiczne – odniesienie do pozycji w
pamięci niezależnej od bieżącej alokacji danych –
muszą być konwertowane przed uruchomieniem.
Adresy względne – lokalizacja względem jakiegoś
znanego punktu
Adresy fizyczne – rzeczywista lokalizacja w
pamięci operacyjnej
30
Systemy operacyjne III
Jan Kazimirski
Tłumaczenie adresów
●
●
●
Rejestr bazowy – określa początkową lokalizację
programu
Rejestr graniczny – określa końcową lokalizację
programu
Każde odwołanie w programie wyliczane jest
względem rejestru bazowego i porównywane z
rejestrem granicznym (izolowanie przestrzeni
adresowej procesu)
31
Systemy operacyjne III
Jan Kazimirski
Tłumaczenie adresów c.d.
Adres względny
Rejestr bazowy
ADD
PROGRAM
CMP
Adres
bezwzględny
Rejestr graniczny
Błąd ochrony
pamięci
32
Systemy operacyjne III
Jan Kazimirski
Stronicowanie
●
Pamięć podzielona na niewielkie bloki
●
Bloki procesu to strony a bloki fizyczne to ramki
●
●
System operacyjny przechowuje dla każdego
procesu osobną tablicę stron
Tablica stron odwzorowuje logiczne strony na
fizyczne ramki
33
Systemy operacyjne III
Jan Kazimirski
Stronicowanie c.d.
34
Systemy operacyjne III
Jan Kazimirski
Segmentacja
●
●
●
●
Poszczególne segmenty procesu nie muszą być
takiej samej wielkości.
Funkcjonalny podział programu: kod, dane, dane
tylko do odczytu, dane współdzielone itd.
Każdy proces posiada tablicę segmentów
Adresowanie: adres segmentu + adres
przesunięcia w segmencie.
35
Systemy operacyjne III
Jan Kazimirski
Segmentacja – x86 – tryb
rzeczywisty
●
Przestrzeń adresowa – 1 MB
●
Rejestry segmentowe 16 bitowe:
●
●
–
CS – segment kodu
–
DS,ES – segmenty danych
–
SS – segment stosu
Adres efektywny – adres bazowy (rejestr
segmentowy)*16 + przesunięcie.
Przesunięcie – 16 bitów. Rozmiar segmentu – 64 KB.
36
Systemy operacyjne III
Jan Kazimirski
Tryb rzeczywisty x86
Adres bazowy segmentu
Przesunięcie
20-bitowy adres efektywny
37
Systemy operacyjne III
Jan Kazimirski
Tryb rzeczywisty x86 c.d.
●
●
●
Różne kombinacje adresu bazowego i
przesunięcia generowały ten sam adres
efektywny.
Możliwość umieszczania początku segmentu pod
dowolnym podzielnym przez 16 adresem.
Ułatwienie ładowania programu na różne wersje
systemu, nakładki rezydentne itp.
38
Systemy operacyjne III
Jan Kazimirski
Program COM
Program COM.
CS,DS,ES,SS
Cały program nie mógł przekroczyć 64 KB
(kod,dane,stos)
KOD
Ładowany pod dowolny adres podzielny przez
16 (początek segmentu).
DANE
64
KB
Wszystkie rejestry segmentowe ładowane
adresem początku programu (segmenty
nakładają się na siebie).
Wszystkie skoki w programie realizowane
jako skoki „bliskie” - w ramach jednego
segmentu.
STOS
39
Systemy operacyjne III
Jan Kazimirski
Program EXE
Program EXE.
CS
Program mógł składać się z kilku segmentów
(rozmiar programu powyżej 64 KB)
Ładowanie programu wymagało określenia
absolutnych adresów segmentów.
Skoki tzw. „dalekie” (między-segmentowe)
wymagały przeliczenia adresów w czasie
ładowania programu do pamięci.
Program EXE wymagał specjalnego nagłówka
pozwalającego systemowi operacyjnemu
dokonać odpowiednich wyliczeń adresów
efektywnych
KOD1
CS
KOD2
DS
ES
DANE
SS
STOS
40