Planowanie przydziału procesora CPU scheduling Koncepcja szeregowania Koncepcja szeregowania (Basic Concepts) Kryteria szeregowania (Scheduling Criteria) Algorytmy szeregowania (Scheduling Algorithms) Szeregowanie w przypadku wieloprocesorowym (Multiple-Processor Scheduling) Szeregowanie w czasie rzeczywistym (Real-Time Scheduling) Ocena algorytmu (Algorithm Evaluation) Wieloprogramowość umożliwia zwiększenie wykorzystania CPU. Wykonanie procesu przebiega cyklicznie: fazy zapotrzebowania na CPU przeplatają się zfazami zapotrzebowania na we/wy. Rozkład faz zapotrzebowania na CPU powinien mieć wpływ na dobór algorytmu szeregowania procesów. 6.1 6.2 Cykl zatrudnień CPU i urządzeń Program ograniczony przez CPU fazy procesora długie (ale rzadko występują), operacje we/wy krótkotrwałe. Program ograniczony przez we/wy fazy procesora krótkie (ale częste), większość czasu zajmują operacje we/wy. Planista przydziału procesora (planista krótkoterminowy) CPU Scheduler Wybiera jeden proces spośród procesów rezydujących w pamięci, które są gotowe go wykonania i przydziela mu CPU. Decyzje o przydziale CPU zapadają gdy proces: 1. przeszedł ze stanu wykonywania do czekania, 2. przeszedł ze stanu wykonywania do gotowości, 3. przeszedł ze stanu czekania do gotowości. 4. Zakończył się. Planowanie w sytuacjach 1 i 4 nazywa się planowaniem bez wywłaszczania (nonpreemptive). W pozostałych przypadkach mamy do czynienia z planowaniem wywłaszczeniowym (preemptive). 6.3 6.4 Program koordynujący (egzekutor, dyspozytor) dispatcher Program koordynujący (egzekutor, dyspozytor) dispatcher Egzekutor przekazuje sterowanie procesora do procesu wybranego przez planistę krótkoterminowego. Do jego obowiązków należy: Przełączanie kontekstu (switching context) Przełączanie do trybu użytkownika (switching to user mode) Wykonanie instrukcji skoku do właściwego miejsca w programie aby wznowić jego działanie. Opóźnienie egzekucji (dispatch latency) czas potrzebny egzekutorowi na zatrzymanie jednego procesu i wznowienie następnego. 6.5 6.6 1
Kryteria szeregowania Scheduling Criteria Wykorzystanie CPU na maksimum zajętości CPU Przepustowość (throughput) liczba procesów wykonanych w jednostce czasu Czas obrotu (turnaround time) czas potrzebny na wykonanie pojedynczego procesu Czas oczekiwania (waiting time) czas spędzony przez proces w kolejce procesów gotowych. Czas reakcji (response time) czas liczony od chwili dostarczenia żądania do uzyskania odpowiedzi (w systemie z podziałem czasu). Kryteria optymalizacji Max wykorzystania CPU (utilization) Max przepustowość (throughput) Min czas obrotu (turnaround time) Min czas oczekiwania (waiting time) Min czas reakcji (response time) 6.7 6.8 Alg. pierwszy nadszedł-pierwszy obsłużony First-Come, First-Served (FCFS) Scheduling Process Burst Time P 1 24 P 2 3 P 3 3 Załóżmy, że procesy nadeszły w porządku: P 1, P 2, P 3 Wykres Gantta: 0 P 1 P 2 P 3 24 27 30 Czasy oczekiwania: P 1 =0;P 2 = 24; P 3 =27 Średni czas oczekiwania: (0 + 24 + 27)/3 = 17 Algorytm FCFS (cd.) Załóżmy, że procesy nadeszły w porządku: P 2, P 3, P 1. Wykres Gantta: P 2 P 3 0 3 6 30 Czasy oczekiwania: P 1 = 6;P 2 =0 ; P 3 = 3 Średni czas oczekiwania: (6 + 0 + 3)/3 = 3 Znacznie krótszy niż w poprzednim przypadku. Efekt konwoju krótkie procesy wstrzymywane przez długie (convoy effect). P 1 6.9 6.10 Alg. najpierw krótsze zadanie Shortest-Job-First (SJF) Scheduling Dla każdego procesu przypisz zapotrzebowanie na czas fazy CPU. Uszereguj procesy wg rosnących czasów. Dwa schematy: Bez wywłaszczeń (nonpreemptive) gdy CPU jest przydzielona procesowi, to proces nie może być wywłaszczony aż do upływu przypisanego mu czasu. Z wywłaszczeniem (preemptive) gdy nadejdzie proces o krótszej fazie CPU, niż pozostało do zakończenia bieżącego procesu, tenże zostanie wywłaszczony. Schemat ten nosi nazwę Shortest-Remaining-Time-First (SRTF). SJF jest optymalny minimalny średni czas oczekiwania procesów z danego zbioru. Process Arrival Time Burst Time P 1 0.0 7 P 2 2.0 4 P 3 4.0 1 P 4 5.0 4 SJF (non-preemptive) 0 Przykład SJF (bez wywłaszczania) P 1 P 3 P 2 Średni czas oczekiwania = (0 + 6 + 3 + 7)/4 = 4 P 4 3 7 8 12 16 6.11 6.12 2
SRTF (SJF z wywłaszczaniem) Process Arrival Time Burst Time P 1 0.0 7 P 2 2.0 4 P 3 4.0 1 P 4 5.0 4 SJF (preemptive) Sposób określania zapotrzebowania na czas fazy CPU (burst) Można jedynie estymować ten czas. Można to zrobić biorąc pod uwagę poprzednie długości faz CPU dla danego procesu, a następnie zastosować uśrednianie wykładnicze, tj.: P 1 P 2 P 3 P 2 P 4 P 1 0 2 4 5 7 11 Średni czas oczekiwania = (9 + 1 + 0 +2)/4 = 3 16 6.13 6.14 Estymacja fazy CPU Przykład uśredniania wykładniczego α =0 τ n+1 = τ n Historia nie jest brana pod uwagę. α =1 τ n+1 = t n Uwzględniamy jedynie długość ostatniej fazy CPU. Rozwijając wzór otrzymujemy: τ n+1 = α t n +(1 -α) α t n -1 + +(1 - α ) j α t n -1 + +(1 - α ) n=1 t n τ 0 Ponieważ zarówno α jak (1 - α) są nie większe od 1, każdy następny wyraz ma mniejszą wagę niż jego poprzednik. 6.15 6.16 Szeregowanie priorytetowe Każdemu procesowi przypisuje się liczbę całkowitą określającą jego priorytet CPU jest przydzielana procesowi o najwyższym priorytecie (mniejsza liczb = wyższy priorytet): Z wywłaszczaniem (preemptive) Bez wywłaszczania (nonpreemptive) Zauważmy, że SJF jest szeregowaniem priorytetowym, gdzie priorytetem jest przewidywany czas fazy CPU. Problem zagłodzenia : może pojawić się nieskończone blokowanie (starvation) procesy o niskich priorytetach mogą nigdy nie być wykonane. Rozwiązaniem jest postarzanie procesów (aging) w miarę upływu czasu zwiększanie priorytetu procesu. Planowanie rotacyjne (karuzelowe) Round Robin (RR) Każdy proces otrzymuje mały kwant czasu CPU (time quantum), np. 10-100 ms. Po upływie tego czasu proces jest wywłaszczany i dodawany do kolejki procesów gotowych do wykonania. Jeśli jest n procesów w kolejce gotowości, a kwant czasu wynosi q, to każdy proces otrzyma 1/n czasu CPU porcjami, których wielkość nie przekracza q jednostek czasu. Żaden proces nie czeka dłużej niż (n-1)q jednostek czasu. Osiągi: q duże FCFS / FIFO q małe q musi być duże w porównaniu do czasu przełączania kontekstu, w przeciwnym razie pojawia się nadmierne przeciążenie. 6.17 6.18 3
Przykład RR q = 20 Kwant czasu, a czas przełączania kontekstu Process Burst Time P 1 53 P 2 17 P 3 68 P 4 24 Wykres Gantta: P 1 P 2 P 3 P 4 P 1 P 3 P 4 P 1 P 3 P 3 0 20 37 57 77 97 117 121 134 154 162 Średni czas cyklu jest większy niż przy SJF, ale krótszy czas reakcji. 6.19 6.20 Zależność czasu cyklu od kwantu czasu Kolejka wielopoziomowa Kolejka gotowości jest dzielona na osobne kolejki: pierwszoplanowa - foreground (interactive) drugoplanowa - background (batch) Każda kolejka ma swój algorytm szeregowania, Pierwszoplanowa: RR Drugoplanowa: FCFS Planowanie pomiędzy kolejkami: Stałopriorytetowe (fixed priority scheduling); (tj. obsługiwanie najpierw pierwszoplanową potem drugoplanową). Możliwość zagłodzenia. Odcinek czasu (time slice) każda kolejka dostaje pewną ilość czasu CPU, który może rozdysponować między swoje procesy, np. 80% dla pierwszoplanowej szeregującej wg. RR. 20% dla drugoplanowej szeregującej wg. FCFS 6.21 6.22 Szeregowanie w kolejkach wielopoziomowych Kolejka wielopoziomowa ze sprzężeniem zwrotnym Proces może być przesuwany do różnych kolejek; w ten sposób można realizować postarzanie. Planista wielopoziomowych kolejek ze sprzężeniem zwrotnym jest określany za pomocą następujących parametrów: Liczba kolejek Algorytm planowania dla każdej kolejki Metoda użyta do decydowania o awansowaniu procesu do kolejki o wyższym priorytecie Metoda używana do decydowania o zdymisjowaniu procesu do kolejki o niższym priorytecie Metoda określająca kolejkę, do której trafia proces potrzebujący obsługi. 6.23 6.24 4
Przykład wielopoziomowej kolejki ze sprzężeniem zwrotnym Kolejki wielopoziomowe ze sprzężeniem zwrotnym Trzy kolejki: Q 0 kwant czasu 8 ms Q 1 kwantczasu16ms Q 2 FCFS Szeregowanie Nowe zadanie trafia do kolejki Q 0 która jest obsługiwana wg. algorytmu FCFS. Po przydzieleniu CPU, zadanie otrzymuje kwant 8 ms. Jeśli nie zakończy się przez 8 ms, zadanie jest przemieszczane do kolejki Q 1. W kolejce Q 1 zadanie jest obsługiwane wg. FCFS i otrzyma dodatkowo 16 ms. Jeśli w tym czasie nie zakończy się, jest wywłaszczane i przemieszczone do kolejki Q 2. 6.25 6.26 Planowanie wieloprocesorowe Gdy wiele procesorów szeregowanie staje się bardziej złożone. Procesory mogą być jednakowe (system homogeniczny) lub różne (system heterogeniczny). Ładowanie dzielone (Load sharing). Wieloprzetwarzanie asymetryczne (asymmetric multiprocessing) tylko jeden procesor ma dostęp do systemowych struktur danych, łagodząc potrzebę dzielenia danych. Szeregowanie w systemach czasu rzeczywistego Hard real-time systems wymagają wypełnienia krytycznego zadania w określonym przedziale czasu. Soft real-time computing wymagają aby procesy krytyczne miały wyższy priorytet nad pozostałymi. 6.27 6.28 Opóźnienie egzekucji Ocena algorytmu Modelowanie deterministyczne (deterministic modeling) dla zadanego planu obciążenia ocenia się jakość poszczególnych algorytmów. Modele kolejkowe. Implementacja. 6.29 6.30 5
Ocena algorytmów drogą symulacji Solaris2Scheduling 6.31 6.32 Windows 2000 Priorities 6.33 6