Programare preventivă vs programare non-preventivă: diferențe cheie

Cuprins:

Anonim

Ce este programarea preventivă?

Planificarea preventivă este o metodă de planificare în care sarcinile sunt atribuite în mare parte 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 mai mică este încă în curs de executare.

În acel moment, sarcina cu prioritate inferioară se menține o perioadă de timp și se reia când sarcina cu prioritate superioară își termină execuția.

În acest tutorial privind sistemul de operare, veți afla:

  • Ce este programarea preventivă?
  • Ce este programarea non-preventivă?
  • Diferența dintre programarea preventivă și cea non-preventivă în sistemul de operare
  • Avantajele programării preventive
  • Avantajele programării non-preventive
  • Dezavantaje ale programării preventive
  • Dezavantaje ale programării non-preventive
  • Exemplu de programare non-preventivă
  • Exemplu de programare preventivă

Ce este programarea non-preventivă?

În acest tip de metodă de planificare, CPU-ul a fost alocat unui proces specific. Procesul care menține procesorul ocupat va elibera CPU fie prin schimbarea contextului, fie prin terminare.

Este singura metodă care poate fi utilizată pentru diverse platforme hardware. Asta pentru că nu are nevoie de hardware specializat (de exemplu, un cronometru), cum ar fi programarea preventivă.

Programarea non-preventivă are loc atunci când un proces intră în mod voluntar în starea de așteptare sau se termină.

Diferența dintre programarea preventivă și cea non-preventivă în sistemul de operare

Aici sunt programarea preventivă și non-preventivă în sistemul de operare

Programare preventivă Programare non-preventivă
Un procesor poate fi prevenit pentru a executa diferitele procese în mijlocul oricărei execuții curente a procesului. Odată ce procesorul își începe execuția, trebuie să-l termine înainte de a-l executa pe celălalt. Nu poate fi întrerupt în mijloc.
Utilizarea procesorului este mai eficientă în comparație cu programarea non-preventivă. Utilizarea procesorului este mai puțin eficientă în comparație cu programarea preventivă.
Timpul de așteptare și de răspuns al programării preventive este mai mic. Timpul de așteptare și de răspuns al metodei de planificare non-preventivă este mai mare.
Programarea preventivă este prioritară. Procesul cu cea mai mare prioritate este un proces care este utilizat în prezent. Când orice proces intră în starea de rulare, starea acelui proces nu este ștearsă niciodată din planificator până când nu își termină treaba.
Programarea preventivă este flexibilă. Programarea non-preventivă este rigidă.
Exemple: - Cel mai scurt timp rămas în primul rând, Round Robin etc. Exemple: primul venit primul servit, cel mai scurt loc de muncă mai întâi, programarea prioritară etc.
Algoritmul de planificare preventivă poate fi prevenit, adică procesul poate fi planificat În procesul de planificare non-preventivă nu poate fi programat
În acest proces, CPU este alocat proceselor pentru o anumită perioadă de timp. În acest proces, CPU este alocat procesului până când se termină sau trece la starea de așteptare.
Algoritmul preventiv are cheltuielile generale de a comuta procesul de la starea de pregătire la starea de rulare și viceversa. Programarea non-preventivă nu are o astfel de cheltuieli generale pentru a comuta procesul de a rula în starea de pregătire.

Avantajele programării preventive

Iată care sunt avantajele / avantajele metodei de planificare preventivă:

  • Metoda de planificare preventivă este mai robustă, abordarea astfel încât un proces nu poate monopoliza CPU
  • Alegerea sarcinii de execuție reconsiderată după fiecare întrerupere.
  • Fiecare eveniment provoacă întreruperea activităților de rulare
  • Sistemul de operare se asigură că utilizarea procesorului este aceeași pentru toate procesele care rulează.
  • În acest sens, utilizarea procesorului este aceeași, adică toate procesele care rulează vor folosi CPU în mod egal.
  • Această metodă de planificare improvizează și timpul mediu de răspuns.
  • Programarea preventivă este benefică atunci când o folosim pentru mediul multi-programare.

Avantajele programării non-preventive

Iată care sunt avantajele / avantajele metodei de programare non-preventivă:

  • Oferă cheltuieli de programare reduse
  • Tinde să ofere un randament ridicat
  • Conceptual este o metodă foarte simplă
  • Sunt necesare mai puține resurse de calcul pentru programare

Dezavantaje ale programării preventive

Iată, contra / dezavantajul metodei de planificare preventivă:

  • Aveți nevoie de resurse de calcul limitate pentru programare
  • Planificatorul are nevoie de un timp mai mare pentru a suspenda sarcina care rulează, a schimba contextul și a expedia noua sarcină primită.
  • Procesul cu prioritate redusă trebuie să aștepte mai mult timp dacă unele procese cu prioritate ridicată ajung în mod continuu.

Dezavantaje ale programării non-preventive

Iată, dezavantaje / dezavantaje ale metodei de programare non-preventivă:

  • Poate duce la înfometare, în special pentru acele sarcini în timp real
  • Bug-urile pot cauza înghețarea unei mașini
  • Poate îngreuna programarea în timp real și cu prioritate
  • Timp de răspuns slab pentru procese

Exemplu de programare non-preventivă

În programarea SJF non-preventivă, odată ce ciclul CPU este alocat procesului, procesul îl menține până când ajunge la o stare de așteptare sau se termină.

Luați în considerare următoarele cinci procese, fiecare având propriul său moment de rafală și ora de sosire.

Coadă de proces Timp de rafală Timpul sosirii
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Pasul 0) La momentul = 0, P4 ajunge și începe executarea.

Pasul 1) La momentul = 1, ajunge procesul P3. Dar, P4 are încă nevoie de 2 unități de execuție pentru a finaliza. Va continua execuția.

Pasul 2) La momentul = 2, procesul P1 ajunge și este adăugat la coada de așteptare. P4 va continua execuția.

Pasul 3) La momentul = 3, procesul P4 își va termina execuția. Se compară timpul de explozie al P3 și P1. Procesul P1 este executat deoarece timpul său de rafală este mai mic în comparație cu P3.

Pasul 4) La momentul = 4, procesul P5 ajunge și este adăugat la coada de așteptare. P1 va continua execuția.

Pasul 5) La ora = 5, procesul P2 ajunge și este adăugat la coada de așteptare. P1 va continua execuția.

Pasul 6) La momentul = 9, procesul P1 își va termina execuția. Se compară timpul de explozie al P3, P5 și P2. Procesul P2 este executat deoarece timpul său de rafală este cel mai mic.

Pasul 7) La momentul = 10, P2 se execută, iar P3 și P5 se află în coada de așteptare.

Pasul 8) La momentul = 11, procesul P2 își va termina execuția. Se compară timpul de explozie al P3 și P5. Procesul P5 este executat deoarece timpul său de explozie este mai mic.

Pasul 9) La momentul = 15, procesul P5 își va termina execuția.

Pasul 10) La ora = 23, procesul P3 își va termina execuția.

Pasul 11) Să calculăm timpul mediu de așteptare pentru exemplul de mai sus.

Wait timeP4= 0-0=0P1= 3-2=1P2= 9-5=4P5= 11-4=7P3= 15-1=14Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2

Exemplu de programare preventivă

Luați în considerare următoarele trei procese din Round-robin

Coadă de proces Timp de rafală
P1 4
P2 3
P3 5

Pasul 1) Execuția începe cu procesul P1, care are timp de spargere 4. Aici, fiecare proces se execută timp de 2 secunde. P2 și P3 sunt încă în coada de așteptare.

Pasul 2 ) La momentul = 2, P1 este adăugat la sfârșitul cozii și P2 începe să se execute

Pasul 3) La momentul = 4, P2 este preempt și se adaugă la sfârșitul cozii. P3 începe să se execute.

Pasul 4) La momentul = 6, P3 este preempt și se adaugă la sfârșitul cozii. P1 începe să se execute.

Pasul 5) La timp = 8, P1 are un timp de rafală de 4. A finalizat execuția. P2 începe executarea

Pasul 6) P2 are un timp de rafală de 3. S-a executat deja pentru 2 intervale. La momentul = 9, P2 finalizează execuția. Apoi, P3 începe executarea până la finalizare.

Pasul 7) Să calculăm timpul mediu de așteptare pentru exemplul de mai sus.

Wait timeP1= 0+ 4= 4P2= 2+4= 6P3= 4+3= 7

DIFERENȚE CHEIE

  • În Planificare preventivă, CPU este alocat proceselor pentru o anumită perioadă de timp, iar CPU non-preventiv de planificare este alocat procesului până când se termină.
  • În programarea preventivă, sarcinile sunt comutate în funcție de prioritate, în timp ce programarea non-preventivă nu are loc comutare.
  • Algoritmul preventiv are cheltuielile generale de comutare a procesului de la starea de pregătire la starea de rulare, în timp ce programarea non-preventivă nu are o astfel de cheltuieli generale de comutare.
  • Programarea preventivă este flexibilă, în timp ce programarea non-preventivă este rigidă.