• Nie Znaleziono Wyników

SYSTEMY OPERACYJNE

N/A
N/A
Protected

Academic year: 2021

Share "SYSTEMY OPERACYJNE"

Copied!
40
0
0

Pełen tekst

(1)

SYSTEMY OPERACYJNE

dr. hab. Vitaliy Yakovyna

yakovyna@matman.uwm.edu.pl http://wmii.uwm.edu.pl/~yakovyna/

UNIWERSYTET WARMIŃSKO-MAZURSKI W OLSZTYNIE

Wydział Matematyki i Informatyki

(2)

Stronicowanie

Pamięci

(3)

Stronicowanie

• Stronicowanie to schemat zarządzania pamięcią, który pozwala, aby fizyczna przestrzeń adresowa procesu była nieciągła

• Stronicowanie pozwala uniknąć fragmentacji

zewnętrznej i związanej z tym potrzeby zagęszczania

• Stronicowanie w różnych formach jest używane w większości systemów operacyjnych

• Stronicowanie jest realizowane poprzez współpracę między systemem operacyjnym a sprzętem

(4)

Metoda Podstawowa

• Pamięć fizyczna dzielona jest na bloki stałej długości zwane ramkami

• Pamięć logiczna dzielona jest na bloki stałej długości zwane stronami

• Rozmiary stron i ramek są identyczne

• Każdy adres jest dzielony na dwie części: numer strony (p) i przesunięcie w obrębie strony (d)

• Numer strony służy jako indeks w tablicy stron procesu

(5)

Stronicow anie

(6)

Model stronicow

ania pamięci

(7)

Rozmiar Strony

• Rozmiar strony jest określany przez sprzęt. Rozmiar strony to potęga 2, zwykle między 4 KB a 1 GB, w zależności od architektury komputera.

• Jeśli rozmiar logicznej przestrzeni adresowej wynosi 2m, a rozmiar strony to 2n bajtów, to starsze (m−n) bitów adresu logicznego oznaczają numer strony, a młodsze n bitów oznaczają przesunięcie w

obrębie strony

(8)

Fragmentacja

• Brak fragmentacji zewnętrznej: dowolna wolna ramka może być przypisana do procesu, który jej potrzebuje

• Niektóra fragmentacja wewnętrzna: ostatnia

przydzielona ramka może nie być całkowicie pełna

• W najgorszym przypadku proces wymagałby n stron plus 1 bajt

• Jeśli rozmiar procesu jest niezależny od rozmiaru strony, oczekujemy, że fragmentacja wewnętrzna wyniesie średnio połowę strony na proces

(9)

Rozmiar Strony

• Fragmentacja wewnętrzna sugeruje, że pożądane są małe rozmiary stron

• Jednak w takim razie zwiększa się rozmiar tablicy stron

• Ponadto dyskowe operacje we/wy są bardziej wydajne, gdy ilość przesyłanych danych jest większa

• Niektóre procesory i systemy operacyjne obsługują wiele rozmiarów stron

• W systemach x86-64 system Windows 10 obsługuje strony o rozmiarze 4 KB i 2 MB

• Linux obsługuje także dwa rozmiary stron: domyślny rozmiar strony (zwykle 4 KB) i zależny od architektury większy rozmiar strony zwany ogromnymi stronami (ang. huge pages)

(10)

Przydział Procesu w

Pamięci

(11)

Tablica Ramek

• Ponieważ system operacyjny zarządza pamięcią

fizyczną, musi być świadomy szczegółów przydzielenia pamięci fizycznej

• Informacje te są na ogół przechowywane w pojedynczej systemowej strukturze danych zwanej tablicą ramek

• Tablica ramek ma jeden wpis dla każdej fizycznej

ramki, wskazując, czy ta jest wolna czy przydzielona, a jeśli jest przydzielona, której stronie którego procesu (lub procesów)

(12)

Tablicy Stron

• System operacyjny utrzymuje kopię tabeli stron dla każdego procesu

• Ta kopia służy do translacji adresów logicznych na adresy fizyczne, ilekroć system operacyjny musi mapować adres logiczny na adres fizyczny

• Jest również wykorzystywana przez dyspozytora CPU do definiowania sprzętowej tablicy stron, kiedy procesor ma zostać przydzielony procesowi

• Stronicowanie zwiększa zatem czas przełączania kontekstu

(13)

Wsparcie Sprzętowe

• Wskaźnik do tablicy stron jest przechowywany z innymi wartościami rejestrów w PCB każdego procesu

• W najprostszym przypadku tablica stron jest

implementowana jako zestaw dedykowanych szybkich rejestrów sprzętowych

• Takie podejście wydłuża czas przełączania kontekstu, ponieważ każdy z tych rejestrów musi być wymieniany podczas przełączania kontekstu

• Większość współczesnych procesorów obsługuje duże tablicy stron (np. 220 wpisów) → użycie szybkich rejestrów nie jest możliwe

• Tablica stron jest przechowywana w pamięci głównej, a rejestr bazowy tablicy stron wskazuje tę tablicę stron

• Zmiana tablicy stron wymaga zmiany tylko wartości rejestru bazowego, co znacznie skraca czas przełączania kontekstu

(14)

Translation Look-Aside Buffer (TLB)

• Przechowywanie tablicy stron w pamięci głównej może dać szybsze przełączanie kontekstu, lecz także może

wydłużyć czas dostępu do pamięci

• Potrzebne są dwa dostępy do pamięci w celu uzyskania dostępu do danych (jeden dla wpisu tablicy strony i

jeden dla danych rzeczywistych) → dostęp do pamięci jest spowalniany dwukrotnie

• Dlatego procesory posiadają pamięć podręczną (ang.

TLB, Translation Lookaside Buffer), w której pamiętane są ostatnio wyznaczone adresy fizyczne stron

(15)

Translation Look-Aside Buffer (TLB)

• TLB to skojarzeniowa (adresowana zawartością) pamięć

• Kiedy pamięć skojarzeniowa wyszukuje element, element jest porównywany ze wszystkimi kluczami jednocześnie

• Wyszukiwanie jest szybkie; wyszukiwanie przez TLB na nowoczesnym sprzęcie jest częścią potoku instrukcji, zasadniczo nie powoduje obniżenia wydajności

• Jednak aby móc przeprowadzić wyszukiwanie w jednym kroku potoku, TLB musi być niewielka. Zwykle ma od 32 do 1024 pozycji

(16)

Stronicow anie

Sprzętowe z TLB

(17)

Ochrona

• Ochrona pamięci w środowisku stronicowanym realizowana jest przez bity ochronne związane z każdą ramką

• Zwykle te bity są przechowywane w tablicy stron

• Jeden bit może zdefiniować stronę do odczytu/zapisu lub tylko do odczytu

• Zapewniając oddzielne bity ochrony dla każdego

rodzaju dostępu (odczyt, zapis, wykonanie), możemy zezwolić na dowolną kombinację tych dostępów

(18)

Bit Ważności

• Jeden dodatkowy bit jest zazwyczaj dołączany do każdego wpisu w tablicy stron: bit ważności (ang.

valid–invalid bit)

• Gdy bit ten jest ustawiony na ważny, powiązana strona znajduje się w przestrzeni adresowej

procesu

• Gdy bit jest ustawiony na niepoprawny, strona nie znajduje się w przestrzeni adresowej procesu

• System operacyjny ustawia bit ten dla każdej strony, aby zezwolić lub zabronić dostęp do strony

(19)

Bit

Ważności w tablicy

stron

• System z 14-bitową przestrzenią adresową (od 0 do 16383)

• Program używa adresów tylko od 0 do 10468

• Rozmiar strony – 2 KB

(20)

Rejestr Długości Tablicy Stron

• Wiele procesów wykorzystuje tylko niewielką część dostępnej dla nich przestrzeni adresowej

• Większość tablicy stron byłaby nieużywana, ale zajmowałaby cenne miejsce w pamięci

• Niektóre systemy zapewniają sprzęt, w postaci rejestru długości tablicy stron, dla wskazania rozmiaru tablicy stron

• Wartość ta jest sprawdzana dla każdego adresu

logicznego, aby sprawdzić, czy adres znajduje się w ważnym zakresie dla tego procesu

(21)

Strony Współdzielone

• Zaletą stronicowania jest możliwość współdzielenia wspólnego kodu

• Aby można było go udostępnić, kod musi być

kodem niemodyfikującym się: nigdy nie zmienia się podczas wykonywania

• Niektóre systemy operacyjne implementują IPC pamięci współdzielonej za pomocą wspólnych stron

• Stronicowanie zapewnia wiele korzyści oprócz

umożliwienia wielu procesom współdzielenia tych samych stron fizycznych

(22)

Współdzielenie Standardowej

Biblioteki C w

Środowisku

Stronicowania

(23)

Struktura

Tablicy Stron

(24)

Stronicowanie Hierarchiczne

• Większość nowoczesnych systemów komputerowych

obsługuje dużą logiczną przestrzeń adresową (232 do 264)

• Sama tablica stron staje się zbyt duża, np.:

• system z 32-bitową logiczną przestrzenią adresową

• rozmiar strony w takim systemie wynosi 4 KB (212)

• tablica stron składa się z ponad 1 miliona wpisów (220 = 232/212)

• jeśli każdy wpis składa się z 4 bajtów, każdy proces może potrzebować do 4 MB dla samej tablicy stron

• Rozwiązanie – podzielić tablicę stron na mniejsze części

(25)

Dwupoziom owa tablica

stron

(26)

Translacja adresów dla dwupoziomo

wej

architektury

(27)

Stronicowanie Hierarchiczne:

Architektury 64-bitowe

• Zewnętrzna tablica stron składa się z 242 pozycji lub 244 bajtów (16 TB):

• Zewnętrzna tablica stron nadal ma rozmiar 234 bajtów (16 GB):

• W przypadku architektur 64-bitowych hierarchiczne tablice stron są ogólnie uważane za nieodpowiednie

(28)

Haszowane Tablice Stron

• Jednym podejściem do obsługi przestrzeni adresowych większych niż 32 bity jest użycie haszowanej tablicy

stron (wartością skrótu jest wirtualny numer strony)

• Każdy wpis w tablicy skrótów zawiera listę elementów, które mają skrót do tej samej lokalizacji (kolizji)

• Każdy element składa się z trzech pól:

1) wirtualny numer strony

2) wartość zmapowanej ramki strony

3) wskaźnik do następnego elementu na liście

(29)

Haszowane Tablice

Stron

(30)

Odwrócone Tablice Stron

• Odwrócona tablica stron ma jeden wpis dla każdej rzeczywistej strony (lub ramki) pamięci

• Każdy wpis składa się z adresu wirtualnego z

informacją o procesie będącym właścicielem strony

• Tak więc, tylko jedna tablica stron jest w systemie

• Zmniejszenie ilości pamięci do przechowywania tabeli stron, zwiększenie czasu wyszukiwania w tablicy

• Przykłady: 64-bitowe UltraSPARC oraz PowerPC

(31)

Odwrócone Tablice

Stron

(32)

Swapping

(33)

Swapping (Wymiana)

• Proces lub jego część można tymczasowo wymienić z pamięci do dysku, a następnie przywrócić do

pamięci w celu dalszego wykonywania

• Zamiana umożliwia, że całkowita fizyczna przestrzeń adresowa wszystkich procesów

przekracza rzeczywistą pamięć fizyczną systemu

• ⟹ zwiększenie stopnia multiprogramowania w systemie

(34)

Wymiana

Standardowa

(35)

Wymiana z Stronicowa

niem

(36)

Wymiana w Systemach Mobilnych

• Systemy mobilne zazwyczaj nie obsługują wymiany

• Pamięć flash ⇒

• ograniczenie przestrzeni

• ograniczona liczba zapisów

• słaba przepustowość między pamięcią główną a pamięcią flash

• Mobilny SO prosi aplikacje o dobrowolne zrzeczenie się przydzielonej pamięci (dane tylko do odczytu)

• Wszelkie aplikacje, które nie zwolnią wystarczającej ilości pamięci, mogą zostać zakończone (Android zapisuje stan aplikacji)

(37)

Stronicowanie.

Streszczenie

(38)

Streszczenie (1)

• Nowoczesne systemy operacyjne używają

stronicowania do zarządzania pamięcią. W tym procesie pamięć fizyczna jest dzielona na bloki o stałej wielkości zwane ramkami, a pamięć logiczna na bloki o tym samym rozmiarze zwane stronami

• Gdy używane jest stronicowanie, adres logiczny jest dzielony na dwie części: numer strony i

przesunięcie w obrębie strony. Numer strony służy jako indeks do tabeli stron, która zawiera ramkę w pamięci fizycznej. Przesunięcie to określone miejsce w ramce, do której następuje odwołanie

(39)

Streszczenie (2)

• Translation look-aside buffer (TLB) to sprzętowa pamięć podręczna tablicy stron. Każdy wpis TLB zawiera numer strony i odpowiadającą mu ramkę

• Korzystanie z TLB w tłumaczeniu adresu dla

systemów z stronicowaniem obejmuje uzyskanie numeru strony z adresu logicznego i sprawdzenie, czy ramka strony znajduje się w TLB. Jeśli tak, ramka jest uzyskiwana z TLB. Jeśli ramka nie jest obecna w TLB, należy ją pobrać z tablicy stron

(40)

Streszczenie (3)

• Stronicowanie hierarchiczne polega na dzieleniu adresu logicznego na wiele części, z których każda odnosi się do różnych poziomów tablicy stron.

Ponieważ adresy rozszerzają się poza 32 bity, liczba poziomów hierarchicznych może stać się duża. Dwie strategie, które rozwiązują ten problem, to

haszowane i odwrócone tablice stron

• Wymiana pozwala systemowi przenosić strony

należące do procesu na dysk, aby zwiększyć stopień multiprogramowania

Cytaty

Powiązane dokumenty

Jakiekolwiek zapisy, z których interpretować można obowiązek udowodnienia, czy nawet uprawdopodobnienia okoliczności objętych oświadczeniem Zamawiającego (zwłaszcza

Spopularyzowanie obliczeń czasu rzeczywistego, choć pierwsze tego typu systemy pojawiły się w 1964r.. SYSTEMY CZASU

Spośród pięciu liczb naturalnych, pierwsza i druga liczba są równe, trzecia liczba jest sumą pierwszej i drugiej, czwarta liczba jest sumą pierwszej, drugiej i trzeciej, zaś

 Aby dodać pierwszą przystawkę, należy z Aby dodać pierwszą przystawkę, należy z menu Plik wybrać opcję .. menu Plik wybrać opcję  Dodaj/usuń Dodaj/usuń

Zapisujemy konsolę MMC na Pulpicie, po czym należy się wylogować i zalogować ponownie jako administrator.... We need a

1) Obsługa żądania za pomocą istniejącego wątku jest często szybsza niż oczekiwanie na tworzenie wątku 2) Pula wątków ogranicza liczbę wątków, które istnieją. w

• Średni czas oczekiwania na ogół nie jest minimalny i może się znacznie różnić, jeśli czasy procesora w procesach znacznie się różnią.. • Efekt konwoju – wszystkie

• zadania klasy SCHED_FIFO – gotowe do uruchomienia zadanie tej klasy jest szeregowane przez zadaniami SCHED_OTHER i nie otrzymują kwantu czasu (wykonują się do zawieszenia lub