Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 6 - wątki Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 PLAN: 1. Wątki 2. Planowanie przydziału procesora (szeregowanie zadań) 3. Rozwiązania wspomagane hardware owo 4. Podsumowanie 2 WĄTKI 3 1
WĄTEK ang. thread, podstawowa jednostka Wątek 1: rejestry procesora, stos. Przykład (UNIX): Wspólne: KOD i DANE (PAMIĘĆ), PLIKI Wątek 2: rejestry procesora, stos. Wątek 3: rejestry procesora, stos. fork tworzy nowy proces (z kopią struktur danych), clone tworzy proces wskazujący na struktury procesu macierzystego (Uwaga: co ma być współdzielone określają parametry, teoretycznie moŝe działać jak fork) 4 Zalety: moŝliwość sterowania wykonywanie zadania (tzw. wątek sterujący), np. w trakcie rysowania grafiki moŝliwość wstrzymywania, modyfikacji parametrów, wznawiania, mniejsze koszty (np. czas, zasoby) tworzenia wątków niŝ procesów (teoretycznie - moŝliwa realizacja zadania przez wiele procesów, zamiast wątków tak było dawniej), moŝliwość realizacji zadań równocześnie (jeśli niezaleŝne) i/lub na wielu procesorach 5 Zalety: brak konieczności powielania kodu i danych dla kolejnych wątków (domyślne dzielenie zasobów procesu), 6 2
Wady: znajomość zasad zarządzanie wątkami - odpowiednia architektura oprogramowania oraz umiejętności architekta i programisty, wsparcie ze strony systemów operacyjnych, problemy związane z usuwaniem, prawami, dostępem do danych itp. 7 WĄTKI UśYTKOWNIKA (ang. user threads) tworzone i zarządzane w przestrzeni uŝytkownika, JĄDRA (ang. kernel threads) działają w przestrzeni jądra, tworzone i zarządzane poprze jądro (np. moŝliwość wykorzystania wielu procesorów, likwidacja blokad) Odwzorowanie wątków uŝytkownika w wątki jądra: wiele do 1 jeden wątek jądra obsługuje wiele wątków uŝytkownika (w danej chwili tylko jeden komunikuje się z jądrem); problem w przypadku blokady obsługiwanego wątku, moŝliwość wykonania wielu wątków dla jądra nie obsługującego wielowątkowości, 3
Odwzorowanie wątków uŝytkownika w wątki jądra cd.: 1 do 1 kaŝdemu wątkowi uŝytkownika odpowiada wątek jądra, np. Windows 2000, problem duŝa liczba wątków jądra, stąd np. ograniczenia na liczbę wątków jądra, wiele do wielu zastosowanie mechanizmu multipleksowania, wielu wątkom uŝytkownika odpowiada taka sama lub mniejsza liczba wątków jądra. PLANOWANIE PRZYDZIAŁU PROCESORA 11 Podstawowe pojęcia: scheduler (planista) odpowiada za przydział czasu procesora (oraz zasobów), PROBLEM: taki przydział procesora i innych zasobów, Ŝeby zakończyć wszystkie zadania w jak najkrótszym czasie, dispatcher (dyspozytor) komponent SO odpowiedzialny za przydział (przekazanie) procesora do dyspozycji procesora (główne zadanie: przełączanie kontekstu procesora);tzw. planista krótkoterminowy PROZBLEM: minimalizacja czasu (np. przemianowanie rejestrów, zamiast przeładowania) 12 4
PLANISTA KRÓTKOTERMINOWY odpowiada za wykonywanie procesów gotowych, musi być bardzo szybki (wpływ na opóźnienie w wykonywania kaŝdego przydziału procesora) DŁUGOTERMINOWY odpowiada za ładowanie procesów z pamięci masowej do operacyjnej, nie musi być bardzo szybki 13 Podstawowe pojęcia: głodzenie procesu sytuacja, gdy proces nie moŝe uzyskać dostępu do zasobu i zakończyć działania (np. na skutek niskiego priorytetu rozwiązanie, podnoszenie priorytetu starzejących się procesów) 14 Typowe algorytmy szeregowania: FIFO (first in, first out) pierwszy przyszedł, pierwszy wyszedł, wątki/procesy wykonują się tak długo, aŝ zostaną wywłaszczone przez zadanie o wyŝszym priorytecie lub przez siebie, Round Robin (RB) tzw. planowanie rotacyjne, kaŝdy proces/wątek otrzymuje kwant czasu, po wykorzystaniu którego jest ustawiany na końcu kolejki, shortet job first (SJF) najpierw ten, komu zostało najmniej czasu do zakończenia (problem: jeśli pojawiają się nowe procesy z krótkim czasem wykonania, to długi moŝe zostać zagłodzony) 15 5
Typowe algorytmy szeregowania: inne algorytmy: - pod red. Silberschatz Podstawy systemów operacyjnych, str.186 203; - http://pl.wikipedia.org/wiki/algorytm_szeregowania; - http://josh.trancesoftware.com/linux/linux_cpu_scheduler.pdf - http://en.wikipedia.org/wiki/scheduling_%28computing%29 16 Priorytety w systemie Windows XP 17 ROZWIĄZANIA WSPOMAGANE SPRZĘTOWO 18 6
Przetwarzanie w procesorach: sekwencyjne, potokowe, superskalarne (wielopotokowe), wielowątkowe (HT hyper threading) praktycznie zysk wydajności do 20-25%, wielozadaniowość wieloprocesorowość. 19 Jaki typ przetwarzania moŝliwy jest w poniŝszym procesorze? Źródło: serwis www.amd.com 20 Czym to się róŝni (a moŝe nie) od superskalarności? Źródło: PC World Komputer (numer podam później) 21 7