Zbigniew S. Szewczak Systemy Operacyjne
Transkrypt
Zbigniew S. Szewczak Systemy Operacyjne
Zbigniew S. Szewczak Systemy Operacyjne Wykład 3 Planowanie procesora. Zarządzanie pamięcią. Toruń, 2005 Propozycje terminu egzaminu ✦ piątek, 17.02.2006, g.12.00-14.00 ✦ niedziela, 19.02.2006, g.14.00-16.00 ✦ piątek, 3.03.2006, g.12.00-14.00 ✦ niedziela, 5.03.2006, g.14.00-16.00 ✦ O czym będzie? ✦ Planowanie przydziału procesora ✦ ✦ ✦ ✦ ✦ ✦ Podstawowe pojęcia Kryteria planowania Algorytmy planowania Planowanie wieloprocesorowe Planowanie w czasie rzeczywistym Ocena algorytmów ✦ Zarządzanie pamięcią ✦ ✦ ✦ ✦ ✦ ✦ ✦ Logiczna i fizyczna przestrzeń adresowa Wymiana Przydział ciągły Stronicowanie Segmentacja Segmentacja ze stronicowaniem Struktura systemów operacyjnych ✦ System zarządzania zadaniami (procesami) ✦ System zarządzania pamięcią operacyjną ✦ System zarządzania plikami ✦ System zarządzania wejściem-wyjściem ✦ Sieciowy system operacyjny ✦ System ochrony ✦ System interpretacji poleceń ✦ Generacja systemu Podstawowe pojęcia ✦ Idea wieloprogramowania: wiele procesów dzieli (niepodzielny zasób) CPU ✦ Celem wieloprogramowania jest maksymalne wykorzystanie jednostki centralnej (CPU) ✦ Planowanie przydziału procesora (ang. CPU scheduling) jest kluczową funkcją w każdym systemie operacyjnym albowiem jest realizacją idei wieloprogramowania Fazy procesu ✦ CPU-I/O - wykonanie procesu składa się z fazy procesora (ang. CPU burst) i fazy we/wy (ang. I/O burst) ✦ Krzywa częstości zatrudnień procesora ma kształt wykładniczy lub hiperwykładniczy ✦ Proces ograniczony przez we/wy ma wiele krótkich faz procesora, proces ograniczony przez procesor ma długie fazy procesora Naprzemienny ciąg faz procesora i we/wy load store add store read file czekaj na we/wy store increment index write file czekaj na we/wy load store add store read file czekaj na we/wy . . . faza procesora faza we/wy faza procesora faza we/wy faza procesora faza we/wy Histogram czasów faz procesora 160 częstość występowania fazy 140 120 100 80 60 40 20 0 8 16 24 czas trwania fazy (milisekundach) 32 40 Planista przydziału procesora ✦ Planista (krótkoterminowy) przydziału procesora (ang. CPU scheduler) wybiera jeden proces spośród przebywających w pamięci procesów gotowych do wykonania i przydziela mu procesor ✦ Decyzje o przydziale procesora podejmowane są ✦ 1. gdy proces przeszedł od stanu aktywności do czekania ✦ np. z powodu operacji we/wy ✦ np. czekanie za zakończnie potomka ✦ 2. gdy proces przeszedł od stanu aktywności do gotowości ✦ np. wskutek przerwania ✦ 3. gdy proces przeszedł od stanu czekania do gotowości ✦ np. po zakończeniu operacji we/wy ✦ 4. gdy proces kończy działanie ✦ W pkt. 2 i 3 można dokonać wyboru procesu któremu przydzielić CPU Diagram stanów procesu nowy zakończony przerwanie przyjęcie wyjście gotowy obsłużenie zdarzenia lub operacja we/wy aktywny decyzja planisty czekający oczekiwanie na zdarzenie lub na wykonanie operacji we/wy Planista przydziału procesora (c.d.) ✦ Planowanie w sytuacjach 1 i 4 nazywamy niewywłaszczeniowym (ang. nonpreemptive) ✦ Algorytm planowania (szeregowania) nazywamy wywłaszczającym (ang. preemptive) w pozostałych sytuacjach ✦ systemy Windows 9x, 2K, XP, Mac OS X ✦ Planowanie bez wywłaszczeń: proces, który otrzyma procesor, zachowuje go tak długo aż nie odda go z powodu przejścia w stan oczekiwania lub zakończenia (nie wymaga zegara) ✦ systemy Windows 3.x i Apple Macintosh OS Planista przydziału procesora (c.d.) ✦ Planowanie wywłaszczające: drogie i ryzykowne ✦ Co się stanie gdy wywłaszczony zostanie proces w trakcie wykonywania funkcji systemowej (np. zmiany danych w blokach opisu kolejki we/wy)? ✦ UNIX czeka z przełączeniem kontekstu do zakończenia wywołania systemowego lub do zablokowania procesu na we/wy ✦ Nie można wywłaszczać procesu gdy wewnętrzne struktury jądra są niespójne ✦ Blokowanie przerwań przy wejściu do ryzykownych fragmentów kodu jądra Ekspedytor ✦ Ekspedytor (ang. dispatcher) jest modułem, który faktycznie przekazuje procesor do dyspozycji procesu wybranego przez planistę krótkoterminowego; obowiązki ekspedytora to ✦ przełączanie kontekstu ✦ przełączanie do trybu użytkownika ✦ wykonanie skoku do odpowiedniej komórki w programie użytkownika w celu wznowienia działania programu ✦ Opóźnienie ekspedycji (ang. dispatch latency) to czas, który ekspedytor zużywa na wstrzymanie jednego procesu i uaktywnienie innego Kryteria planowania ✦ Definicje ✦ Wykorzystanie procesora (ang. CPU utilization) – procent czasu, przez który procesor pozostaje zajęty ✦ najlepiej by było gdyby procesor był nieustannie zajęty pracą ✦ powinno się mieścić od 40% (słabe obciążenie systemu) do 90% (intensywna eksploatacja) ✦ Przepustowość (ang. throughput) - liczba procesów kończących w jednosce czasu ✦ długie procesy - 1 na godzinę, krótkie - 10 na sekundę Kryteria planowania ✦ Definicje (c.d.) ✦ Czas cyklu przetwarzania (ang. turnaround time) – czas między nadejściem procesu do systemu a chwilą jego zakończenia ✦ suma czasów czekania na wejście do pamięci, czekania w kolejce procesów gotowych, wykonywania we/wy, wykonania (CPU) ✦ Czas oczekiwania (ang. waiting time) - suma okresów, w których proces czeka w kolejce procesów gotowych do działania Kryteria planowania (c.d.) ✦ Definicje (c.d.) ✦ Czas odpowiedzi (ang. response time) - ilość czasu między wysłaniem żądania a pojawieniem się odpowiedzi bez uwzględnienia czasu potrzebnego na wyprowadzenie odpowiedzi (np. na ekran). ✦ czas odpowiedzi jest na ogół uzależniony od szybkości działania urządzenia wyjściowego ✦ miara zastępująca miarę czasu cyklu przetwarzania w systemach interaktywnych ✦ np. kliknięcie myszą obiektu – mniej niż 0,1s Kryteria optymalizacji algorytmów planowania ✦ Maksymalne wykorzystanie procesora ✦ Maksymalna przepustowość ✦ Minimalny czas cyklu przetwarzania ✦ Minimalny czas oczekiwania ✦ Minimalny czas odpowiedzi ✦ minimalizowanie wariancji czasu odpowiedzi zamiast średniego czasu odpowiedzi w systemach z podziałem czasu ✦ mało algorytmów minimalizujących wariancję ✦ pożądany system z sensownym i przewidywalnym czasem odpowiedzi zamiast systemu o lepszym średnio czasie odpowiedzi i bardzo zmiennym Planowanie metodą FCFS ✦ Pierwszy zgłoszony, pierwszy obsłużony (ang. firstcome, first-served - FCFS) ✦ Implementuje się łatwo za pomocą kolejek FIFO blok kontrolny procesu dołączany na koniec kolejki, procesor dostaje PCB z czoła kolejki Czas trwania fazy ✦ Przykład: Proces P1 24 P2 3 P3 3 ✦ Przypuśćmy, że procesy nadejdą w porządku: P1 , P2 , P3 Planowanie metodą FCFS (c.d.) ✦ Diagram Gantta dla FCFS P1 0 P2 24 P3 27 30 ✦ Czas oczekiwania dla P1 = 0; P2 = 24; P3 = 27 ✦ Średni czas oczekiwania: (0 + 24 + 27)/3 = 17 milisekund ✦ Wariancja czasu oczekiwania: (0^2 + 24^2 + 27^2)/3 – 17^2 =435 – 289 = 146 ms Planowanie metodą FCFS (c.d.) ✦ Przypuśćmy, że procesy nadejdą w porządku ✦ Diagram Gantta dla FCFS P2 0 ✦ ✦ ✦ ✦ P3 3 P1 6 30 Czas oczekiwania dla P1 = 6; P2 = 0; P3 = 3 Średni czas oczekiwania (6 + 0 + 3)/3 = 3 ms Średni czas oczekiwania znacznie lepszy Dlaczego? P2 , P3 , P1 Planowanie metodą FCFS (c.d.) ✦ Założmy, ze mamy jeden proces P ograniczony przez procesor i wiele procesów ograniczonych przez we/wy (Q,R,..) ✦ proces P uzyskuje procesor i procesy Q,.. kończą we/wy ✦ urządzenia we/wy są bezczynne ✦ proces P kończy swoją fazę procesora, procesy Q,... zadziałają szybko (mają krotkie fazy procesora bo są ograniczone przez we/wy) ✦ proces P uzyskuje procesor, procesy Q,.. kończą we/wy... ✦ Efekt konwoju (ang. convoy effect) - procesy czekają aż wielki proces odda procesor Planowanie metodą FCFS (c.d.) ✦ Algorytm FCFS jest niewywłaszczający - proces utrzymuje procesor do czasu aż zwolni go wskutek zakończenia lub zamówi operację we/wy ✦ Niewydajne wykorzystanie CPU (efekt konwoju) oraz we/wy (efekt konwoju dla we/wy) ✦ Krzywdzący dla procesów krótkich oraz ograniczonych przez we/wy bowiem faworyzuje dłuższe zadania ✦ Proces zawsze dostanie się do CPU (po pewnym czasie) tj. nie ma groźby zagłodzenia procesów ✦ Algorytm FCFS jest kłopotliwy w systemach z podziałem czasu bowiem w takich systemach ważne jest uzyskiwanie procesora w regularnych odstępach czasu Planowanie metodą SJF ✦ Algorytm napierw najkrótsze zadanie (ang. shortest-job-first - SJF) wiąże z każdym procesem długość jego najbliższej z przyszłych faz procesora. Gdy procesor staje się dostępny wówczas zostaje przydzielony procesowi o najkrótszej następnej fazie procesora (gdy fazy są równe to stosujemy planowanie FCFS) ✦ Algorytm może być ✦ wywłaszczający - SJF usunie proces jeśli nowy proces w kolejce procesów gotowych ma krótszą następną fazę procesora od czasu do zakończenia procesu ✦ gdy w kolejce procesów gotowych są procesy o jednakowych fazach to stosujemy FCFS ✦ algorytm SRTF (ang. shortest-remaining-time-first) - najpierw najkrótszy pozostały czas ✦ niewywłaszczający - pozwól procesowi zakończyć SJF niewywłaszczający Proces Czas trwania fazy 6 8 7 3 P1 P2 P3 P4 ✦ Diagram Gantta dla SJF (niewywłaszczający) P4 0 P1 3 P3 9 ✦ Średni czas oczekiwania: ✦ (3 + 16 + 9 + 0)/4 = 7 P2 16 24 SJF wywłaszczający Proces Czas przybycia Czas trwania fazy P1 0 8 P2 1 4 P3 2 9 P4 3 5 ✦ Diagram Gantta dla SRTF P1 0 1 P2 P4 5 P1 10 P3 17 ✦ Średni czas oczekiwania: ✦ ((10-1) + (1-1) + (17-2) + (5-3))/4 = 26/4=6.5 26 Planowanie medotą SJF (c.d.) ✦ SJF charakteryzuje to, że ✦ ma dobry czas odpowiedzi dla krótkich procesów ✦ jest krzywdzący dla procesów długich ✦ może powodować zagłodzenie procesów ✦ Planowanie metodą SRTF zwykle daje lepszy czas przetwarzania niż SJF Planowanie metodą HRRN ✦ Def. Stosunkiem reaktywności (ang. response ratio) nazywamy liczbę R = 1+ w/t, gdzie w oznacza czas oczekiwania na procesor zaś t - fazę procesora ✦ Największy stosunek reaktywności jako następny (ang. highest response ratio next - HRRN) ✦ Faworyzuje krótkie zadania, lecz po pewnym czasie oczekiwania dłuższy proces uzyska CPU ✦ Podobnie jak SJF i SRTF również algorytm HRRN wymaga oszacowania dla następnej fazy procesora Planowanie metodą HRRN (c.d.) Proces Czas przybycia 0 1 2 3 P1 P2 P3 P4 Czas trwania fazy 8 4 9 5 ✦ Diagram Gantta dla HRRN (niewywłaszczający) P1 0 P2 8 P4 12 P3 17 ✦ Średni czas oczekiwania: ✦ (0 + (8-1)+ (17-2) + (12-3))/4 = 31/4=7.75 26 Planowanie metodą HRRN (c.d.) ✦ Faworyzuje krótkie zadania jednak oczekiwanie dłuższych zadań zmienia ich współczynnik i w konsekwencji pozwala im uzyskać dostęp do CPU ✦ Ma dobry czas odpowiedzi ✦ Proces zawsze dostanie się do CPU (po pewnym czasie) tj. nie ma groźby zagłodzenia procesów Następna faza procesora ✦ SJF jest optymalny: daje minimalny średni czas oczekiwania dla danego zbioru procesów ✦ Nie ma sposobu na poznanie długości następnej fazy, możemy ją jedynie oszacować ✦ Można tego dokonać wyliczając średnią wykładniczą poprzednich faz procesora ✦ t(n) = długość n-tej fazy procesora ✦ a - liczba z przedziału [0,1], zwykle 0.5 ✦ Definiujemy średnią wykładniczą jako: s(n+1) = a*t(n) + (1-a)*s(n) gdzie s(n+1) = przewidywana długość następnej fazy Następna faza procesora (c.d.) ✦ a=0 ✦ s(n+1) = s(n) ✦ niedawna historia nie ma wpływu ✦ a=1 ✦ s(n+1) = t(n) ✦ jedynie najnowsze notowanie długości fazy ma wpływ ✦ a*(1-a)≠ 0 i rozwiniemy wzór to: s(n+1) = a*t(n) + (1-a)*a*t(n-1) + .... (1-a)^j*a*t(n-j) + ..... ..+ (1-a)^(n+1)*s(0) ✦ Ponieważ a i (1-a) są mniejsze od 1 to starsze składniki (przeszłość) mają coraz mniejszą wagę Przykład dla s(0)=10; a=1/2 12 s(i) 10 8 t(i) 6 4 2 czas faza procesora t(n) wartość odgadnięta s(n) 10 6 4 6 4 13 13 13 .... 8 6 6 5 9 11 12 .... Planowanie priorytetowe ✦ SJF jest przykładem planowania priorytetowego (ang. priority scheduling) w którym każdemu procesowi przypisuje się priorytet (liczbę) ✦ Priorytety należą do pewnego skończonego podzbioru liczb naturalnych np. [0..7], [0,4095] ✦ Prz. nice {+|- n} polecenie ✦ Procesor przydziela się procesowi o najwyższym priorytecie (jeśli priorytety są równe to FCFS) ✦ planowanie priorytetowe wywłaszczające ✦ planowanie priorytetowe niewywłaszczające ✦ SJF - priorytet jest odwrotnością następnej fazy Przykład: 0 - najwyższy priorytet Proces P1 P2 P3 P4 P5 P2 0 Czas trwania fazy 10 1 2 1 5 P5 1 Priorytet 3 1 4 5 2 P1 6 ✦ średni czas oczekiwania: ✦ (6 + 0 + 16 + 18 + 1)/5 = 41/5 = 8.2 P3 16 P4 18 19 Planowanie priorytetowe ✦ Problem: nieskończone zablokowanie (ang. indefinite blocking) lub głodzenie (ang. starvation) - procesy o małym priorytecie mogą nigdy nie dostać czasu procesora ✦ Krąży taka pogłoska, że gdy w 1973 r. wycofywano z eksploatacji w MIT komputer IBM 7094 wykryto zagłodzony niskopriorytetetowy proces przedłożony do wykonania jeszcze w 1967 r. ✦ Rozwiązanie: postarzanie (ang. aging) polegające na podwyższeniu priorytetu procesów oczekujących już zbyt długo ✦ Prz. Proces ma priorytet 127, co 15 min zwiększamy priorytet o 1 więc w najgorszym przypadku (tzn. jeśli nie dostanie się do CPU) po 32 godzinach proces będzie miał najwyższy priorytet równy 0 (co wcale nie oznacza, że dostanie do CPU ) Planowanie rotacyjne ✦ Planowanie rotacyjne, RR (ang. round-robin, time-slicing) zaprojektowano dla systemów z podziałem czasu ✦ Każdy proces otrzymuje małą jednostkę czasu, nazywaną kwantem czasu (ang. time quantum, time slice) zwykle od 10 do 100 milisekund. Gdy ten czas minie proces jest wywłaszczany i umieszczany na końcu (ang. tail) kolejki zadań gotowych (FCFS z wywłaszeniami) ✦ średni czas oczekiwania jest stosunkowo długi Planowanie rotacyjne (c.d.) ✦ Jeśli jest n procesów w kolejce procesów gotowych a kwant czasu wynosi q to każdy proces otrzymuje 1/n czasu procesora porcjami wielkości co najwyżej q jednostek czasu. ✦ Każdy proces czeka nie dłużej niż (n-1)*q jednostek czasu ✦ Wydajność algorytmu ✦ gdy q duże to RR(q) przechodzi w FCFS ✦ gdy q małe to mamy dzielenie procesora (ang. processor sharing) ale wtedy q musi być duże w stosunku do przełączania kontekstu (inaczej mamy spowolnienie) Mniejszy kwant czasu zwiększa przełączanie kontekstu kwant czas procesu = 10 kontekstu 0 12 0 6 1 1 9 10 0 0 przełą czenia 6 1 2 3 4 5 6 10 7 8 9 10 Czas cyklu przetwarzania zależy od kwantu czasu proces czas 12.0 P1 6 11.5 P2 3 11.0 P3 1 10.5 P4 7 średni czas cyklu przetwarzania 12.5 10.0 9.5 9.0 1 2 3 4 5 kwant czasu 6 7 8 RR - średni czas cyklu przetwarzania z kwantem = 6 Proces Czas trwania fazy P1 6 P2 3 P3 1 P4 7 ✦ Diagram Gantta dla RR(6) P1 0 P2 6 P3 9 P4 10 ✦ Średni czas cyklu przetwarzania ✦ (6+9+10+17)/4=42/4=10,5 P4 16 17 RR - średni czas cyklu przetwarzania z kwantem = 5 Proces Czas trwania fazy P1 6 P2 3 P3 1 P4 7 ✦ Diagram Gantta dla RR(5) P1 0 P2 5 P3 8 P4 9 ✦ Średni czas cyklu przetwarzania ✦ (15+8+9+17)/4=49/4=12,25 P1 14 15 P4 17 Planowanie metodą RR (c.d.) Dobry czas odpowiedzi dla krótkich procesów Efektywny w systemach z podziałem czasu Sprawiedliwe traktowanie procesów Kwant powinien być nieco dłuższy od czasu wymaganego na typową interakcję ✦ Procesy ograniczone przez CPU są faworyzowane kosztem procesów ograniczonych przez we/wy co prowadzi do nieefektywnego wykorzystania we/wy ✦ Nie powoduje zagłodzenia procesów ✦ ✦ ✦ ✦ Wielopoziomowe planowanie kolejek ✦ Wielopoziomowe planowanie kolejek (ang. mulitilevel queue scheduling ) polega na tym, że kolejka procesów gotowych zostaje podzielona na oddzielne (pod)kolejki ✦ procesy pierwszoplanowe (ang. foreground) - interakcyjne ✦ procesy drugoplanowe (ang. background) - wsadowe ✦ Każda z kolejek ma swój własny algorytm szeregujący np. ✦ pierwszoplanowa - RR ✦ drugoplanowa - FCFS Wielopoziomowe planowanie kolejek (c.d.) ✦ Między kolejkami także należy dokonać wyboru algorytmu planowania ✦ planowanie priorytetowe tzn. obsłuż najpierw wszystkie procesy pierwszoplanowe potem drugoplanowe możliwość zagłodzenia procesu drugoplanowego ✦ porcjowanie czasu (ang. time slice) - każda kolejka otrzymuje pewną porcję czasu procesora, który przydzielany jest każdej z kolejek np. ✦ 80% kolejka pierwszoplanowa z algorytmem RR ✦ 20% kolejka drugoplanowa z algorytmem FCFS Wielopoziomowe planowanie kolejek (c.d.) najwyższy priorytet procesy systemowe procesy interakcyjne procesy redagowania interakcyjnego procesy wsadowe procesy studenckie najniższy priorytet Kolejki wielopoziomowe ze sprzężeniem zwrotnym ✦ Kolejki wielopoziomowe z sprzężeniem zwrotnym (ang. multilevel feedback queue scheduling) umożliwiają przesuwanie procesów między kolejkami ✦ Proces, który zużywa za dużo procesora można zdymisjonować poprzez przesunięcie go do kolejki o niższym priorytecie i dzięki temu zapobiec zagłodzeniu innych procesów ✦ Postępowanie takie prowadzi do pozostawienia procesów ograniczonych przez we/wy oraz interakcyjnych w kolejkach o wyższych priorytetach Kolejeki wielopoziomowe ze sprzężeniem zwrotnym (c.d.) kwant=8 kwant=16 FCFS Kolejeki wielopoziomowe ze sprzężeniem zwrotnym (c.d.) ✦ Trzy koleki: ✦ Q0 – kwant czasu 8 milisekund ✦ Q1 – kwant czasu 16 milisekund ✦ Q2 – FCFS ✦ Planowanie ✦ nowe zadanie wchodzi do kolejki Q0 obsługiwanej przez FCFS. Zadanie dostaje 8 milisekund i jeśli się nie zmieści w tym czasie zostaje przeniesione na koniec kolejki Q1 ✦ W kolejce Q1 zadanie jest znów obsługiwane przez algorytm FCFS i dostaje dodatkowe 16 milisekund. Jeśli ponownie nie zmieści się w tym czasie zostaje wywłaszone do kolejki Q2 Kolejki wielopoziomowe ze sprzężeniem zwrotnym (c.d.) ✦ Algorytm ten daje najwyższy priorytet procesom o fazie nie większej niż 8ms, procesy o fazie między 8ms i 24ms są także szybko obsługiwane; długie procesy wchodzą do kolejki 2 i są obsługiwane (FCFS) w cyklach pracy procesora nie wykorzystanych przez procesy z kolejek 0 i 1 ✦ Planowanie ze sprzężeniem zwrotnym jest najogólniejszym i najbardziej złożonym algorytmem planowania przydziału procesora Kolejeki wielopoziomowe ze sprzężeniem zwrotnym (c.d.) ✦ Planista wielopoziomowych kolejek ze sprzężeniem zwrotnym jest określony za pomocą następujących parametrów ✦ liczba kolejek ✦ algorytm planowania dla każdej kolejki ✦ metody użytej do decydowania o awansowaniu (ang. upgrade) procesu do kolejki o wyższym priorytecie ✦ metody użytej do decydowania o zdymisjonowaniu (ang. demote) procesu do kolejki o niższym priorytecie ✦ metody wyznaczenia kolejki, do której trafia proces potrzebujący obsługi Planowanie wieloprocesorowe ✦ Planowanie wieloprocesorowe (ang. multiple-processor scheduling) komplikuje się wraz ze wzrostem liczby procesorów i ich architektury ✦ Wypróbowano wiele metod planowania i nie znaleziono najlepszej ✦ Procesory mogą być homogeniczne (identyczne) lub heterogeniczne (różne) ✦ Planowanie wieloprocesorowe heterogeniczne - na danym procesorze można wykonać programy, które zostały przetłumaczone na odpowiadający mu zbiór rozkazów; sieciowe systemy operacyjne Planowanie wieloprocesorowe (c.d.) ✦ Planowanie wieloprocesorowe homogeniczne ✦ dzielenie obciążeń (ang. load sharing) - wspólna kolejka dla wszystkich procesorów ✦ każdy procesor sam planuje swoje działanie, oba operują na tej samej kolejce procesów gotowych (ryzykowne - wymaga bardzo starannego zaprogramowania) - wieloprzetwarzanie symetryczne ✦ jeden procesor jest nadrzędny (ang. master), inne podporządkowane (ang. slave) - wieloprzetwarzanie asymetryczne (ang. asymmetric multiprocessing) Planowanie w czasie rzeczywistym ✦ Rygorystyczne systemy czasu rzeczywistego - wymóg zakończenia zadania krytycznego w gwarantowanym czasie ✦ rezerwacja zasobów (ang. resource reservation) gwarantujących wykonanie zadania ✦ planista odrzuca zadanie jeśli nie może ich zarezerwować ✦ Łagodne systemy czasu rzeczywistego - procesy o decydującym znaczeniu mają priorytet nad słabiej sytuowanymi ✦ priorytety procesów czasu rzeczywistego nie mogą maleć z upływem czasu ✦ można np. zakazać dymisjonowania procesów czasu rzeczywistego Planowanie w czasie rzeczywistym (c.d.) ✦ opóźnienie ekspediowania procesów do procesora musi być małe aby proces czasu rzeczywistego nie musiał czekać (Solaris: bez wywłaszczeń 100ms i z 2ms)) ✦ musimy zezwolić na wywłaszczanie funkcji systemowych ✦ poprzez wstawienie w długotrwałych funkcjach systemowych punktów wywłaszczeń (ang. preemption points) ✦ wywłaszczanie całego jądra, struktury danych jądra muszą być chronione za pomocą mechanizmów synchronizacji (Solaris2) ✦ wysokopriorytetowe procesy nie mogą czekać na zakończenie niskopriorytetowych; sytuacja gdy proces wysokopriorytetowy czeka na zakończenie procesu o niższym priorytetcie nosi nazwę odwrócenia priorytetów (ang. priority inversion) ✦ protokół dziedziczenia priorytetów(ang. priority- inheritance) -w czasie użycia zasobów proces dziedziczy wysoki priorytetu Opóźnienie ekspedycji odpowiedź na zdarzenie zdarzenie czas do nadejścia odpowiedzi proces osiąga gotowość do przetwarzanie działania przerwania opóźnienie ekspedycji ekspedycja konflikty wywłaszczenia procesów czas wykonanie procesu w czasie rzeczywistym Ocena algorytmów ✦ Modelowanie deterministyczne - przyjmuje się konkretne, z góry określone obciążenie robocze systemu i definiuje zachowanie algorytmu w warunkach tego obciążenia. Jest to odmiana oceny analitycznej (ang. analytic evaluation) ✦ dla danego zbioru procesów mających zadane uporządkowanie i wyrażone w milisekundach fazy procesora rozważamy algorytmy planowania (FCFS, SJF, RR (o zadanym kwancie czasu) , itp.) ✦ Pytanie: który algorytm minimalizuje czas oczekiwania? Ocena algorytmów (c.d) ✦ Modelowanie deterministyczne jest proste i szybkie, daje konkretne liczby pozwalające dokonać wyboru algorytmu planowania ✦ Modelowanie deterministyczne wymaga jednak specyficznych sytuacji i dokładnej wiedzy dlatego nie zasługuje na miano ogólnie użytecznego Zadanie – ogólny schemat Proces Czas przybycia Czas trwania fazy P1 P2 P3 P4 P5 t1 t2 t3 t4 t5 f1 f2 f3 f4 f5 ✦ Zakładając, że procesy P1 , P2 , P3 , P4 , P5 przybyły odpowiednio w chwilach: t1 , t2 , t3 , t4 , t5 , porównać metodą deterministyczną algorytmy FCFS, SJF, SRTF, HRRN i RR(q ) ✦ Uwaga: jeśli czasy przybycia nie są podane to zakładamy, że t1 = t2 = t3 = t4 = t5 = 0 oraz, że procesy przybyły w porządku P1 , P2 , P3 , P4 , P5 Ocena algorytmów (c.d.) ✦ Modele obsługi kolejek - analiza obsługi kolejek w sieciach(ang. queueing-network analysis) ✦ Wzór Little’a: n = l*W - liczba procesów opuszczających kolejkę musi się równać liczbie procesów przychodzących ✦ n - średnia długość kolejki ✦ W - średni czas oczekiwania w kolejce ✦ l - ilość nowych procesów na sekundę ✦ Symulacja sterowana rozkładami ✦ ma ograniczoną dokładność ✦ taśma śladów zdarzeń rzeczywistego systemu może poprawić dokładność ✦ Implementacja - kosztowna ale dokładna ocena Ocena planistów przydziału procesora - symulacja ... CPU symulacja 10 we/wy 213 faktyczne dane o wykonaniu procesu CPU statystyka działania metodą FCFS FCFS 12 we/wy 112 CPU 2 symulacja SJF statystyka działania metodą SFJ we/wy 147 CPU 173 ... taśma za śladem symulacja RR (Q=14) statystyka działania metodą RR (Q=14) Przykład: Solaris 2 ✦ ✦ ✦ ✦ 4 klasy: real time, system, time sharing, interactive Priorytet globalny i priorytety w obrębie klas Proces potomny dziedziczy klasę i priorytet Klasa domyślna time sharing, dynamicznie zmieniane priorytety ✦ wielopoziomowe kolejki ze sprzężeniem zwrotnym ✦ wyższy (mniejszy) priorytet <-> mniejszy(większy) kwant czasu ✦ Klasa interactive:wyższy priorytet dla aplikacji X-ów ✦ Klasa system - procesy jądra ✦ proces działa, aż zostanie zablokowany lub wywłaszczony ✦ Planista wylicza priorytet globalny, jeśli taki sam to RR ✦ Solaris 9 - nowe klasy: fixed priority (time sharing), fair share (udziały CPU) Przykład: Solaris 2 priorytet globalny kolejność planowania najwyższy pierwsza priorytety dla klas rzeczywista systemowa interakcyjna podziału czasu najniższy ostatnia klasy planowania kolejka wykonań KLT LWP cz. rzeczywistego KLT usług jądra KLT LWP interakcyjnych i podziału czasu Przykłady poleceń: Solaris 2 ✦ vmstat licznik [przedział] ✦ licznik - liczba raportów ✦ przedział - przerwa między raportami (w sek.) ✦ vmstat 5 4 ✦ r - ilość działających procesów czekających na CPU ✦ cs - ilość przełączeń kontekstu ✦ us - procent cykli CPU w trybie użytkownika ✦ sy - procent cykli CPU w trybie jądra ✦ id - procent niewykorzystanych cykli CPU Przykłady poleceń: Solaris 2 (c.d.) ✦ dispadmin -l ✦ dispadmin -g -c TS ✦ ts_quantum - kwant czasu ✦ ts_tqexp - nowy priorytet po wykorzystaniu czasu ✦ ts_slpret - nowy priorytet po wyjściu z uśpienia ✦ ts_maxwait - maksymalny czas pozostawania gotowym ✦ ts_lwait - nowy priorytet po przekroczeniu ts_maxwait ✦ priocntl -d -i all Przykład: Windows 2000 ✦ Planowanie priorytetowe z wywłaszczeniami [0..31] ✦ Wątek jest wykonywany aż zostanie wywłaszczony przez proces o wyższym priorytecie, zakończy, zużyje kwant czasu, wykona blokujące wywołanie systemowe (np. we/wy) ✦ klasa czasu rzeczywistego [16..31] i klasa zmienna [0..15] ✦ Win32 API: klasy priorytetów oraz relatywne priorytety w obrębie klas ✦ NORMATYWNY – domyślny priorytet relatywny w klasie ✦ Wątek w klasie zmiennej po wyczerpaniu czasu jest degradowany, gdy zakończy czekanie (we/wy) - awansowany ✦ Procesy pierwszo(drugo)planowe (ang. fore(back)ground) ✦ Proces wybrany na ekranie staje się pierwszoplanowy i ma zwiększany trzy razy kwant czasu co zapewnia mu dłuższe działanie Przykład: priorytety W2K klasy relatywne czas wysoki rzeczywisty nadnormatywne normatywne subnormatywne idle krytyczne 31 15 15 15 15 15 najwyższe 26 15 12 10 8 6 nadnormatywne 25 14 11 9 7 5 normatywne 24 13 10 8 6 4 subnormatywne 23 12 9 7 5 3 najniższe 22 11 8 6 4 2 idle 16 1 1 1 1 1 Przykłady poleceń: Windows XP ✦ Menedżer zadań ✦ Crtl+Shift+Esc ✦ Ctrl+Alt+Delete ✦ Procesy ✦ Widok ✦ Wybierz kolumny ✦ Uruchom ✦ start /? ✦ msconfig.exe ✦ Logo Win+Break ✦ Zaawansowane ✦ Wydajność ✦ Ustawienia Zarządzanie pamięcią ✦ Program musi być wprowadzony do pamięci operacyjnej i przydzielony odpowiedniemu procesowi ✦ Kolejka wejściowa – (ang. input queue) zbiór procesów czekających na dysku na wprowadzenie do pamięci w celu wykonania ✦ Program użytkownika, zanim zostanie wykonany, przechodzi przez kilka faz Wieloetapowe przetwarzania programu użytkownika biblioteka systemowa ładowana dynamicznie biblioteka systemowa moduły wynikowe łączenie statyczne program źródłowy kompilator asembler czas kompilacji moduł wynikowy program linkujący moduł ładowalny czas ładowania program ładujący łączenie dynamiczne obraz binarny programu w pamięci czas wykonania (run time) Powiązanie rozkazów i danych z adresami pamięci (1) ✦ Powiązanie rozkazów i danych z adresami pamięci może zostać wykonane w dowolnym z trzech kroków ✦ 1. czas kompilacji - jeśli podczas kompilacji jest znane miejsce, w którym proces będzie przebywał, to można wygenerować kod bezwzględny (ang. absolute code); gdy w późniejszym czasie ten adres początkowy ulegnie zmianie, wówczas kod taki trzeba skompilować od nowa Powiązanie rozkazów i danych z adresami pamięci (2) ✦ 2. czas ładowania - jeśli podczas kompilacji nie wiadomo, gdzie będzie umieszczony proces w pamięci, to kompilator musi wytwarzać kod przemieszczalny (ang. relocatable) ✦ 3. czas wykonania - jeśli proces może ulegać przemieszczeniu z jednego miejsca pamięci do innego podczas swojego wykonania to trzeba zastosować specjalny sprzęt do mapowania adresów (np. bazowe i graniczne rejestry). Logiczna i fizyczna przestrzeń adresowa ✦ Adres oglądany przez jednostkę pamięci zwie się fizyczną przestrzenią adresową ; to w jaki sposób fizyczna przestrzeń adresowa jest odwzorowywana jest podstawową cechą zarzadzania pamięcią ✦ Logiczny adres – wygenerowany przez CPU; jeśli odwzorowany na adres fizyczny podczas wykonywania programu wtedy jest to wirtualny adres ✦ Fizyczny adres – adres widziany przez sterownik pamięci ✦ Adres logiczny i fizyczny jest taki sam podczas kompilacji i ładowania; logiczny(wirtulany) i fizyczny adres różnią się podczas wykonania Jednostka zarządzania pamięcią (MMU) ✦ Urządzenie sprzętowe dokonujące odwzorowania adresów fizycznych na wirtualne (ang. memory-managament unit) ✦ W MMU do każdego adresu wytwarzanego przez proces użytkownika dodawana jest wartość rejestru przemieszczenia (ang. relocation register) w chwili odwoływania się do pamięci ✦ program użytkownika nigdy nie ma do czynienia z rzeczywistym adresem; program ten działa na na logicznych adresach Przemieszczenie dynamiczne z z użyciem rejestru pamięć rejestr przemieszczenia 14000 CPU adres logiczny 346 + adres fizyczny 14364 jednostka zarządzania pamięcią (MMU) Ładowanie dynamiczne ✦ Podprogram nie jest wprowadzany do pamięci dopóty, dopóki nie zostanie wywołany ✦ Lepsze wykorzystanie pamięci; nigdy nie zostanie załadowany podprogram, którego się nie używa ✦ Schemat ten jest szczególnie przydatny wtedy, kiedy trzeba okazjonalnie wykonać wielkie fragmenty kodu (np. obsługa błędów) ✦ Nie wymaga specjalnego wsparcia ze strony systemu operacyjnego; użytkownicy projektują wykorzystanie procedur bibliotecznych Konsolidacja dynamiczna ✦ Konsolidację opóźnia się do czasu wykonania ✦ W obrazie binarnym, w miejscu odwołania bibliotecznego znajduje się tylko namiastka (ang. stub) procedury będąca małym fragmentem kodu, wskazującym jak odnaleźć odpowiedni, rezydujący w pamięci podprogram biblioteczny lub jak załadować bibliotekę jeśli podprogramu nie ma w pamięci ✦ Namiastka wprowadza na swoje miejsce adres podprogramu i go wykonuje ✦ System operacyjny sprawdza podprogram czy jest w pamięci a jeśli nie ma to go sprowadza Konsolidacja dynamiczna (c.d.) ✦ Do pamięci można załadować więcej niż jedną wersję biblioteki, każdy program posłuży się swoją informacją o wersji, aby wybrać właściwą bibliotekę ✦ Niezgodności powodowane zmianami w bibliotece uwidaczniają się tylko w programach skompilowanych z nowym numerem wersji ✦ Biblioteki dzielone (ang. shared libraries) ✦ Konsolidacja dynamiczna (ang. dynamic linking ) wymaga wspomagania ze strony systemu operacyjnego, niektóre systemy realizują jedynie konsolidację statyczną (ang. static linking) Nakładki ✦ Idea polega na przechowywaniu w pamięci tylko tych danych i rozkazów, które są stale potrzebne ✦ Nakładki (ang. overlays) są potrzebne w sytuacji gdy proces jest większy niż ilość przydzielonej mu pamięci ✦ Implementowane z poziomu użytkownika; nie wymagają wsparcia ze strony systemu operacyjnego; zrozumienie dużego programu jest trudne więc projektowanie nakładek jest złożonym przedsięwzięciem Nakładki - przykład Dwuprzebiegowy asembler I przebieg konstruuje tablicę symboli II przebieg generuje kod maszynowy Kod przebiegu I = 70KB, II = 80KB, tablica symboli = 20KB, wspólne podprogramy = 30KB ✦ Wszystkiego 200KB; mamy tylko 150KB pamięci ✦ Kod przebiegu I i II są niezależne: ✦ ✦ ✦ ✦ ✦ I nakładka : I kod + tablica + wspólne podprogramy ✦ II nakładka : II kod + tablica + wspólne podprogramy ✦ moduł obsługi nakładek = 10KB Nakładki dwuprzebiegowego asemblera tablica symboli 20 kB wspólne podprogramy 30 kB moduły obsługi nakładek 10 kB przebieg 1 70 kB przebieg 2 90 kB 80 kB Wymiana ✦ Proces może być tymczasowo odsyłany (ang. swapped) do pamięci pomocniczej (ang. backing store) i pobierany z powrotem do pamięci operacyjnej w celu kontynuowania działania ✦ Pamięć pomocnicza (ang. backing store) - jest nią na ogół szybki dysk dostatecznie pojemny aby pomieścić kopie obrazów pamięci wszystkich użytkowników; powinien także umożliwiać bezpośredni dostęp do tych obrazów pamięci Wymiana (c.d.) ✦ Wytaczanie (ang. roll out), wtaczanie (ang. roll in) - wariant wymiany wykorzystywany w planowaniu priorytetowym; proces niskopriorytetowy zostaje wyswapowany w sytuacji gdy nadejdzie proces wysokopriorytetowy do kolejki procesów gotowych; proces wysokopriorytetowy zostaje załadowany do pamięci i wykonany, a gdy skończy, to proces o niższym priorytecie może być sprowadzony do pamięci i wznowiony Wymiana (c.d.) ✦ Głównym składnikiem czasu wymiany jest czas transferu (na dysk); całkowity czas transferu jest proporcjonalny do ilości pamięci wyswapowanej ✦ Zmodyfikowana metoda wymiany jest stosowana w wielu systemach operacyjnych m.in. Unix, Linux, Windows; w normalnych warunkach wymiana jest zabroniona, jednak gdy nagromadzenie procesów w pamięci osiąga pewną wartość progową może mieć miejsce Wymiana dwu procesów z użyciem pamięci pomocniczej system operacyjny proces 1 wysłanie proces 2 przestrzeń użytkownika pamięć operacyjna sprowadzenie pamięć pomocnicza Zastosowanie rejestrów sprzętowych do ochrony pamięci rejestr graniczny adres logiczny < nie CPU pułapka: błąd adresowania rejestr przemieszczenia tak + adres fizyczny pamięć Przydział ciągły ✦ Pamięć główna zwykle mieści: ✦ Rezydentny system operacyjny przechowywany zwykle w pamięci dolnej (ang. low memory) (wraz z wektorem przerwań) ✦ Proces użytkownika przechowywany w pamięci górnej (ang. high memory) ✦ Przydział ciągły (c.d.) ✦ Wieloprogramowanie ze stałą liczbą zadań (ang. multiprogrammining with a fixed number of tasks - MFT) ✦ Rejestr przemieszczenia (ang. relocation-register) jest wykorzystany do do ochrony kodu użytkownika i systemu operacyjnego ✦ Rejestr przemieszczenia zawiera wartość najmniejszego adresu fizycznego; rejestr graniczny zawiera zakres adresów logicznych - każdy adres logiczny musi być mniejszy od wartości rejestu granicznego Przydział ciągły (c.d.) ✦ Wieloprogramowanie z zmienną liczbą zadań (ang. multiprogramming with a variable number of tasks MVT) ✦ Dziura (ang. hole ) – blok dostępnej pamięci; dziury o różnorodnej wielkości są porozrzucane po całej pamięci operacyjnej ✦ Gdy proces staje się gotowy, alokuje pamięć z dziury w pamięci operacyjnej na tyle pojemnej aby sprostać wymaganiom procesu ✦ System operacyjny zarządza: a) zaalokowanymi partycjami b) wolnymi partycjami (dziurami w pamięci) Przydział ciągły (c.d.) ✦ przykład SO Proces 5 SO Proces 5 SO Proces 5 Proces 5 Proces 9 Proces 9 Proces 10 Proces 8 Proces 2 SO Proces 2 Proces 2 Proces 2 Przykład planowania kolejka zadań 0 kB system operacyjny 400 kB 2160 KB 2560 kB proces pamięć czas P1 600 kB 10 P2 1000 kB 5 P3 300 kB 20 P4 700 kB 8 P5 500 kB 15 Przykład planowania (c.d.) 0 kB 0 kB system operacyjny 0 kB system operacyjny 400 kB 400 kB 1000 kB P2 system operacyjny 400 kB P1 P1 0 kB 400 kB 1000 kB P3 P2 przydziel 2000 kB P4 P3 system operacyjny 400 kB P5 2000 kB 900 kB 1000 kB 1000 kB P4 1700 kB 2000 kB system operacyjny P1 1000 kB kończy 0 kB P1 kończy P4 2000 kB P4 P5 1700 kB P3 przydziel 1700 kB P3 2000 kB 2300 kB 2300 kB 2300 kB 2300 kB 2300 kB 2560 kB 2560 kB 2560 kB 2560 kB 2560 kB P3 Problem dynamicznego przydziału pamięci ✦ Jak na podstawie listy wolnych dziur spełnić zamówienie na obszar o rozmiarze n ✦ Pierwsze dopasowanie: (ang. first-fit) - przydziel pierwszą dziurę o wystarczającej wielkości ✦ Najlepsze dopasowanie: (ang. best-fit) - przydziel najmniejszą z dostatecznie dużych dziur; przejrzyj całą listę, chyba że jest uporządkowana według rozmiarów. Strategia ta zapewnia najmniejsze pozostałości po przydziale Problem dynamicznego przydziału pamięci (c.d.) ✦ Najgorsze dopasowanie: (ang. worst-fit) przydziel największą dziurę; należy również przeszukać całą listę. Strategia ta pozostawia po przydziale największą dziurę, która może okazać się bardziej użyteczna niż pozostałość wynikająca z podejścia polegającego na przydziale najlepiej pasującej dziury ✦ Symulacje wykazały, że first-fit i best-fit są lepsze od worst-fit zarówno ze względu na zmniejszanie czasu jak i zużycia pamięci Fragmentacja ✦ Fragmentacja zewnętrzna (ang. external fragmentation) – suma wolnych obszarów w pamięci wystarcza na spełnienie zamówienia ale nie tworzą one ciągłego obszaru ✦ Fragmentacja wewnętrzna ( ang. internal fragmentation) – zaalokowana pamięć jest nieznacznie większa od żądania alokacji pamięci; różnica ta stanowi bezużyteczny kawałek pamięci wewnątrz przydzielonego obszaru Upakowanie pamięci - przykład 0 kB 0 kB system operacyjny system operacyjny 400 kB 400 kB P5 900 kB 1000 kB 100 kB P5 900 kB upakuj P4 P4 1600 kB 1700 kB 2000 kB 2300 kB 2560 kB 300 kB P3 1900 kB P3 660 kB 260 kB 2560 kB Fragmentacja - (c.d.) ✦ Rozwiązanie problemu zewnetrznej fragmentacji to upakowanie (ang. compaction) ✦ Przemieszczenie zawartości pamięci w taki sposów aby cała wolna pamięć znalazła się w jednym wielkim bloku ✦ Upakownie nie jest możliwe jeśli ustalanie adresów jest statyczne ; jest możliwe jedynie jeśli ustalanie adresów jest dynamicznie wykonywane podczas działania procesu ✦ Problem we/wy ✦ “Zamknij” zadanie w pamięci w czasie wykonywanie we/wy ✦ Realizuj we/wy jedynie do buforów systemowych Porównanie sposobów upakowania pamięci 0 kB 0 kB system operacyjny system operacyjny 300 kB 500 kB P1 P2 600 kB 0 kB 300 kB 500 kB 600 kB P1 P2 P3 800 kB 1000 kB P4 P3 1200 kB 1500 kB system operacyjny 300 kB 500 kB P1 P2 600 kB system operacyjny 300 kB 500 kB P4 1000 kB P3 1900 kB 2100 kB P2 600 kB 1500 kB P4 przydział początkowy P1 1200 kB 1200 kB 1900 kB 2100 kB 0 kB przemieszczono 600kB P4 P3 2100 kB 2100 kB przemieszczono przemieszczono 400kB 200kB Stronicowanie (ang. Paging) ✦ Logiczna przestrzeń adresowa procesu może być nieciągła tj. procesowi można przydzielać dowolne dostępne miejsca w pamięci fizycznej ✦ Pamięć fizyczną dzieli się na bloki stałej długości zwane ramkami (ang. frames) (rozmiar jest potęgą 2, między 512B a 16MB) ✦ Pamięć logiczną dzieli się na bloki tego samego rozmiaru zwane stronami (ang. pages) ✦ Pamiętana jest lista wolnych ramek Przykłady stron ✦ ✦ ✦ ✦ ✦ ✦ ✦ ✦ ✦ ✦ ✦ Altlas 512 48b słów Honeywell-Multics 1024 36b słów IBM 370/XA i 370/ESA 4kB VAX 512B IBM AS/400 512B DEC Alpha 8kB MIPS 4kB -> 16MB UltraSPARC 8kB -> 4MB Pentium 4kB -> 4MB PowerPC 4kB Stronicowanie (c.d.) ✦ Wykonanie procesu o rozmiarze n stron wymaga znalezienia n wolnych ramek i załadowanie w nie procesu ✦ Utworzenie tablicy stron (ang. page table) do odwzorowywania adresów logicznych na fizyczne ✦ Eliminiuje się fragmentację zewnętrzna ale może powstać fragmentacja wewnętrzna ✦ proces 72766B = 35 stron 2048B + 1086 B -> 36 ramek -> fragmentacja wewnętrzna = 2048 B - 1086 B = 962 B Schemat Translacji Adresu ✦ Stronicowanie wymaga wsparcia sprzętowego ✦ Adres wygenerowany przez CPU jest dzielony na dwie części: ✦ Numer strony (ang. Page number) (p) – używany jako indeks w tablicy stron zawierającej adresy bazowe wszystkich stron w pamięci fizycznej ✦ Odległość na stronie (ang. Page offset ) (d) – w połączeniu z adresem bazowym definuje fizyczny adres pamięci posyłany do jednostki pamięci Architektura sprzętu stronicującego f adres logiczny CPU p f0000....0000 d f d adres fizyczny f1111....1111 p f pamięć fizyczna tablica stron Model stronicowania pamięci logicznej i fizycznej numer ramki strona 0 strona 1 strona 2 strona 3 pamięć logiczna 0 1 1 4 2 3 3 7 tablica stron 0 1 strona 0 2 3 strona 2 4 strona 1 5 6 7 strona 3 pamięć fizyczna Adres logiczny ✦ logiczna przestrzeń adresowa = 2^m ✦ rozmiar strony = 2^n (B lub słów) ✦ adres logiczny = (nr strony, odległość ) ✦ nr strony ≤ 2^(m-n) ✦ odległość = 2^n ✦ Przykład (minimalny): ✦ strona rozmiaru 4 słów ✦ pamięć fizyczna = 32 słowa = 8 stron Przykład minimalny a b c d e f g h i j k l m n o p pamięć logiczna 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5 6 1 2 0 1 2 3 i j k l m n o p 0 4 8 12 tablica stron pamięć fizyczna a b c d e f g h 16 20 24 28 Przydział wolnej ramki lista wolnych ramek 14 13 18 20 15 strona 0 strona 1 strona 2 strona 3 nowy proces lista wolnych ramek 15 13 13 strona 1 14 14 strona 0 15 15 16 16 strona 0 strona 1 strona 2 strona 3 nowy proces 17 18 19 20 21 17 18 strona 2 19 14 13 18 20 0 1 2 3 tablica stron nowego procesu 20 strona 3 21 Implementacja Tablicy Stron (1) ✦ Tablicę stron przechowuje się w pamięci operacyjnej ✦ Rejestr bazowy tablicy stron (ang. Page-table base register - PTBR) wskazuje położenie tablicy stron ✦ Rejestr długości tablicy stron (ang. Page-table length register - PTLR) wskazuje rozmiar tablicy stron; zwartość ta jest badana w celu sprawdzenia czy dany adres jest dozwolny Implementacja Tablicy Stron (2) ✦ Schemat ten wymaga dwóch kontaktów z pamięcia w celu uzyskania dostępu do bajtu - jeden do wpisu do tablicy stron, drugi do danego bajtu. W większości przypadków takie opóźnienie jest nie do zaakceptowania ✦ Problem ten rozwiązuje się za pomocą specjalnej, małej i szybko przeszukiwanej, sprzętowej pamięci podręcznej zwanej rejestrami asocjacyjnymi (ang. associative registers ) lub buforami translacji adresów stron (ang. translation look-aside buffers -TLBs) Sprzęt stronicujący z TLB adres logiczny CPU p f d numer strony numer ramki f0000....0000 trafienie TLB f d adres fizyczny TLB f1111....1111 p chybienie TLB f pamięć fizyczna tablica stron Rejestry asocjacyjne ✦ Równoległe wyszukiwanie Nr strony Nr ramki Translacja adresu (A´, A´´) ✦ Jeśli A´ jest w rejestrze asocjacyjnym to weź odpowiadający mu numer ramki ✦ W przeciwnym razie weź numer ramki z tablicy stron Efektywny czas dostępu do pamięci (EAT) ✦Przeglądnięcie rejestrów asocjacyjnych = ε jednostek czasu ✦Niech cykl pamięci wynosi 1 jednostkę czasu ✦Współczynnik trafień (ang. hit ratio) – procent numerów stron odnajdowywanych w rejestrach asocjacyjnych; współczynnik zależy od liczby rejestrów asocjacyjnych ✦Współczynnik trafień = α ✦Effective Access Time (EAT) EAT = (1 + ε) α + (2 + ε)(1 – α) =2+ε–α Ochrona pamięci ✦ Ochrona pamięci jest zaimplementowana za pomocą bitów ochrony przypisanych każdej ramce ✦ Bit poprawności (ang. Valid-invalid bit) - każdy wpis w tablicy stron zostaje uzupełniony o dodatkowy bit: ✦ “poprawny” (“valid” ) oznacza, że strona, z którą jest on związany, znajduje się w logicznej przestrzeni adresowej procesu, a więc jest ona dozwolona (ang. legal page) ✦ “niepoprawny” (“invalid” ) oznacza, że strona nie należy do logicznej przestrzenia adresowej procesu Bit poprawności lub niepoprawności 0 strona 0 strona 1 strona 2 strona 3 strona 4 10,468 12,287 bit poprawności numer ramki 0 2 v 1 3 v 2 4 v 3 7 v 4 8 v 5 9 v 6 0 i 7 0 i strona 5 tablica stron 2 3 4 strona 0 strona 1 strona 2 5 6 7 8 9 strona 3 strona 4 strona 5 Stronicowanie wielopoziomowe ✦Logiczna przestrzeń adresowa na 32- bitowej maszynie z rozmiarem strony 4KB (2^12) powoduje, że tablica stron może zawierać do miliona wpisów (2^32/2^12) ✦Ponieważ każda pozycja w tablicy stron ma 4B więc każdy proces może wymagać do 4MB fizycznej przestrzeni adresowej na samą tylko tablicę stron ✦Jednym z rozwiązań jest stronicowanie wielopoziomowe Przykład dwupoziomowego stronicowania (1) ✦Logiczna przestrzeń adresowa na 32- bitowej maszynie z rozmiarem strony 4K jest podzielona na: ✦ 20-bitowy numer strony ✦ 12-bitowa odległość na stronie ✦Ponieważ dzielimy tablicę stron na strony, numer strony podlega dalszemu podziałowi na: ✦ 10-bitowy numer strony ✦ 10-bitowa odległość na stronie Schemat dwupoziomowej tablicy stron tablica stron 0 1 1 500 . . . 100 100 500 . . . 708 . . . 708 929 zewnętrzna tablica stron 900 900 strona tablicy stron pamięć 929 . . . . . . . . . . . . . . . . . . Przykład dwupoziomowego stronicowania (2) ✦Adres logiczny przyjmuje więc postać: numer strony odległość na stronie p1 p2 d 10 10 12 gdzie p1 jest indeksem do zewnętrznej tablicy stron, a p2 oznacza przesunięcie na stronie tej tablicy Tłumaczenie adresu w 32b dwupoziomowej architekturze adres logiczny p1 p2 d p1 p2 zewnętrzna tablica stron d strona tablicy stron Stronicowanie wielopoziomowe a wydajność ✦Ponieważ każdy poziom jest zapamiętany jako osobna tablica w pamięci więc przekształcenie adresu logicznego na fizyczny może wymagać aż czterech dostępów do pamięci ✦Zwiększyliśmy więc pięciokrotnie czas potrzebny do wykonania jednego dostępu do pamięci, zastosowanie pamięci podręcznej pozwala utrzymać wydajność w rozsądnych granicach Stronicowanie wielopoziomowe a wydajność (c.d.) ✦Dla współczynnika α = 0.98, ε = 20 ns i czasu dostępu do pamięci 100 ns otrzymujemy: effective access time = 0.98 x 120 + 0.02 x 520 = 128 nanosekund. Co stanowi jedynie 28-procentowe wydłużenie czasu dostępu do pamięci mimo dodatkowych poziomów przeszukiwania tablic Haszowane tablice stron ✦ Przestrzeń adresowa > 32 bitów? ✦ Numer strony pamięci wirtualnej jest odwzorowany (ang. hashed ) przy pomocy funkcji haszującej na pozycje w tablicy (ang. hashed page table) ✦ Wszystkie strony wirtualne którym odpowiada ta sama pozycja w tablicy (kolizja) zostają umieszczone na jednej liście (metoda łańcuchowa) ✦ Element listy: numer strony wirtualnej (p), numer strony pamięci (r), wskaźnik do następnego elementu listy Haszowanie - przykłady ✦ Osiem pozycji w tablicy z haszowaniem o etykietach: 0,1,2,3,4,5,6,7 (długość tablicy M=8) ✦ Modularna funkcja haszująca - reszta z dzielenia przez 8 ✦ Rozwiązywanie kolizji ✦ liniową (ang. linear rehashing) ✦ metodą łańcuchową (ang. overflow with chaining ) ✦ Średni długość przeszukania tablicy długości M jednego z N elementów ✦ liniowe haszowanie: 2 - 2N/M ✦ łańcuchowe: 1+ (N-1)/2M ✦ Haszowanie liniowe 119 wartość (119) 50 0 1 50 wartość (50) 2 51 51 wartość (51) 3 74 74 wartość (74) 4 83 83 wartość (83) 5 95 - 119 95 6 wartość (95) 7 Haszowanie łańcuchowe 50 51 74 50 wartość (50) 83 51 wartość (51) . . 74 wartość (74) 83 wartość (83) 94 119 wartość (119) 95 139 wartość (139) 119 94 wartość (94) 95 wartość (95) . 139 hash table overflow table . - Wyszukiwanie adresu strony w tablicy z haszowaniem adres logiczny p d r q funkcja haszująca hash table s p d r adres fizyczny ... pamięć fizyczna Odwrócona tablica stron ✦ Odwrócona tablica stron (ang. inverted page table) ma po jednej pozycji dla każdej rzeczywistej strony pamięci (ramki) ✦ Każda pozycja zawiera adres wirtualny strony przechowywanej w ramce rzeczywistej pamięci oraz informacje o procesie posiadającym stronę ✦ Zmniejsza się rozmiar pamięci potrzebnej do pamiętania wszystkich tablic stron, jednak zwiększa się czas potrzebny do przeszukania tablicy przy odwołaniu do strony ✦ tablica haszowania (ang. hash table) - ogranicza szukanie do jednego lub najwyżej kilku wpisów w tablicy stron Odwrócona tablica stron adres logiczny CPU pid p d i wyszukiwanie d adres fizyczny i pid p pamięć fizyczna tablica stron Strony dzielone ✦ Dzielenie kodu ✦ Jedna kopia kodu nie modyfikującego samego siebie tj. wznawialnego (ang. reentrant) jest dzielona pomiędzy procesy (np. editory tekstu, kompilatory, system okien) ✦ Kod dzielony musi być widziany pod tą samą lokacją w logicznej przestrzeni adresowej dla wszystkich procesów ✦ Kod prywatny i dane ✦ Każdy proces ma własną kopie kodu i danych ✦ Strony dla prywatnego kodu i danych mogą się pojawić w dowolnym miejscu logicznej przestrzeni adresowej Dzielenie kodu w środowisku stronicowanym ed 1 ed 2 ed 3 dane 1 0 3 4 6 1 tablica stron procesu P1 proces P1 ed 1 ed 2 ed 3 dane 2 ed 1 ed 2 ed 3 dane 3 proces P3 proces P2 3 4 6 2 tablica stron procesu P3 3 4 6 7 tablica stron procesu P2 1 dane 1 2 dane 3 3 ed 1 4 ed 2 5 6 ed 3 7 dane 2 8 9 10 11 Segmentacja ✦Segmentacja (ang. segmentation) to schemat zarządzania pamięcią który urzeczywistnia sposób widzenia pamięci przez użytkownika ✦Program jest zbiorem segmentów czyli jednostek logicznych takich jak: program główny, procedura, funkcja, zmienne lokalne, zmienne globalne, common block, stos, tablica symboli, arrays Program z punkty widzenia użytkownika podprogram stos tablica symboli funkcja sqrt program główny logiczna przestrzeń adresowa Filozofia segmentacji stos podprogram stos podprogram tablica symboli tablica symboli program główny logiczna przestrzeń adresowa program główny pamięć fizyczna Adres logiczny - segmentacja ✦ <numer segmentu, odległość> ✦ Program użytkownika jest tłumaczony za pomocą kompilatora, który automatycznie konstruuje segmenty odpowiadające programowi ✦ Kompilator języka Pascal wytwarza segmenty ✦ ✦ ✦ ✦ (1) zmienne globalne (2) stosu wywołań procedur (3) kod funkcji i procedur (4) lokalne zmienne funkcji lub procedury ✦ Program ładujący przydziela numery segmentów Sprzęt do segmentacji s granica baza tablica segmentów s d tak < + nie CPU pułapka: błąd adresacji pamięć fizyczna Przykład segmentacji stos segment 0 segment 3 segment 0 funkcja sqrt 0 1 2 3 4 tablica symboli segment 4 granica baza 1000 400 400 1100 1000 1400 6300 4300 3200 4700 2400 3200 segment 3 program główny tablica segmentów 4300 4700 segment 1 segment 2 logiczna przestrzeń adresowa s=4, d=600 5300 segment 2 segment 4 5700 6300 6700 segment 1 fizyczna przestrzeń adresowa 1400 podprogram Implementacja segmentacji (1) ✦Adres logiczny składa się z dwu części : <numer-segmentu, odległość w segmencie>, ✦Tablica segmentów (ang. segment table )– jest wykazem par: ✦ bazy – zawiera początkowy fizyczny adres segmentu w pamięci ✦ granica – oznacza długość segmentu Implementacja segmentacji (2) ✦Rejestr bazowy tablicy segmentów (ang. Segment-table base register -STBR) wskazuje na tablicę segmentów w pamięci ✦Rejestr długości tablicy segmentów (ang. Segment-table length register -STLR) oznacza liczbę segmentów przypadających na program; numer segmentu s jest poprawny jeśli s < STLR. Implementacja segmentacji (3) ✦ Relokacja ✦ dynamiczna ✦ za pomocą tablicy segmentów ✦ Dzielenie ✦ segmenty dzielone ✦ ten sam numer segmentu ✦ Alokacja ✦ first fit/best fit ✦ fragmentacja zewnętrzna ✦ upakowanie możliwe w dowolnej chwili Dzielenie segmentów w pamięci segmentowanej editor pamięć logiczna procesu P1 granica baza 25286 43062 4425 68348 0 segment 0 1 dane 1 tablica segmentów procesu P1 segment 1 editor editor 68348 72773 dane 1 90003 0 segment 0 pamięć logiczna procesu P2 43062 1 dane 2 segment 1 granica baza 25286 43062 8850 90003 tablica segmentów procesu P2 98553 dane 2 pamięć fizyczna Implementacja segmentacji (4) ✦ Ochrona. Z każdym elementem tablicy segmentów stowarzyszamy: ✦ validation bit = 0 ⇒ segment niepoprawny ✦ uprawnienia read/write/execute ✦ Bity ochrony dołączone do każdego segmentu; dzielenie kodu ma miejsce na tym samym poziomie ✦ Segmenty mają zmienną długość - problem dynamicznej alokacji pamięci Segmentacja ze stronicowaniem – MULTICS ✦ MULTICS rozwiązuje problemy fragmentacji zewnętrznej i długich czasów przeszukiwań poprzez stronicowanie segmentów ✦ Rozwiązanie to różni się od czystej segmentacji tym, że pozycja w tablicy segmentów nie zawiera adresu bazowego lecz adres bazowy tablicy stron dla tego segmentu Segmentacja ze stronicowaniem – Intel 386 ✦ Intel 386 (i późniejsze) stosuje segmentację ze stronicowaniem do zarządzania pamięcią z dwupoziomowym schematem stronicowania ✦ Maksymalna liczba segmentów w procesie 16K ✦ Każdy segment mniejszy niż 4GB ✦ Rozmiar strony 4KB Segmentacja – Intel 386 (c.d.) ✦ Przestrzeń adresowa ma dwie strefy zawierające po co najwyżej 8KB segmentów ✦ prywatne segmenty procesu przechowywane w tablicy lokalnych deskryptorów (ang. local descriptor table -LDT) ✦ każda pozycja w LDT ma 8B ✦ wspólne segmenty procesów przechowywane w globalnej tablicy deskryptorów (ang. global descriptor table - GDT) ✦ selektor jest 16b liczbą ✦ 13b - numer segmentu ✦ 1b - czy segment jest w LDT czy w GDT ✦ 2b - ochrona ✦ każdy adres logiczny jest parą (selektor, odległość) Segmentacja - Intel 386 (c.d.) ✦ Procesor ma 6 rejestrów segmentów do zaadresowania 6 segmentów oraz 6 rejestrów mikroprogramowych (8b) do przechowywania pozycji z LDT i GDT ✦ Adres fizyczny ma 32b ✦ rejestr wyboru wskazuje na pozycję w LDT lub GDT ✦ na podstawie adresu początku segmentu i jego długości tworzony jest adres liniowy (ang. linear address) ✦ sprawdzenie poprawności ze względu na długość segmentu ✦ jeśli adres jest poprawny to odległość dodaje się do wartości bazowej Segmentacja - Intel 386 (c.d.) ✦ W procesorze 386 przyjęto stronicowanie dwupoziomowe ✦ adres liniowy składa się z ✦ 20b numeru strony ✦ 10b wskaźnik do katalogu stron ✦ 10b wskaźnik do tablicy stron ✦ 12b odległość na stronie ✦ Intel 30386-tłumaczenie adresu selektor offset adres logiczny + deskryptor segmentu tablica deskryptorów katalog strona offset adres liniowy ramka strony adres fizyczny katalog stron wpis katalogowy rejestr bazowy katalogu stron tablica stron pozycja tablicy stron Ustalanie wielkości pamięci ✦ pagesize ✦ AIX ✦ lsattr -HE -l sys0 -a realmem ✦ FreeBSD ✦ grep memory /var/run/dmesg.boot ✦ HP-UX ✦ dmesg | grep Phys ✦ Linux ✦ free ✦ Solaris ✦ dmesg | grep mem ✦ True64 ✦ vmstat | grep ‘^Total’ Monitorowanie wykorzystania pamięci ✦ vmstat ✦ memory - swap lub free ✦ page ✦ re - liczba przywołanych stron pamięci ✦ pi - liczba wczytanych stron ✦ fr - liczba stron zwolnionych ✦ po - liczba wypisanych stron ✦ KDE System Guard (ksysguard) Program - top Wyświetlanie obszarów stronicowania ✦ AIX ✦ lsps -a ✦ FreeBSD ✦ pstat -s ✦ HP-UX ✦ swapinfo -t -a -m ✦ Linux ✦ cat /proc/swaps ✦ swapon -s ; free -m -o ✦ Solaris ✦ swap -l ✦ True64 ✦ swapon -s Obszary stronicowania ✦ AIX w pliku /etc/swapspaces ✦ FreeBSD w pliku /etc/fstab ✦ HP-UX w pliku /etc/fstab ✦ Linux w pliku /etc/fstab ✦ Solaris w pliku /etc/vfstab ✦ True64 w pliku /etc/sysconfigtab ✦ WXP w pliku: ✦ C:\WINDOWS\system32\pagefileconfig.vbs Windows XP ✦ Menedżer zadań ✦ Crtl+Shift+Esc ✦ Ctrl+Alt+Delete ✦ Wydajność ✦ Procesy ✦ Użycie pamięci ✦ Panel sterowania ✦ Narzędzia administracyjne ✦ Wydajność Literatura ✦ A. Silberschatz, P.B. Gavin, G. Gagne, Podstawy systemów operacyjnych, wyd. IV, WNT, 2005 (tł. 6th ed.) ✦ http://cs-www.cs.yale.edu/homes/avi/os-book/os6/index.html ✦ W. Stallings – Systemy operacyjne, Robomatic, 2004 ✦ http://williamstallings.com/OS/OS5e.html ✦ Æ. Frisch, Unix – Administracja systemu, RM, 2003 ✦ E. Bott & C. Siechert, Windows XP, RM, 2002