Wstęp do deterministycznego szeregowania zadań

PL
Data dodania: 2011-10-07, Autor: SoDan, Dodał: Karol, Wyświetleń: 668

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)

  1. Wylicz optymalną długość Cmax*=max{Sj=1,...,n pj/m, max j=1,...,n pj},
  2. 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:

  1. Spośród dostępnych zadań przydziel maszynę temu, które ma najmniejszy wymagany termin zakończenia,
  2. 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!


Kontakt

Jeśli chcesz się z nami skontaktować napisz na adres: info(at)binboy.org lub odwiedź nasz profil na Facebooku!

O Nas

Serwis binboy.org to kopalnia wiedzy dla wszystkich z branży IT, w szczególności dla programistów i webmasterów. To duży zbiór kursów programowania, tutoriali, darmowych ebooków, setki kodów źródłowych itp.

Bądź w kontakcie

Panel użytkownika

Zaloguj się do panelu użytkownika.
Nie masz konta? Zarejestruj się!
Zapomniałeś hasła?