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