Algoritmul de planificare a priorităților: Preemptiv, Non-Preemptiv
⚡ Rezumat inteligent
Planificarea priorităților este o metodă de planificare a procesorului care selectează procesele în funcție de prioritate, executând mai întâi sarcinile cu prioritate mai mare. Poate fi preemptivă sau non-preemptivă, iar procesele cu prioritate egală sunt gestionate în ordinea sosirii sau pe bază round-robin.

Ce este programarea prioritară?
Programare prioritară este o metodă de planificare a proceselor care se bazează pe prioritate. În acest algoritm, planificatorul selectează sarcinile pentru a funcționa conform priorității.
Procesele cu prioritate mai mare ar trebui să fie efectuate mai întâi, în timp ce locurile de muncă cu priorități egale sunt efectuate pe bază de round-robin sau FCFS. Prioritatea depinde de cerințele de memorie, de timp etc.
Tipuri de programare prioritară
Planificarea prioritară este împărțită în două tipuri principale:
Programare preventivă
În programarea preventivă, sarcinile sunt în mare parte atribuite cu prioritățile lor. Uneori este important să rulați o sarcină cu o prioritate mai mare înainte de o altă sarcină cu prioritate mai mică, chiar dacă sarcina cu prioritate inferioară este încă în execuție. Sarcina cu prioritate inferioară se menține o perioadă de timp și reia când sarcina cu prioritate mai mare își termină execuția.
Programare non-preemptivă
În acest tip de metodă de planificare, procesorul (CPU) a fost alocat unui anumit proces. Procesul care menține CPU ocupat va elibera CPU-ul fie prin schimbarea contextului, fie prin terminare. Este singura metodă care poate fi utilizată pentru diverse platforme hardware. Asta pentru că nu necesită hardware special (de exemplu, un cronometru), cum ar fi planificarea preemptivă.
Caracteristicile programării prioritare
- Un algoritm CPU care programează procesele în funcție de prioritate.
- Este folosit în Operasisteme de tingere pentru efectuarea proceselor batch.
- Dacă două joburi cu aceeași prioritate sunt PREGĂTITE, funcționează pe a PRIMUL VENIT, PRIMUL SERVIT bază.
- În programarea cu prioritate, fiecărui proces i se atribuie un număr care indică nivelul său de prioritate.
- Cu cât numărul este mai mic, cu atât prioritatea este mai mare.
- În acest tip de algoritm de planificare, dacă sosește un proces mai nou care are o prioritate mai mare decât procesul care rulează în prezent, atunci procesul care rulează în prezent este preemptat.
Exemplu de programare prioritară
Luați în considerare următoarele cinci procese P1 până la P5. Fiecare proces are propria prioritate, timp de rafală și timp de sosire unic.
| Etape | Prioritate | Timp de explozie | Timpul sosirii |
|---|---|---|---|
| P1 | 1 | 4 | 0 |
| P2 | 2 | 3 | 0 |
| P3 | 1 | 7 | 6 |
| P4 | 3 | 4 | 11 |
| P5 | 2 | 2 | 12 |
Pas 0) La momentul = 0, sosesc Procesul P1 și P2. P1 are prioritate mai mare decât P2. Execuția începe cu procesul P1, care are timpul de rafală 4.
Pas 1) La momentul = 1, nu sosește niciun proces nou. Execuția continuă cu P1.
Pas 2) La momentul 2, nu sosește niciun proces nou, așa că puteți continua cu P1. P2 este în coada de așteptare.
Pas 3) La momentul 3, nu sosește niciun proces nou, deci puteți continua cu P1. Procesul P2 este încă în coada de așteptare.
Pas 4) La momentul 4, P1 și-a încheiat execuția. P2 începe execuția.
Pas 5) La momentul = 5, nu sosește niciun proces nou, așa că continuăm cu P2.
Pas 6) La momentul = 6, sosește P3. P3 are o prioritate mai mare (1) în comparație cu P2, care are prioritate (2). P2 este preemptat, iar P3 își începe execuția.
| Etape | Prioritate | Timp de explozie | Timpul sosirii |
|---|---|---|---|
| P1 | 1 | 4 | 0 |
| P2 | 2 | 1 din 3 în așteptare | 0 |
| P3 | 1 | 7 | 6 |
| P4 | 3 | 4 | 11 |
| P5 | 2 | 2 | 12 |
Pas 7) La momentul 7, nu sosește niciun proces nou, așa că continuăm cu P3. P2 se află în coada de așteptare.
Pas 8) La momentul = 8, nu sosește niciun proces nou, deci putem continua cu P3.
Pas 9) La momentul = 9, nu apare niciun proces nou, deci putem continua cu P3.
Pas 10) La intervalul de timp 10, nu apare niciun proces nou, așa că continuăm cu P3.
Pas 11) La momentul = 11, P4 sosește cu prioritatea 4. P3 are prioritate mai mare, așa că își continuă execuția.
| Etape | Prioritate | Timp de explozie | Timpul sosirii |
|---|---|---|---|
| P1 | 1 | 4 | 0 |
| P2 | 2 | 1 din 3 în așteptare | 0 |
| P3 | 1 | 2 din 7 în așteptare | 6 |
| P4 | 3 | 4 | 11 |
| P5 | 2 | 2 | 12 |
Pas 12) La momentul = 12, sosește P5. P3 are prioritate mai mare, așadar continuă execuția.
Pas 13) La momentul = 13, P3 finalizează execuția. Avem P2, P4, P5 în coada de așteptare. P2 și P5 au prioritate egală. Momentul de sosire al lui P2 este anterior lui P5, deci P2 începe execuția.
| Etape | Prioritate | Timp de explozie | Timpul sosirii |
|---|---|---|---|
| P1 | 1 | 4 | 0 |
| P2 | 2 | 1 din 3 în așteptare | 0 |
| P3 | 1 | 7 | 6 |
| P4 | 3 | 4 | 11 |
| P5 | 2 | 2 | 12 |
Pas 14) La momentul = 14, procesul P2 și-a terminat execuția. P4 și P5 sunt în starea de așteptare. P5 are cea mai mare prioritate și începe execuția.
Pas 15) La momentul = 15, P5 continuă execuția.
Pas 16) La momentul = 16, P5 și-a terminat execuția. P4 este singurul proces rămas. Acesta începe execuția.
Pas 17) La momentul = 20, P4 și-a finalizat execuția și nu a mai rămas niciun proces.
Pas 18) Să calculăm timpul mediu de așteptare pentru exemplul de mai sus.
Timp de așteptare = ora de începere – ora de sosire + timpul de așteptare pentru următoarea explozie
P1 = 0 - 0 = 0 P2 = 4 - 0 + 7 = 11 P3 = 6 - 6 = 0 P4 = 16 - 11 = 5 Average Waiting time = (0 + 11 + 0 + 5 + 2)/5 = 18/5 = 3.6
Avantajele programării prioritare
Iată beneficiile/avantaje ale utilizării metodei de planificare prioritară:
- Metodă de programare ușor de utilizat.
- Procesele sunt executate pe baza priorității, astfel încât prioritatea ridicată nu trebuie să aștepte mult timp, ceea ce economisește timp.
- Această metodă oferă un mecanism bun prin care importanța relativă a fiecărui proces poate fi definită cu precizie.
- Potrivit pentru aplicații cu cerințe fluctuante de timp și resurse.
Dezavantajele programării prioritare
Iată dezavantajele/dezavantajele programării prioritare:
- Dacă sistemul se blochează în cele din urmă, toate procesele cu prioritate scăzută se pierd.
- Dacă procesele cu prioritate înaltă necesită mult timp CPU, atunci procesele cu prioritate inferioară pot muri de foame și vor fi amânate pentru o perioadă nedeterminată.
- Acest algoritm de programare poate lăsa unele procese cu prioritate scăzută în așteptare la nesfârșit.
- Un proces va fi blocat atunci când este gata de rulare, dar trebuie să aștepte CPU, deoarece un alt proces rulează în prezent.
- Dacă un nou proces cu prioritate mai mare continuă să vină în coada de așteptare, atunci procesul care se află în starea de așteptare ar putea trebui să aștepte o perioadă lungă de timp.


















