Linux Adam Bułak Ha Nhat Viet Damian Klata

Podobne dokumenty
Szeregowanie zadań w Linux Kernel 2.6. Daniel Górski Przemysław Jakubowski

Szeregowanie zadań we współczesnych systemach operacyjnych. Szeregowanie zadań w Linux Kernel 2.6

Przykłady implementacji planowania przydziału procesora

przydziału procesora Przykłady implementacji planowania przydziału procesora Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

Prezentacja systemu RTLinux

Wykład 6 Planista procesora funkcja schedule. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

Linux Scheduler Szeregowanie procesów w systemie Linux. Andrzej Ambroziewicz Piotr Marat Mieszko Michalski

... Ireneusz Mrozek. Wydział Informatyki

Planowanie przydziału procesora

Jadro Linux 2.6. a zadania czasu rzeczywistego. Artur Lewandowski. Jądro Linux 2.6 p.1/14

Zarządzanie w systemach i sieciach komputerowych. Dr inż. Robert Wójcik. Wykład 3. Zarządzanie przydziałami procesora w systemach komputerowych

Ogólna koncepcja planowania. Planowanie przydziału procesora. Komponenty jądra w planowaniu. Tryb decyzji. Podejmowanie decyzji o wywłaszczeniu

Szeregowanie procesów w Linuksie - trendy rozwojowe

Planowanie adresacji IP dla przedsibiorstwa.

Zarządzanie procesorem

Wykład 6. Planowanie (szeregowanie) procesów (ang. process scheduling) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Real-Time Linux. Wprowadzenie

Przykłady implementacji planowania przydziału procesora. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Planowanie przydziału procesora

Klonowanie MAC adresu oraz TTL

Procesy, wątki i zasoby

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

Planowanie przydziału procesora

Planowanie przydziału procesora

Przełączanie kontekstu. Planista średnioterminowy. Diagram kolejek. Kolejki planowania procesów. Planiści

4. Procesy pojęcia podstawowe

Programowanie wspóªbie»ne

Planowanie przydziału procesora CPU scheduling. Koncepcja szeregowania. Planista przydziału procesora (planista krótkoterminowy) CPU Scheduler

Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation).

Zarządzanie procesami i wątkami

Przeplot. Synchronizacja procesów. Cel i metody synchronizacji procesów. Wątki współbieżne

Fazy procesora i wejścia-wyjścia. Planowanie przydziału procesora. Czasy faz procesora. Planowanie przydziału procesora

Systemy operacyjne III

Planowanie przydziału procesora

Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy

Informatyka, systemy, sieci komputerowe

Działanie systemu operacyjnego

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Współbieżność w środowisku Java

Problem decyzyjny naley do klasy NP. (Polynomial), jeeli moe by rozwizany w czasie conajwyej wielomianowym przez algorytm A dla DTM.

Temat: Technika zachłanna. Przykłady zastosowania. Własno wyboru zachłannego i optymalnej podstruktury.

Sposoby przekazywania parametrów w metodach.

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Procesy, zasoby i wątki

Procesy, zasoby i wątki

Procesy, zasoby i wątki

SUPLEMENT SM-BOSS WERSJA 6.15

1. Szeregowanie w systemach czasu rzeczywistego

Działanie systemu operacyjnego

E S - uniwersum struktury stosu

Działanie systemu operacyjnego

4. Procesy pojęcia podstawowe

Futex (Fast Userspace Mutex) Łukasz Białek

7. Szeregowanie procesów w systemie QNX6 Neutrino

FUNKCJE UYTKOWNIKA. Rozbrajanie systemu pod przymusem [Kod przymusu] Blokowanie linii

Kurs programowania. Wykład 8. Wojciech Macyna

dr inż. Jarosław Forenc

Simulator of Operating System

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Bazy danych Transakcje

Mikroinformatyka. Wielozadaniowość

Wykład 2 Proces, stany procesu i przejścia pomiędzy nimi. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

obsług dowolnego typu formularzy (np. formularzy ankietowych), pobieranie wzorców formularzy z serwera centralnego,

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!

Programowanie współbieżne Wykład 2. Iwona Kochańska

4. Procesy pojęcia podstawowe

BSD - alternatywa dla Linuksa

Mikroprocesor Operacje wejścia / wyjścia

I Powiatowy Konkurs Matematyka, Fizyka i Informatyka w Technice Etap finałowy 10 kwietnia 2013 grupa elektryczno-elektroniczna

PREZENTACJA DZIAŁANIA KLASYCZNEGO ALGORYTMU GENETYCZNEGO

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Mechanizmy pracy równoległej. Jarosław Kuchta

Działanie systemu operacyjnego

Temat: Dynamiczne liniowe struktury danych - stos, kolejka, lista. 1. Wady i zalety struktury tablicy

Wykład 13. Linux 2.0.x na maszynach SMP. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

Ukªady równa«liniowych

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Budowa systemów komputerowych

Wykład 7 Podręczna pamięć buforowa (ang. buffer cache) w systemie Linuks. Wojciech Kwedlo, Systemy Operacyjne II -1- Wydział Informatyki PB

Pytania do treści wykładów:

Przerwania, polling, timery - wykład 9

Rzeszów Paweł Janusz

Temat: Algorytmy zachłanne

zdefiniowanie kilku grup dyskusyjnych, z których chcemy odbiera informacje, dodawanie, usuwanie lub edycj wczeniej zdefiniowanych grup dyskusyjnych,

stopie szaro ci piksela ( x, y)

Wątki jądra. Maciej Szwaja

Przycisk pracy. Przycisk stopu/kasowanie

Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.

System operacyjny MACH

Metody Informatyczne w Budownictwie Metoda Elementów Skoczonych ZADANIE NR 1

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

Systemy operacyjne Procesy i wątki

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

Metody obsługi zdarzeń

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Materiały pomocnicze 1

REAL-TIME LINUX. ZGODNOŚĆ Z POSIX ( PSE51 (minimal realtime system profile)

Wprowadzenie do systemu Minix

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

Transkrypt:

Linux 2.6.8.1 Adam Bułak Ha Nhat Viet Damian Klata

1. Wstp Wieloprocesowe systemy: - z moliwoci wydzierawiania (ang. preemption) Unix, Linux te oczywicie - bez takiej moliwoci proces sam oddaje procesor (ang. yielding) wszystkie Mac OS do 9 włcznie Nowy scheduler zaimplementowany przez Ingo Molnara, który prace nad nim rozpoczł ju w grudniu 2001.

2. Po co komu nowy scheduler? Jakie postawiono przed nim zadania? Uniezalenienie czasu działania schedulera od liczby procesów tzw. O(1) scheduling Osobne kolejki zada dla kadego procesora Równomierny rozdział zada pomidzy wszystkie procesory Szybkie reagowanie dla procesów interaktywnych Sprawiedliwo w podziale czasu procesora i zapobieganie głodzeniu Lepsze mechanizmy szeregowania zada czasu rzeczywistego Sprawniejsze szeregowanie dla architektury NUMA (Non Uniform Memory Access)

3. Mała powtórka W Linuxie mamy dwa rodzaje procesów: I/O-Bound takie, które wiksz cz czasu spdzaj na zlecaniu/oczekiwaniu operacji we/wy Processor-Bound te, które przez wikszo czasu korzystaj z procesora

4. Priorytety: Dwa rodzaje priorytetów: nice priority od -20 do 19 (domylnie 0) im mniejsza warto tym zadanie bardziej uprzywilejowane real-time priority od 0 do 99 wiksza warto mniej wane zadanie

5. Kwanty czasu (ang. timeslice) Kwant czasu w milisekundach okrela, ile czasu procesora ma do dyspozycji zadanie. Kwanty przyznawane s rundami oznacza to, e zadanie które wykorzystało swój przydział moe rozpocz korzystanie z nastpnego przydzielonego mu kwantu czasu dopiero, gdy wszystkie inne zadania wyczerpi swoje przydziały.

6.Wykres 1

7. Kolejki procesów działajcych (runqueues) Najwaniejsze składowe struct runqueue { } unsigned long w kolejce nr_running; // liczba zada struct task_struct *curr // obecnie wykonywane zadanie struct prio_array *active // wskanik do tablicy zada, które nie wyczerpały jeszcze przyznanego im czasu struct prio_array *expired // wskanik do zada z wyczerpanym kwantem czasu

8. Tablice priorytetów struct prio_array { int nr_active; unsigned long bitmap[bitmap_size]; struct list_head queue[max_prio]; } nr_active ilo wszystkich zada bitmap mapa bitowa z ustawionym bitem x jeeli wród wszystkich zada jest przynajmniej jedno zadanie o priorytecie x. Poniewa liczba priorytetów jest równa 140, a int ma 32 bity, potrzebujemy 5 słów, std mapa bitowa = 160 bitów queue[x] lista procesów o priorytecie x MAX_PRIO liczba wszystkich moliwych priorytetów (100 dla zada czasu rzeczywistego + 40 dla pozostałych = 140)

9. Do czego słu prio_array? Kade zadanie, które wyczerpało swój kwant czasu usuwane jest z kolejki active i umieszczane w kolejce expired z nowo przyznanym priorytetem i kwantem czasu (jak s przyznawane o tym za chwil). Do czasu, a w kolejce active s jeszcze jakie zadania scheduler przydziela im odpowiednio (jak - o tym równie za chwil) procesor do momentu, a ostatnie zadanie wyczerpie swój kwant czasu. Wtedy nastpuje zamiana kolejki active z kolejka expired i ju.

10. Dynamiczne priorytety prio - dynamiczny priorytet static_prio podstawowy, statyczny priorytet sleep_avg okrela interaktywno zadania effective_prio() - ustala warto prio na podst. static_prio i sleep_avg prio = static_prio +/- max. 5

11. Jak scheduler ocenia interaktywno zada? sleep_avg stosunek czasu spdzonego na spaniu do czasu wykorzystania procesora przyjmuje wartoci od 0 do MAX_SLEEP_AVG (domylnie 10ms) Kiedy zadanie przechodzi w stan gotowe do wykonania sleep_avg ustawiane jest na ilo czasu, jak zadanie pozostawało w czasie oczekiwania zanim stało si gotowe. Kade tyknicie zegara systemowego, w czasie gdy zadanie korzysta z procesora powoduje zmniejszenie wartoci sleep_avg. Okazuje si, e ten sposób okrelania interaktywnoci jest bardzo miarodajny.

12. Jak wyliczany jest nowy kwant czasu? Skalowanie priorytetów na iloci przyznawanego czasu. Funkcja timeslice Stan Kwant czasu Interaktywno Priorytet (warto nice) pocztkowy połowa iloci rodzica nie wiadomo taki jak rodzica minimalny 10 ms niska wysoki domylny 100 ms rednia 0 maksymalny 200 ms wysoka niski

13. O procesach wybitnie interaktywnych Procesy bardzo interaktywne z chwil wyczerpania swojego kwantu czasu nie zawsze s przenoszone do kolejki expired. TASK_INTERACTIVE() - okrela, czy dane zadanie jest wystarczajco interaktywne EXPIRED_STARVING() - okrela, czy przypadkiem czas od ostatniego przełczenia midzy kolejkami nie jest za długi Jeeli pierwsze makro true a drugie false wtedy zadanie jest z powrotem umieszczane w kolejce active, w przeciwnym razie w expired. Dlaczego takie rozwizanie eby nie niepokoi uytkownika zbyt długim czasem na oczekiwanie na odpowied systemu na nacinicie klawisza.

14. Usypianie i budzenie. Wszystkie zadanie, które s w stanie upienia (zablokowania) umieszczane s w osobnej kolejce. Po co? eby nie zajmowały procesora. Zadania, które s oznaczone jako SLEEPING nie s brane pod uwag przez schedulera.

15. Jak? DECLARE_WAITQUEUE(wait, current); add_wait_queue(q, &wait); set_current_state(task_interruptible; /* lub UNINTERRUPTIBLE */ while (!warunek_pobudki) schedule(); set_current_state(task_running); remowe_wait_queue(q, &wait);

16. Równowaenie midzyprocesorowe load_balance() - zdefiniowana w sched.c funkcja odpowiedzialna za równownomierne obcianie procesorów Kiedy wywoływana: co 1 ms jeli procesor pozostaje w stanie bezczynnoci co 200 ms w przeciwnym wypadku w systemach z jednym procesorem nigdy Zawsze z zablokowan obsługiwan kolejk i z wyłczonymi wszystkimi przerwaniami

17. Jak działa load_balance? find_busiest_queue() znajduje procesor z najwiksz iloci zada jeli aden procesor nie ma co najmniej 25% wicej zada ni biecy zwracany jest NULL wybiera kolejk, z której zostan przecignite zadania preferowana jest expired nastpnie load_balance() znajduje list zada o najwikszym priorytecie kade zadanie ze znalezionej kolejki jest sprawdzane tj. czy moe zosta przecignite na biecy procesor jeli tak wywoływane jest dla niego pull_task() ostatnie dwa kroki s powtarzane tak długo, a kolejki procesorów zostan zrównowaone

18. Przełczanie kontekstu Obsługiwane przez funkcj context_switch() zdefiniowan w kernel/sched.c. Wywoływana przez schedule() za kadym razem, gdy nowe zadanie zostało wybrane do wykonania. Składa si z dwóch podstawowych kroków: wywołanie switch_mm() (def. W include/asm/mmu_context.h) do przełczania mapowania pamici wywołanie switch_to() (include/asm/system.h) przełczenie stanu procesora

19. Kiedy wywoływany jest schedule() Jeli tylko zadania mogłyby jawnie wywoływa schedule() - mogłyby działa w nieskoczono. need_resched flaga sygnalizujca konieczno wywołania schedule() Kto moe ustawi: - scheduler_tick() - funkcja wywoływana, gdy zadanie wyczerpie swój kwant czasu - try_to_wake_up() - wywoływana, gdy proces o wyszym priorytecie ni obecnie wykonywany otrzymał sygnał pobudki Jdro sprawdza, e bit ustawiony i wywołuje schedule() Kiedy sprawdza? - powrót z funkcji systemowej - powrót z funkcji obsługi przerwania.

20. Wywłaszczanie procesów uytkownika Moe nastpi w czasie: powrotu z funkcji systemowej powrotu z funkcji obsługi przerwania Dlaczego? Bo wtedy włanie jdro sprawdza, czy ustawiony jest bit need_resched i jeli tak wywłaszcza proces

21. Wywłaszczanie jdra. Moliwo wywłaszczania jdra jedna z najwaniejszych cech jdra 2.6 niespotykana w wikszoci Unixów Jak to działa? eby wywłaszczy zadanie jdra trzeba najpierw sprawdzi, czy nie ma ustawionych adnych blokad słuy do tego specjalna zmienna preempt_count, którego warto odpowiada iloci blokad załoonych przez obecny wtek jdra (zmienna ta znajduje si w strukturze thread-info). Jeeli ustawiona jest flaga need_resched i preempt_count jest równe zero wtedy mona wywłaszcza. Za kadym razem, gdy zwolnienie przez jdro blokady powoduje wyzerowanie preept_count sprawdzana jest flaga need_resched.

22. Kiedy moe doj do wywłaszczania jdra? w czasie powrotu z obsługi przerwania do kodu jdra kiedy jdro zwalnia ostatni blokad jeli jdro jawnie wywoła schedule() kiedy wtek jdra blokuje si w oczekiwaniu na jakie zdarzenie

23. Szeregowanie zada czasu rzeczywistego Zadania czasu rzeczywistego otrzymuj priorytety od 0 do 99 Priorytety pozostałych zada skalowane s na przedział 100 140 (-20 -> 100, 18 -> 140) Dwie polityki szeregowania: SCHED_FIFO procesy s obsługiwane zgodnie z zasad first-infirst-out procesy o wyszym priorytecie s obsługiwane przed tymi o niszych priorytetach moe doj do głodzenia procesów o niskich priorytetach, brak przydziału kwantów czasu SCHED_RR podobnie jak wyej, z tym e procesy otrzymuj kwanty czasu po wykorzystaniu swojego przydziału zadanie trafia na koniec kolejki zada o danym priorytecie SCHED_OTHER starndardowa polityka obsługi pozostałych zada Jdro w aden sposób nie zmienia pocztkowego priorytetu zada czasu rzeczywistego.

24. Jak mona wpływa na zachowanie schedulera? MIN_TIMESLICE MAX_TIMESLICE PRIO_BONUS_RATIO okrela w procentach, o ile moe si zmieni bazowy priorytet przy wyliczaniu dynamicznego priorytetu MAX_SLEEP_AVG jak długo proces musi spa, eby by uznanym za interaktywny STARVATION_LIMIT