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
Planowanie Przydziału
Procesora
Podstawowe Koncepcje
Fazy Procesora i We/Wy
• Proces ograniczony przez I/O ma zazwyczaj dużo krótkich faz CPU
• Proces ograniczony przez CPU może mieć mało, lecz bardzo długich faz CPU
Planista Procesora
• Szeregowanie procesów jest podstawą
multiprogramowych systemów operacyjnych
• Celem multiprogramowania jest ciągłe
uruchamianie procesów, aby zmaksymalizować wykorzystanie procesora
• Planista procesora wybiera proces z procesów w pamięci, które są gotowe do wykonania i przydziela procesor do tego procesu
1 2
3
4
Szeregowanie Wywłaszczeniowe i Niewywłaszczeniowe
• Tylko (1) i (4) – planowanie niewywłaszczeniowe
• Inaczej – planowanie wywłaszczeniowe
• Planowanie wywłaszczeniowe może spowodować warunki wyścigu, gdy dane są współużytkowane przez kilka procesów
Dyspozytor (Dispatcher)
• Dyspozytor to moduł, który daje kontrolę nad rdzeniem procesora procesowi wybranemu przez
planistę CPU:
• Przełączanie kontekstu z jednego procesu na inny
• Przełączanie do trybu użytkownika
• Wykonanie skoku do odpowiedniego adresu w programie w celu
wznowienia działania programu
• Dyspozytor powinien być jak najszybszym
Kryteria Szeregowania
• Zużycie procesora
• Wydajność (liczba procesów zakończonych na jednostkę czasu)
• Czas realizacji (oczekiwanie w kolejce gotowości + wykonanie na CPU + wykonanie I/O)
• Czas oczekiwania (suma okresów czekania w kolejce gotowości)
• Czas odpowiedzi (czas od żądania do pierwszej odpowiedzi)
Algorytmy Szeregowania
Szeregowanie Metodą FCFS („Kto Pierwszy Ten Lepszy”)
• Średni czas oczekiwania to (0 + 24 + 27)/3 = 17 ms
• Średni czas oczekiwania to (6 + 0 + 3)/3 = 3 ms
Proces Czasy Faz CPU
P1 24
P2 3
P3 3
Szeregowanie Metodą FCFS
• Najprostszy algorytm planowania CPU
• Ś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 inne procesy czekają, aż jeden duży proces zwolni procesor
• Niewywłaszczeniowy – szczególnie kłopotliwe dla systemów interaktywnych
Szeregowanie Metodą SJF
(„Najpierw Najkrótsze zadanie”)
• Procesor jest przydzielony procesu, który ma najmniejszy następny czas fazy procesora
• Średni czas oczekiwania to (3 + 16 + 9 + 0)/4 = 7 ms
• Algorytm szeregowania SJF jest udowodniono optymalny – daje minimalny średni czas
oczekiwania na dany zestaw procesów
Proces Czasy Faz CPU
P1 6
P2 8
P3 7
P4 3
Szeregowanie Metodą SJF
• SJF nie może zostać zaimplementowany – nie ma
możliwości poznania długości następnego czasu fazy CPU
• Następny czas fazy CPU można przewidzieć 𝜏𝑛+1 = 𝛼𝑡𝑛 + 1 − 𝛼 𝜏𝑛
Szeregowanie Metodą SJF
• Algorytm SJF może być również wywłaszczeniowy, jako i niewywłaszczeniowy
Proces Czas przybycia Czas Fazy CPU
P1 0 8
P2 1 4
P3 2 9
P4 3 5
Szeregowanie Rotacyjne (Round- Robin - RR)
• Zaprojektowane specjalnie do systemów z podziałem czasu
• Kolejka gotowości jest traktowana jako kolista kolejka
• Szeregowanie rotacyjne jest wywłaszczeniowe
• Wydajność algorytmu RR zależy w dużym stopniu od wielkości kwantu czasu
• Kwant czasu to na ogół od 10 do 100 milisekund
• Czas przełączenia kontekstu jest zazwyczaj krótszy niż 10 mikrosekund
Szeregowanie Rotacyjne
• Średni czas oczekiwania to (6 + 4 + 7) / 3 = 5,66 ms
Proces Czas Fazy CPU
P1 24
P2 3
P3 3
Szeregowanie Priorytetowe
• Algorytm SJF jest szczególnym przypadkiem algorytmu szeregowania priorytetowego
• Procesy równego priorytetu są planowane w kolejności FCFS
• Może być wywłaszczeniowe, albo niewywłaszczeniowe
Proces Czas Fazy CPU Priorytet
P1 10 3
P2 1 1
P3 2 4
P4 1 5
P5 5 2
Szeregowanie Priorytetowe
• Główny problem – nieskończone blokowanie (głodzenie): procesy o niskim priorytecie mogą nigdy nie dostać procesora
• Rozwiązaniem problemu jest „postarzanie” czyli podnoszenie priorytetu procesów oczekujących zbyt długo
• Inną opcją jest połączenie
rotacyjnego i priorytetowego szeregowania
Proces Czas Fazy CPU Priorytet
P1 4 3
P2 5 2
P3 8 2
P4 7 1
P5 3 3
Kolejki Wielopoziomowe
• Priorytetowe i rotacyjne planowanie, pojedyncza kolejka – O(n) wyszukiwanie, aby znaleźć proces o najwyższym priorytecie
• Każda kolejka może mieć
własny algorytm planowania
• Planowanie wśród kolejek:
• planowanie wywłaszczeniowe o ustalonym priorytecie
• przedział czasu między kolejkami
Kolejki Wielopoziomowe Ze Sprzężeniem Zwrotnym
• Kolejki wielopoziomowe ze sprzężeniem zwrotnym umożliwiają procesowi przechodzenie między
kolejkami
Szeregowanie Wątków
• W większości nowoczesnych SO wątki na poziomie jądra są planowane przez system operacyjny
• Wątki na poziomie użytkownika są zarządzane
przez bibliotekę wątków, a jądro nie jest ich świadome
• Aby uruchomić na CPU, wątki na poziomie użytkownika muszą być odwzorowane na powiązany
wątek na poziomie jądra
Szeregowanie Wątków
• Modele wiele-do-jednego i wiele-do-wielu → biblioteka wątków planuje wątki na poziomie
użytkownika aby uruchomić na dostępnym LWP – zakres rywalizacji procesowej
• Dalsze system operacyjny planuje wątek jądra LWP na fizycznym rdzeniu procesora
• Aby zdecydować, który wątek jądra zaplanować na CPU, jądro używa zakresu rywalizacji systemowej
• Model jeden-do-jednego (Windows, Linux) → wątki są planowane używając tylko zakresu rywalizacji
systemowej
Szeregowanie
Wieloprocesorowe
Podejścia Do Szeregowania Wieloprocesorowego: ASMP
• Asymetryczne przetwarzanie wieloprocesorowe – wszystkie decyzje dotyczące szeregowania i inne działania systemowe są obsługiwane przez jeden procesor (serwer główny)
• Pozostałe procesory wykonują tylko kod użytkownika
• Proste
• Serwer główny staje się potencjalnym wąskim gardłem
Podejścia do Szeregowania Wieloprocesorowego: SMP
• Symetryczne przetwarzanie wieloprocesorowe – każdy procesor sam się szereguje
a) Wszystkie wątki mogą znajdować się we wspólnej kolejce gotowości
b) Każdy procesor może mieć własną prywatną kolejkę wątków
Procesory Wielordzeniowe
• Każdy rdzeń wydaje się systemowi operacyjnemu jako oddzielny procesor logiczny
• Systemy SMP używające procesorów wielordzeniowych są szybsze i zużywają mniej energii niż systemy, w
których każdy procesor ma własny układ fizyczny
• Utknięcie pamięci – nowoczesne procesory działają z dużo większą prędkością niż pamięć
Procesory Wielordzeniowe: Wątki Sprzętowe
• Dwa lub więcej wątków sprzętowych są przypisane do każdego rdzenia
• Każdy wątek sprzętowy pojawia się jako procesor logiczny – wielowątkowość chipowa (CMT)
• Procesory Intel używają terminu hyper-threading
Wątki Sprzętowe
Poziomy Szeregowania
• Wielowątkowość gruboziarnista – wątek jest
wykonywany na rdzeniu do momentu wystąpienia zdarzenia o długim czasie oczekiwania
• Wielowątkowość drobnoziarnista przełącza się
między wątkami zwykle na granicy cyklu instrukcji → koszt przełączania jest mały
• Rdzeń procesora może
jednocześnie wykonywać tylko jeden wątek sprzętowy → dwa różne poziomy szeregowania
Równoważenie Obciążenia
• Równoważenie obciążenia (load balancing) próbuje równomiernie rozłożyć obciążenie na wszystkie procesory w systemie SMP
• Migracja wypychana (push) – wątki są przenoszone (wypychane) z przeciążonych procesorów do
bezczynnych lub mniej zajętych
• Migracja wyciągana (pull) – bezczynny procesor ciągnie oczekujące zadanie z zajętego procesora
• Migracje typu push i pull są często realizowane
równolegle w systemach równoważenia obciążenia
Koligacja Procesorów (Processor Affinity)
• Wątek działa na określonym procesorze → “ciepłą pamięć podręczna”
• Wątek migruje do innego procesora → pamięć podręczna musi zostać ponownie wypełniona
• Większość SO próbuje uniknąć migracji wątku z
jednego procesora do drugiego – koligacja procesorów
• Kolejki gotowości dla każdego procesora – koligacja procesorów za darmo
• Równoważenie obciążenia często przeciwdziała korzyściom wynikającym z koligacji procesorów
Koligacja Procesorów: NUMA
Heterogeniczne Przetwarzanie Wieloprocesorowe
• Systemy mobilne – rdzenie różnią się pod względem szybkości zegara i zarządzania energią: heterogeniczne przetwarzanie wieloprocesorowe (HMP)
• Celem HMP jest lepsze zarządzanie zużyciem energii
• Procesory ARM – architektura big.LITTLE
• Windows 10 obsługuje szeregowanie HMP – lepsze zarządzanie energią
Planowanie w Czasie
Rzeczywistym
Systemy Czasu Rzeczywistego
• System operacyjny czasu rzeczywistego – real-time operating system (RTOS)
• Łagodne systemy czasu rzeczywistego – nie ma gwarancji, kiedy zostanie zaplanowany krytyczny proces czasu rzeczywistego. One gwarantują tylko, że proces będzie miał pierwszeństwo przed
procesami niekrytycznymi.
• Rygorystyczne systemy czasu rzeczywistego – wymagania surowsze. Zadanie musi zostać
obsłużone przed upływem terminu.
Minimalizowanie Opóźnień
• Rozważmy system czasu rzeczywistego sterowanego zdarzeniami
• Opóźnienie zdarzenia:
Minimalizowanie Opóźnień
• Różne zdarzenia mają różne wymagania dotyczące opóźnień
• Dwa rodzaje opóźnień wpływają na wydajność systemów czasu rzeczywistego :
1. Opóźnienie przerwania – okres od przybycia przerwania do CPU do rozpoczęcia procedury obsługi przerwań
2. Opóźnienie szeregowania – czas potrzebny
dyspozytorowi na zatrzymanie jednego procesu i rozpoczęcie drugiego
Szeregowanie Oparte na Priorytetach
• Planista RTOS musi wspierać wywłaszczeniowy algorytm oparty na priorytetach
• Wywłaszczeniowe szeregowanie oparte na priorytetach gwarantuje jedynie łagodną funkcjonalność w czasie rzeczywistym
• Rygorystyczne systemy czasu rzeczywistego muszą ponadto gwarantować, że zadania w czasie
rzeczywistym będą obsługiwane zgodnie z ich
terminami – więc wymagają dodatkowych funkcji szeregowania
Zadania Okresowe
• t – czas przetwarzania; d – termin; p – okres 0 ≤ t ≤ d ≤ p
• Częstość zadania okresowego – 1/p
• Przypisujemy priorytety zgodnie z wymaganiami terminu lub częstości procesu
Algorytm Kontroli Dopuszczenia
• Admission-control algorithm
• Proces może być zobowiązany do ogłoszenia
planiście swoich wymagań dotyczących terminu
• Algorytm kontroli dopuszczenia:
1) Planista dopuszcza proces, gwarantując, że proces zakończy się na czas
2) Planista odrzuca żądanie jako niemożliwe, jeśli nie może zagwarantować, że zadanie zostanie obsłużone w terminie
Szeregowanie z Monotoniczną Częstością
• Rate-Monotonic Scheduling
• Szereguje okresowe zadania z użyciem statycznych priorytetów z wywłaszczeniem
• Każde zadanie okresowe ma przypisany priorytet na podstawie jego odwrotnego okresu
• Optymalny: jeśli zestaw procesów nie może zostać zaplanowany przez ten algorytm, nie może on być zaplanowany przez żaden inny algorytm, który
używa priorytetów statycznych
• Najgorsze wykorzystanie procesora dla N procesów:
𝑁 21/𝑁 − 1
Szeregowanie z Monotoniczną Częstością
• p1 = 50, p2 = 100; t1 = 20, t2 = 35. Termin: zakończyć fazę CPU przed rozpoczęciem następnego okresu.
• Szeregowanie zadań gdy P2 ma wyższy priorytet:
• Szeregowanie z monotoniczną częstością:
Szeregowanie od
Najwcześniejszego Terminu
• Earliest-Deadline-First Scheduling
• Przypisuje priorytety dynamicznie
• Im wcześniej termin, tym wyższy priorytet
• Priorytety mogą być skorygowane w celu
uwzględnienia terminu nowo uruchomionego procesu
• Teoretycznie optymalne szeregowanie – potrafi uszeregować procesy tak, aby każdy proces mógł dotrzymać terminu, a wykorzystanie procesora wyniesie 100%
Szeregowanie od
Najwcześniejszego Terminu
• p1 = 50, t1 = 25; p2 = 80, t2 = 35; wykorzystanie procesora wynosi (25/50) + (35/80) = 0.94
• Przegapienie terminów przy użyciu szeregowania z monotoniczną częstością:
• Szeregowanie od najwcześniejszego terminu:
Planowanie Przydziału
Procesora. Streszczenie
Streszczenie (1)
• Planowanie przydziału procesora to zadanie
polegające na wybraniu procesu oczekującego w kolejce gotowości i przydzieleniu do niego
procesora. Procesor jest przydzielany do wybranego procesu przez dyspozytora.
• Algorytmy planowania mogą być wywłaszczeniowe (w przypadku, gdy procesor może zostać procesowi odebrany), albo niewywłaszczeniowe (gdy proces musi dobrowolnie zrzec się kontroli nad
procesorem). Prawie wszystkie współczesne systemy operacyjne są wywłaszczeniowe.
Streszczenie (2)
• Algorytmy szeregowania można oceniać według następujących pięciu kryteriów: (1) zużycie
procesora, (2) wydajność, (3) czas realizacji, (4) czas oczekiwania i (5) czas odpowiedzi.
• Szeregowanie według kolejności zgłoszeń (FCFS) jest najprostszym algorytmem, ale może
powodować, że krótkie procesy będą czekać na zakończenie bardzo długich procesów.
Streszczenie (3)
• Szeregowanie najpierw najkrótszych zadań (SJF) jest udowodniono optymalnym, zapewniając
najkrótszy średni czas oczekiwania. Implementacja planowania SJF jest jednak trudna, ponieważ
trudno jest przewidzieć długość następnej fazy CPU.
• Szeregowanie rotacyjne (RR) przydziela procesor do każdego procesu na pewny kwant czasu. Jeśli proces nie zrezygnuje z procesora przed upływem kwantu czasu, proces jest wstrzymywany a kolejny proces jest uruchamiany na odpowiedny kwant czasu.
Streszczenie (4)
• Szeregowanie priorytetowe przypisuje każdemu
procesowi priorytet, a procesor jest przydzielany do procesu o najwyższym priorytecie. Procesy o tym samym priorytecie można planować w kolejności FCFS lub przy użyciu szeregowania RR.
• Szeregowanie z użyciem kolejek
wielopoziomowych dzieli procesy na kilka
oddzielnych kolejek uporządkowanych według
priorytetów, a planista wykonuje procesy w kolejce o najwyższym priorytecie. W każdej kolejce można stosować różne algorytmy planowania.
Streszczenie (5)
• Kolejki wielopoziomowe ze sprzężeniem zwrotnym są podobne do kolejek wielopoziomowych, z
wyjątkiem, że proces może migrować między różnymi kolejkami.
• Procesory wielordzeniowe mieszczą jeden lub więcej procesorów na tym samym układzie
fizycznym, a każdy procesor może mieć więcej niż jeden wątek sprzętowy. Z punktu widzenia systemu operacyjnego każdy wątek sprzętowy wydaje się
procesorem logicznym.
Streszczenie (6)
• Równoważenie obciążenia w systemach
wielordzeniowych wyrównuje obciążenia między rdzeniami procesora, chociaż migracja wątków między rdzeniami może unieważnić zawartość pamięci podręcznej, a więc może wydłużyć czas dostępu do pamięci.
• Łagodne planowanie w czasie rzeczywistym daje pierwszeństwo zadaniom wykonywanym w czasie rzeczywistym. Rygorystyczne planowanie w czasie rzeczywistym zapewnia gwarancje czasu dla zadań wykonywanych w czasie rzeczywistym.
Streszczenie (7)
• Szeregowanie z monotoniczną częstością w czasie rzeczywistym planuje okresowe zadania z
wykorzystaniem statycznych priorytetów z wywłaszczeniem.
• Szeregowanie od najwcześniejszego terminu przypisuje priorytety zgodnie z terminem. Im wcześniej termin, tym wyższy priorytet; im późniejszy termin, tym niższy priorytet.