Algorytm szeregowania - Google

Algorytm szeregowania

Z Wikipedii

Skocz do: nawigacji, szukaj

Algorytm szeregowania (ang. scheduler - planista) to algorytm rozwiązujący jedno z najważniejszych zagadnień informatyki - jak rozdzielić czas procesora i dostęp do innych zasobów pomiędzy zadania, które w praktyce zwykle o te zasoby konkurują.

Najczęściej algorytm szeregowania jest implementowany jako część wielozadaniowego systemu operacyjnego, odpowiedzialną za ustalanie kolejności dostępu zadań do procesora. Oprócz systemów operacyjnych dotyczy w szczególności także serwerów baz danych.

Za najwcześniejsze prace kładące podwaliny pod teorię algorytmów szeregowania, można uznać wprowadzenie linii produkcyjnej przez Henry'ego Forda. Następnym krokiem milowym był algorytm Jacksona, stworzony w roku 1955. Ten algorytm również powstał w odniesieniu do planowania produkcji przemysłowej.

Spis treści

[edytuj] Definicja

Algorytm szeregowania n zadań stanowiących zbiór J= \left\{J_1, ..., J_n\right\} jest to takie przydzielanie zadań procesorowi (lub procesorom), że każde zadanie jest przetwarzane do momentu zakończenia. Jednakże przetwarzanie danego zadania może być przerywane na bliżej nieokreślony czas.

Dla jednego procesora jest to funkcja:

\sigma:\mathbb{R}^+\to\mathbb{N}, taka że:

\forall t \in \mathbb{R}^+ \exists t_1,t_2 : [t \in \left\langle t_1, t_2 \right)  \wedge \forall t' \in \left\langle t_1, t_2 \right) : \sigma \left( t \right) = \sigma \left( t' \right)]

Zgodnie z tą definicją jest to funkcja, która dzieli czas na przedziały i każdemu przedziałowi przyporządkowuje jedną wartość naturalną będącą numerem procesu, który ma się w tym przedziale czasu wykonywać. Przyjęte jest, że przyporządkowanie wartości równej 0 oznacza procesor w stanie bezczynności. Numer nie musi mieć związku z priorytetem zadania.

Chociaż wyjaśnienie wydaje się proste, zaprojektowanie i implementacja dobrego algorytmu szeregowania nastręcza wielu trudności.

[edytuj] Implementacja

Zwykle implementacja algorytmu jest umieszczana w jądrze systemu, jednak nie zawsze. Ponieważ jego celem jest jedynie ustawianie listy zadań kierowanych do wykonywania a nie samo ich kierowanie, może być jednym ze zwykłych zadań, spełniającym usługę dla jądra. Taką sytuację można spotkać w systemach opartych o mikrojądro.

Planista musi także uwzględniać priorytety procesów i ich gotowość do wykonania oraz przeciwdziałać zagłodzeniu procesu poprzez przedłużający się brak dostępu do zasobów oraz tzw. inwersji priorytetów.

Większość praktycznych rozwiązań oparta jest o nadawanie zadaniom priorytetów. Jednak już samo określanie priorytetu jest problemem nietrywialnym i nie można rozpatrywać go niezależnie od co najmniej kilku czynników:

  • Obszaru zastosowania systemu
  • Celu jaki ma osiÄ…gnąć każde z zadaÅ„
  • Zastosowanego algorytmu szeregowania

W praktyce pod względem czasu na jaki realizowane jest planowanie kolejki zadań, można wyróżnić dwa typy planistów:

  • Planista dÅ‚ugoterminowy wybiera procesy z pamiÄ™ci masowej i Å‚aduje do pamiÄ™ci operacyjnej.
  • Planista krótkoterminowy odpowiada za ustalanie kolejnoÅ›ci wykonywania procesów gotowych do wykonania. Musi być on bardzo szybki, w przeciwieÅ„stwie do planisty dÅ‚ugoterminowego.

Problem szeregowania zadań powinien być rozpatrywany wielopłaszczyznowo i zwykle nie można go sprowadzić wyłącznie do rozdziału czasu procesora. Implementacja w typowym systemie powinna uwzględniać również takie elementy jak na przykład:

  • Korzystanie z zasobów sprzÄ™towych takich jak na przykÅ‚ad pamięć masowa, sieć itd.
  • Lokalność pamiÄ™ci cache
  • Różne wymagania wobec procesów (priorytety, poziom interaktywnoÅ›ci)

W systemach operacyjnych codziennego użytku łatwo dokonać podziału na zadania interaktywne i nieinteraktywne. Zadania interaktywne przez większość czasu pozostają w stanie oczekiwania na reakcję użytkownika. Gdy taka reakcja nastąpi, powinny szybko przejść do stanu wykonywania aby ich użytkownik nie miał wrażenia, że program "zacina się". Problemem jest tu nieprzewidywalny moment, w którym do wykonywania powinno być skierowane zadanie interaktywne. Należy jednocześnie zapewnić jak najmniejsze opóźnienia w realizowaniu zadań nieinteraktywnych.

[edytuj] Szeregowanie a wywłaszczanie

Większość współcześnie spotykanych rozwiązań opiera się na wymuszaniu oddania kontroli czyli wielozadaniowości z wywłaszczaniem. Systemy dobrowolnego oddawania kontroli (wielozadaniowość oparta na współpracy) są rzadziej spotykane, gdyż pojedynczy źle zaimplementowany lub wrogi proces potrafi w takim wypadku zdestabilizować pracę całego systemu. Dość często stosuje się też rozwiązania mieszane - wymuszanie wobec zadań (realizowanych zwykle jako procesy) a współpraca wewnątrz zadania czyli zwykle między wątkami.

[edytuj] Wybrane algorytmy szeregowania

[edytuj] Używane najczęściej

  • FIFO - algorytm powszechnie stosowany, jeden z prostszych w realizacji, dajÄ…cy dobre efekty w systemach ogólnego przeznaczenia; zadanie wykonuje siÄ™ aż nie zostanie wywÅ‚aszczone przez siebie lub inne zadanie o wyższym priorytecie;
  • Planowanie rotacyjne (round-robin) - każde z zadaÅ„ otrzymuje kwant czasu; po spożytkowaniu swojego kwantu zostaje wywÅ‚aszczone i ustawione na koÅ„cu kolejki;
  • Planowanie sporadyczne - zadania otrzymujÄ… tak zwany "budżet czasu"; ten algorytm pomaga pogodzić wykluczajÄ…ce siÄ™ reguÅ‚y dotyczÄ…ce szeregowania zadaÅ„ okresowych i nieokresowych; wciąż nie jest implementowany przez wiele systemów, jednak znalazÅ‚ siÄ™ w standardzie POSIX;

[edytuj] Mniej powszechne

Trzy wymienione wyżej algorytmy są stosowane najczęściej. Jednak lista algorytmów szeregowania jest bardzo długa i znajdują się na niej między innymi jeszcze takie algorytmy jak:

  • FCFS (first come, first serve) - Bardzo podobny do kolejki FIFO - Pierwszy przyjdzie, pierwszy wykonany. Algorytm ten dokonuje najsprawiedliwszego przydziaÅ‚u czasu (każdemu wedÅ‚ug potrzeb), jednak powoduje bardzo sÅ‚abÄ… interakcyjność systemu - pojedynczy dÅ‚ugi proces caÅ‚kowicie blokuje system na czas swojego wykonania, gdyż nie ma priorytetów zgodnie z którymi mógÅ‚by zostać wywÅ‚aszczony. Algorytm ten stosuje siÄ™ jednak z powodzeniem w systemach wsadowych, gdzie operator Å‚aduje zadania do wykonania, a one wykonujÄ… siÄ™ do skutku.
  • SJF (shortest job first) - Najpierw najkrótsze zadanie. Jest algorytmem optymalnym ze wzglÄ™du na najkrótszy Å›redni czas oczekiwania. W wersji z wywÅ‚aszczaniem, stosowana jest metoda: najpierw najkrótszy czas pracy pozostaÅ‚ej do wykonania. Problemem tego algorytmu jest gÅ‚odzenie dÅ‚ugich procesów - może siÄ™ zdarzyć, że caÅ‚y czas bÄ™dÄ… nadchodzić krótsze procesy, a wtedy proces dÅ‚uższy nigdy nie zostanie wykonany.

[edytuj] Deterministyczne

W systemach operacyjnych czasu rzeczywistego (stosowanych m. in. w automatyce) najważniejszym zadaniem algorytmu szeregowania jest zapewnienie, by wykonanie danego procesu zakończyło się przed upływem zdefiniowanych dla niego ograniczeń czasowych. Opracowano w tym celu deterministyczne algorytmy szeregowania, takie jak:

[edytuj] Modyfikacje

Działania planisty zwykle muszą być skonsolidowane z całością systemu. Dlatego w praktycznie używanych algorytmach szeregowania pojawiają się dodatkowe cechy, takie jak:

  • Planowanie priorytetowe - wybierany jest proces o najwyższym priorytecie. W tej metodzie wystÄ™puje problem nieskoÅ„czonego blokowania (procesu o niskim priorytecie przez procesy o wysokim priotytecie). Stosuje siÄ™ tu postarzanie procesów, polegajÄ…ce na powolnym podnoszeniu priorytetu procesów zbyt dÅ‚ugo oczekujÄ…cych.
  • Planowanie wielopoziomowe - zadania przypisywane sÄ… do kolejek szeregowania w zależnoÅ›ci od parametru opisujÄ…cego każde z zadaÅ„ jakim w praktyce zwykle jest priorytet. Zadania w danej kolejce sÄ… nastÄ™pnie szeregowane okreÅ›lonym algorytmem takim jak na przykÅ‚ad FIFO lub round-robin i kierowane do wykonania. JeÅ›li w danej kolejce nie ma zadaÅ„ gotowych do wykonywania, planista ponownie dokonuje analizy kolejki ale dla zadaÅ„ o niższym priorytecie. Zwykle możliwa jest zmiana kolejki w której szeregowane jest zadanie, poprzez zmianÄ™ priorytetu zadania.
  • Planowanie wieloprocesorowe - na jednakowe lub różne procesory a także caÅ‚e komputery;
  • Synchronizacja miÄ™dzyzadaniowa - ze wzglÄ™du na powiÄ…zanie zadaÅ„ różnymi zasobami a nie tylko procesorem, konieczne jest uwzglÄ™dnienie aspektu dostÄ™pu do tych innych zasobów przez szeregowane zadania;

[edytuj] Zobacz też


Pekin Cafe od 4 sierpnia w TVN24
TVN24 jedzie na Olimpiadę do Pekinu. Od 4 sierpnia, codziennie o 18.30, reporterzy będą relacjonować w specjalnym programie Pekin Cafe najciekawsze wydarzenia sportowe, wielkie emocje, opinie ekspertów i wrażenia kibiców.
Grzywna dla dziennikarza za ujawnienie tożsamości świadka
Kosowski dziennikarz Baton Haxhiu, który ujawnił tożsamość chronionego świadka zeznającego w procesie byłego premiera Kosowa Ramusha Haradinaja, został skazany na zapłacenie grzywny w wysokości 7 tysięcy euro.
Onet.pl z targetowaniem behawioralnym reklam
Portal Onet.pl wdraża system targetowania behawioralnego reklam.
Andracki przewodniczÄ…cym rady nadzorczej PAP-u
Krzysztof Andracki został przewodniczącym rady nadzorczej Polskiej Agencji Prasowej. Wybrano go na wczorajszym, pierwszym posiedzeniu rady powołanej na początku lipca.
118 osób na liście zwolnień w telewizji Puls
Na liÅ›cie zwolnieÅ„ po likwidacji programu informacyjnego telewizji Puls ”Puls Raport” jest 118 nazwisk.
Linki: Strona g³ówna