Situația poate apărea pe un procesor care trebuie să execute mai multe programe, într-un flux de producție, in viața de zi cu zi, etc. Se pune problema de a calcula momentul în care e terminată execuția fiecărei sarcini, în funcție de timpii la care au fost făcute solicitările.
În general, se pot alege diverse criterii de decizie: luând în considerare ordinea solicitărilor, prioritatea acestora, durata executiei sau termenul limită. Discutăm planificarea bazată pe prioritate: în momentul deciziei asupra următoarei sarcini de executat se alege cea de prioritate maximă între toate cele solicitate (se presupune că fiecare sarcină are asociată o prioritate cunoscută). Pot apărea două subcazuri:
Exemplu: Presupunem că avem de planificat următoarele sarcini:
Sarcina | Durata | Prioritate | Moment solicitare |
---|---|---|---|
J1 | 10 | 1 | 5 |
J2 | 7 | 2 | 8 |
J3 | 8 | 3 | 12 |
----------------- | |-------------- --------------------| J3 | J2 | | J1 | | | |-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|--> t 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ^ ^ J2 J3Solicitările pentru sarcinile J2 și J3 apar în timpul execuției lui J1, dar aceasta nu poate fi întreruptă. La încheierea lui J1 (t = 5 + 10 = 15), se dă în execuție solicitarea existentă de prioritate maximă, J3, iar la terminarea acesteia se executa J2. În cazul planificării preemptive, aceleași sarcini se execută în felul următor:
----------------- --------| |----- ------| J2 | J3 | J2 |-------------| | J1 | | | | J1 | |-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|--> t 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ^ ^ J2 J3La apariția lui J2 (t = 8), e oprit J1 și se trece la execuția lui J2, acesta fiind prioritar. La fel, la apariția lui J3 se oprește J2 și se începe execuția lui J3. La terminarea lui J3, sarcina cea mai prioritară e J2, din care au mai rămas de executat 3 unități de timp. În final, se execută cele 7 unități de timp rămase din J1.
Exemple:
Sarcina | Durata | Prioritate | Moment solicitare |
---|---|---|---|
J1 | 10 | 1 | x |
J2 | 3 | 2 | 12 |
Sarcina | Durata | Prioritate | Moment solicitare |
---|---|---|---|
J1 | 6 | 1 | x |
J2 | 4 | 2 | y |