Wstęp do deterministycznego szeregowania zadań

Deterministyczne szeregowanie zadań zajmuje się szeregowaniem (układaniem harmonogramów) zadań (programów, czynności, prac) na maszynach (procesorach, obrabiarkach, stanowiskach obsługi). Szukamy harmonogramu wykonania dla danego zbioru zadań w określonych warunkach, tak by zminimalizować przyjęte kryterium oceny (koszt) uszeregowania.
Model deterministyczny: parametry systemu i zadań są od początku znane.
Geneza i motywacje praktyczne:
- harmonogramowanie produkcji przemysłowej,
- planowanie projektów,
- organizacja pracy,
- plany zajęć szkolnych, spotkań i konferencji,
- przetwarzanie procesów w wielozadaniowych systemach operacyjnych,
- organizacja obliczeń rozproszonych.
Przykład. Pięć zadań o czasach wykonania p1,...,p5=6,9,4,1,4 należy uszeregować na trzech maszynach tak, by zakończyły się one możliwie jak najszybciej.

Rys.1. Reprezentacja graficzna harmonogramu - diagram Gantta.
Zasada poprawności harmonogramu:
- żadne zadanie nie może być jednocześnie wykonywane przez różne maszyny,
- żaden procesor nie pracuje równocześnie nad różnymi zadaniami.
Sposoby obsługi zadań
Procesory równoległe (każdy procesor może obsłużyć każde zadanie):
- procesory identyczne – wszystkie są jednakowo szybkie,
- procesory jednorodne – mają różne szybkości, ale stosunki czasów wykonania zadań są niezależne od maszyn,
- procesory dowolne – prędkości zależą od wykonywanych zadań.

Rys.2. Uszeregowanie na maszynach równoległych.
Procesory dedykowane
- zadania są podzielone na operacje (zadanie Zj zawiera operacje Oij do wykonania na maszynach Mi, o długościach czasowych pij). Zadanie kończy się wraz z wykonaniem swej najpóźniejszej operacji,
- dopuszcza się sytuację, gdy zadanie nie wykorzystuje wszystkich maszyn (operacje puste),
- żadne dwie operacje tego samego zadania nie mogą wykonywać się równocześnie,
- żaden procesor nie może równocześnie pracować nad różnymi operacjami.
Trzy główne typy systemów obsługi dla maszyn dedykowanych:
- system przepływowy (flow shop) – operacje każdego zadania są wykonywane przez procesory w tej samej kolejności wyznaczonej przez numery maszyn,
- system otwarty (open shop) – kolejność wykonania operacji w obrębie zadań jest dowolna,
- system gniazdowy (job shop) – dla każdego zadania mamy dane przyporządkowanie maszyn operacjom oraz wymaganą kolejność.
Przykład. Jednodniowy plan zajęć szkolnych. (Nauczyciele[M]-Klasy[Z])
M1 M2 M3 Z1 3 2 1 Z2 3 2 2 Z3 1 1 2

Rys.3. Procesory dedykowane - system otwarty (kolejność operacji dowolna).
Przykład. Taśma produkcyjna.(Roboty[M]-Detale[Z])
M1 M2 M3 Z1 3 2 1 Z2 3 2 2 Z3 1 1 2

Rys.4. Procesory dedykowane - system przepływowy (kolejność operacji musi być zgodna z numeracją maszyn).
Parametry zadań:
__Dane są: __zbiór n zadań Z={Z1,...,Zn} oraz m maszyn (procesorów) M={M1,...,Mm}.
Zadanie Zj :
- Czas wykonywania. Dla procesorów identycznych jest on niezależny od maszyny i wynosi pj. Procesory jednorodne Mi charakteryzują się współczynnikami szybkości bi, wtedy czas dla Mi to pj/bi. Dla maszyn dowolnych mamy czasy pij zależne od zadań i procesorów.
- Moment przybycia (release time) rj . Czas, od którego zadanie może zostać podjęte. Wartość domyślna - zero.
- Termin zakończenia dj . Opcjonalny parametr. Występuje w dwóch wariantach. Może oznaczać czas, od którego nalicza się spóźnienie (due date), lub termin, którego przekroczyć nie wolno (deadline).
- Waga wj – opcjonalny parametr, określający ważność zadania przy naliczaniu kosztu harmonogramu. Domyślnie zadania są jednakowej wagi i wtedy wj=1.
Zadania zależne:
- W zbiorze zadań Z można wprowadzić ograniczenia kolejnościowe w postaci dowolnej relacji częściowego porządku. Wówczas Zi<Zj oznacza, że zadanie Zj może się zacząć wykonywać dopiero po zakończeniu Zi (czemu? np. Zj korzysta z wyników pracy Zi).
- Jeśli ograniczenia te nie występują, mówimy o zadaniach niezależnych (tak się przyjmuje domyślnie) w przeciwnym razie są one zależne.
- Relację zwykle podaje się w postaci acyklicznego digrafu o wierzchołkach z Z (droga z Zi do Zj oznacza, że Zi<Zj) z łukami przechodnimi, lub bez (tylko relacje nakrywania – diagram Hassego).
Zadania mogą być:
- niepodzielne – przerwy w wykonaniu są niedopuszczalne (domyślnie)
- podzielne – wykonanie można przerwać i podjąć ponownie, w przypadku maszyn równoległych nawet na innym procesorze.

Rys.5. Uszeregowanie zadań podzielnych na maszynach równoległych.
Zasady poprawności harmonogramu:
- w każdej chwili procesor może wykonywać co najwyżej jedno zadanie,
- w każdej chwili zadanie może być obsługiwane przez co najwyżej jeden procesor,
- zadanie Zj wykonuje się w całości w przedziale czasu (rj,INF),
- spełnione są ograniczenia kolejnościowe,
- w przypadku zadań niepodzielnych każde zadanie wykonuje się nieprzerwanie w pewnym domknięto–otwartym przedziale czasowym, dla zadań podzielnych czasy wykonania tworzą skończoną sumę rozłącznych przedziałów.
Kryteria kosztu harmonogramu
Położenie zadania Zi w gotowym harmonogramie:
- moment zakończenia Ci (ang. completion time),
- czas przepływu przez system (flow time) Fi=Ci–ri,
- opóźnienie (lateness) Li=Ci–di,
- spóźnienie (tardiness) Ti=max{Ci–di,0},
- “znacznik spóźnienia” Ui=w(Ci>di), a więc odpowiedź (0/1 czyli Nie/Tak) na pytanie „czy zadanie się spóźniło?”
Najczęściej stosowane:
- długość uszeregowania Cmax=max{Cj : j=1,...,n},
- całkowity (łączny) czas zakończenia zadania SCj = Si=1,...,n Ci,
- średni czas przepływu F = (Si=1,...,n Fi)/n.
Oparte na wymaganych terminach zakończenia:
- maksymalne opóźnienie Lmax=max{Lj : j=1,...,n},
- maksymalne spóźnienie Tmax=max{Tj : j=1,...,n},
- całkowite spóźnienie STj = Si=1,...,n Ti,
- liczba spóźnionych zadań SUj = Si=1,...,n Ui,
- można wprowadzać wagi zadań, np łączne ważone spóźnienie SwjTj = Si=1,...,n wiTi.
Niektóre kryteria są sobie równoważne:
- SLi = SCi –Sdi, F= (SCi)/n – (Sri)/n.
- Minimalizacja długości harmonogramu. Maszyny równoległe.
- Procesory identyczne, zadania niezależne.
- Zadania podzielne P|pmtn|Cmax.
Algorytm McNaughtona Złożoność O(n)
- Wylicz optymalną długość Cmax*=max{Sj=1,...,n pj/m, max j=1,...,n pj},
- Szereguj kolejno zadania na maszynie, po osiągnięciu Cmax* przerwij zadanie i (jeśli się nie zakończyło) kontynuuj je na następnym procesorze począwszy od chwili 0.
Przykład. m=3, n=5, p1,...,p5=4,5,2,1,2.

Si=1,...,5 pi=14, max pi=5, Cmax*=max{14/3,5}=5.
Algorytm Liu O(n2), oparty na regule EDD(Earliest Due Date), działający nawet przy 1|ri,pmtn|Lmax:
- Spośród dostępnych zadań przydziel maszynę temu, które ma najmniejszy wymagany termin zakończenia,
- Jeśli zadanie zostało zakończone, lub przybyło nowe – wróć do 1 (w drugim przypadku przerywamy zadanie).
Reguła EDD (Earliest Due Date) Reguła EDD stosowana jest do szeregowania zadań na jednej maszynie o czasach przybycia ustalonych na 0. Reguła EDD porządkuje sekwencje zadań według niemalejących wymaganych terminów zakończenia dj.


Opis algorytmów szeregowania zadań http://riot.ieor.berkeley.edu/riot/Applications/Scheduling/index.html
Program LEKIN umożliwiający tworzenie harmonogramów http://www.stern.nyu.edu/om/software/lekin/index.htm
Notacja trójpolowa








Przykłady.
P3|prec|Cmax – szeregowanie niepodzielnych zadań zależnych na trzech identycznych maszynach równoległych w celu zminimalizowania długości harmonogramu. R|pmtn,prec,ri|SUi – szeregowanie podzielnych zadań zależnych z różnymi czasami przybycia i terminami zakończenia na równoległych dowolnych maszynach (liczba procesorów jest częścią danych) w celu minimalizacji liczby zadań spóźnionych. 1|ri,Ci=<di|– – pytanie o istnienie (brak kryterium kosztu, więc nic nie optymalizujemy!) uszeregowania zadań niepodzielnych i niezależnych o różnych momentach przybycia na jednej maszynie, tak by żadne zadanie nie było spóźnione.
INF - nieskończoność S - suma
Opracowano na podstawie materiałów do wykładu autorstwa dr hab. inż. Krzysztofa Giaro.
Aby dodawać komentarze musisz być zalogowany!
