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.

  • 🎯 Definiție: Procesele sunt programate în funcție de prioritate, sarcinile cu prioritate mai mare fiind executate înaintea celor cu prioritate mai mică.
  • 🔢 Număr de prioritate: Un număr mai mic înseamnă de obicei o prioritate mai mare.
  • ⏸️ Preemptiv: O sosire cu prioritate mai mare poate întrerupe un proces cu prioritate mai mică care rulează în prezent.
  • ▶ ️ Non-preemptiv: Procesul care rulează păstrează CPU-ul până când se termină sau schimbă contextul.
  • Avantaj: Procesele importante se execută rapid, corelând importanța relativă cu timpul CPU.
  • ⚠️ Dezavantaj: Procesele cu prioritate scăzută pot muri de foame și pot aștepta pe termen nelimitat.

Algoritmul de programare prioritară

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.

Programare prioritară

Pas 1) La momentul = 1, nu sosește niciun proces nou. Execuția continuă cu P1.

Programare prioritară

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.

Programare prioritară

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.

Programare prioritară

Pas 4) La momentul 4, P1 și-a încheiat execuția. P2 începe execuția.

Programare prioritară

Pas 5) La momentul = 5, nu sosește niciun proces nou, așa că continuăm cu P2.

Programare prioritară

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

Programare prioritară

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.

Programare prioritară

Pas 8) La momentul = 8, nu sosește niciun proces nou, deci putem continua cu P3.

Programare prioritară

Pas 9) La momentul = 9, nu apare niciun proces nou, deci putem continua cu P3.

Programare prioritară

Pas 10) La intervalul de timp 10, nu apare niciun proces nou, așa că continuăm cu P3.

Programare prioritară

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

Programare prioritară

Pas 12) La momentul = 12, sosește P5. P3 are prioritate mai mare, așadar continuă execuția.

Programare prioritară

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

Programare prioritară

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.

Programare prioritară

Pas 15) La momentul = 15, P5 continuă execuția.

Programare prioritară

Pas 16) La momentul = 16, P5 și-a terminat execuția. P4 este singurul proces rămas. Acesta începe execuția.

Programare prioritară

Pas 17) La momentul = 20, P4 și-a finalizat execuția și nu a mai rămas niciun proces.

Programare prioritară

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.

Întrebări frecvente

Înfometarea apare atunci când procesele cu prioritate scăzută așteaptă la nesfârșit, deoarece cele cu prioritate mai mare continuă să sosească. Îmbătrânirea rezolvă această problemă prin creșterea treptată a priorității proceselor care au așteptat mult timp, astfel încât fiecare proces să ruleze în cele din urmă.

În majoritatea sistemelor de operare, un număr de prioritate mai mic înseamnă o prioritate mai mare. De exemplu, un proces cu prioritatea 1 rulează înaintea unui proces cu prioritate 3. Cu toate acestea, unele sisteme inversează acest lucru, așa că verificați întotdeauna convenția utilizată.

Prioritatea poate fi atribuită intern folosind factori precum nevoile de memorie, cerințele de timp și burst-ul CPU sau extern de către utilizator sau administrator, în funcție de importanță, cost sau termene limită. Poate fi statică (fixă) sau dinamică (se schimbă în timpul execuției).

Inteligența artificială poate atribui și ajusta prioritățile proceselor în mod dinamic, învățând modele de sarcină de lucru și termene limită. Acest lucru ajută la finalizarea la timp a sarcinilor importante, reducând în același timp riscul de inactivitate, îmbunătățind randamentul general și capacitatea de răspuns în sisteme complexe și în continuă schimbare.

Da. Inteligența artificială poate monitoriza timpii de așteptare și poate crește automat prioritatea proceselor cu așteptare lungă, acționând ca o îmbătrânire inteligentă. Prin prezicerea congestiei, aceasta echilibrează corectitudinea și performanța mai bine decât regulile fixe, astfel încât joburile cu prioritate scăzută nu sunt amânate pentru totdeauna.

Rezumați această postare cu: