Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp išankstinio ir netinkamo planavimo operacinėje sistemoje

CPU planuotojo atsakomybė yra skirti procesą procesoriui, kai CPU yra tuščiosios būsenos. CPU planuotojas pasirenka procesą iš parengties eilės ir paskirsto procesą procesoriui. Planavimas, kuris vyksta, kai procesas persijungia iš veikimo būsenos į parengties būseną arba iš laukimo būsenos į parengties būseną, vadinamas išankstiniu planavimu . Ant rankų planavimas, kuris vyksta, kai procesas nutraukiamas arba pereina nuo veikimo iki laukimo būsenos, tokio tipo CPU planavimas vadinamas netinkamu planavimu . Pagrindinis skirtumas tarp išankstinio ir nekompensuojančio tvarkaraščio yra pačiame jų vardu. Tai yra išankstinis planavimas, kurį galima atlikti iš anksto; procesai gali būti suplanuoti. Neišmokančiame tvarkaraštyje procesai negali būti suplanuoti.

Aptarkime skirtumus tarp abiejų Preemptive ir Non-Preemptive Scheduling trumpai su žemiau pateikto palyginimo diagramos pagalba.

Palyginimo diagrama

Palyginimo pagrindasIšankstinis planavimasNetinkamas planavimas
PagrindinisIštekliai skiriami procesui ribotą laiką.Kai ištekliai bus priskirti procesui, procesas tęsiasi, kol jis baigia sprogimo laiką arba persijungia į laukimo būseną.
NutrauktiProcesas gali būti nutrauktas tarp.Procesas negali būti nutrauktas, kol jis nesibaigia ar persijungia į laukimo būseną.
BadasJei aukšto prioriteto procesas dažnai pasireiškia pasirengimo eilėje, žemo prioriteto procesas gali badauti.Jei procesas, kurio metu vyksta ilgas sprogimo laikas, vyksta CPU, tuomet kitas procesas su mažiau procesoriaus sprogimo trukme gali badauti.
Pridėtinės išlaidosIšankstinis tvarkaraščių sudarymas apima procesų planavimo pridėtines išlaidas.Netinkamas tvarkaraštis neturi pridėtinių išlaidų.
LankstumasIšankstinis planavimas yra lankstus.Netinkamas planavimas yra standus.
KainaIšankstinis planavimas yra susijęs su išlaidomis.Neišankstinis planavimas nėra sąnaudų asociacija.

Išankstinio planavimo apibrėžimas

Išankstinis tvarkaraščių sudarymas yra tas, kurį galima atlikti tokiomis aplinkybėmis, kai procesas pereina iš veikimo būsenos į parengties būseną arba iš laukimo būsenos iki parengties būsenos . Čia ištekliai (procesoriaus ciklai) yra priskirti procesui ribotą laiką, o po to ištrinami, o procesas vėl įdėtas į paruoštą eilę, jei vis dar liko CPU sprogimo laikas. Procesas lieka paruoštas eilėje, kol jis gauna kitą galimybę vykdyti.

Jei pasirengimo eilėje pasiekiamas aukšto prioriteto procesas, jis neturi laukti, kol dabartinis procesas baigs sprogimo laiką. Vietoj to, dabartinis procesas yra nutraukiamas vykdymo viduryje ir yra patalpintas į parengties eilę, kol procesas su aukštu prioritetu bus naudojamas procesoriaus ciklams. Tokiu būdu kiekvienas paruoštos eilės procesas gauna šiek tiek laiko paleisti procesorių. Tai leidžia iš anksto pasirenkantį tvarkaraštį lanksčiai, bet padidina pridėtinės vertės keitimą nuo veikiančios būsenos iki paruoštos būsenos ir vise-verse.

Algoritmai, kurie atlieka išankstinį tvarkaraštį, yra „Round Robin“. Trumpiausias užduočių pirmojo (SJF) ir prioritetų tvarkaraščių sudarymas gali arba negali būti atliekamas pagal išankstinį tvarkaraštį.

Paimkime pavyzdinį planavimo planą, žiūrėkite žemiau esantį paveikslėlį. Mes turime keturis procesus P0, P1, P2, P3. Iš jų P2 pasiekiamas 0. Tuo metu CPU priskiriamas procesui P2, nes eilėje nėra kito proceso. Tuo tarpu P2 vykdė, P3 atvyko 1 metu, dabar likęs laikas P2 procesui (5 milisekundės), kuris yra didesnis nei laikas, kurio reikalauja P3 (4 mil. Sek.). Taigi CPU priskiriamas procesoriui P3.

Tuo tarpu P3 buvo vykdomas, procesas P1 pasiekiamas 2 metu. Dabar P3 likęs laikas (3 milisekundės) yra mažesnis nei laikas, kurio reikalauja procesai P1 (4 milisekundės) ir P2 (5 milisekundės). Taigi P3 leidžiama tęsti. Nors P3 yra tęsiamas, procesas P0 pasiekiamas 3 metu, dabar likęs P3 laikas (2 milisekundės) yra lygus laiko, reikalingo P0 (2 milisekundės). Taigi P3 tęsiasi ir po P3 nutraukimo CPU priskiriamas P0, nes jis turi mažiau sprogimo laiko nei kiti. Baigus P0, CPU priskiriamas P1 ir tada - P2.

Neapmokestinamojo planavimo apibrėžimas

Neišankstinis planavimas yra tas, kuris gali būti taikomas tokiomis aplinkybėmis, kai procesas baigiasi, arba procesas pereina nuo bėgimo į laukimo būseną . Neišmokant planavimą, kai ištekliai (CPU) yra priskirti procesui, procesas turi procesorių, kol jis bus nutrauktas arba pasiekia laukimo būseną.

Skirtingai nei priešpriešinis planavimas, ne išankstinis planavimas nepertraukia procesų, kuriuose vykdomas procesorius, vykdymo metu. Vietoj to jis laukia, kol procesas užbaigs procesoriaus sprogimo laiką, ir tada jis gali paskirstyti CPU kitam procesui.

Jei nenaudojate planavimo, jei procesas vyksta ilgą procesoriaus sprogimo laiką, kitas procesas turės ilgai laukti, kuris padidina vidutinį laukimo laiko procesų pasirengimo eilėje laiką. Tačiau netinkamas planavimas neturi jokių perėjimų iš procesų nuo parengties eilės į procesorių, tačiau jis daro planavimą nelankstus, nes vykdymo procesas nėra netgi pirmenybė procesui su aukštesniu prioritetu.

Leiskite mums išspręsti pirmiau minėtą planavimo pavyzdį ne iš anksto. Kadangi iš pradžių procesas P2 pasiekiamas 0 metu, todėl procesorius yra priskiriamas procesui P2, kurį reikia atlikti 6 milisekundes. Tarp visų procesų, ty P0, P1, P3 atvyksta į paruoštą eilę. Bet visi laukia, kol P2 procesas baigs procesoriaus trūkimo laiką. Tada procesas, kuris ateina po P2, ty P3, skiriamas CPU tol, kol jis baigsis. P1 taip pat atlieka procesą, o vėliau procesorius P0 perduodamas.

Pagrindiniai skirtumai tarp pasirenkamojo ir netiesioginio planavimo

  1. Pagrindinis skirtumas tarp išankstinio ir nekonkurencinio tvarkaraščių yra tas, kad išankstiniame tvarkaraštyje procesorius yra priskiriamas procesams ribotą laiką. Netinkamame tvarkaraštyje procesorius yra priskiriamas procesui, kol jis baigia arba persijungia į laukimo būseną .
  2. Vykdomasis procesas išankstiniame tvarkaraštyje nutraukiamas vykdymo viduryje, o vykdomasis procesas nekomerciniame tvarkaraštyje nėra nutraukiamas vykdymo viduryje.
  3. Išankstinis planavimas turi pridėtinę vertę, kai procesas yra perjungiamas nuo parengties būsenos iki veikiančios būsenos, vise-verse ir pasirengimo eilės palaikymo. Kita vertus, ne išankstinis planavimas neturi jokio pridėtinės vertės perjungiant procesą nuo veikimo būsenos iki parengties būsenos.
  4. Preliminariame tvarkaraštyje, jei procesas, kurio prioritetas dažnai būna, dažnai pasiekiamas paruoštoje eilėje, tada procesas su mažu prioritetu turi laukti ilgai, ir tai gali tekti badauti. Kita vertus, jei nenumatomas planavimas, jei procesorius yra priskirtas procesui su didesniu sprogimo laiku, procesai su nedideliu sprogimo laiku gali tekti badauti.
  5. Išankstinis planavimas yra gana lankstus, nes kritiniams procesams leidžiama pasiekti procesorių, kai jie pasiekia parengties eilę, nesvarbu, koks procesas šiuo metu vykdomas. Netinkamas planavimas yra standus, net jei kritinis procesas įeina į parengties eilę procesą, kuris veikia CPU, netrukdo.
  6. Išankstinis planavimas yra sąnaudų asociacija, nes ji turi išlaikyti bendrų duomenų vientisumą, o ne su išankstiniu planavimu.

Išvada:

Tai nėra ta, kad išankstinis planavimas yra geresnis nei netinkamas planavimas ar vise-verse. Viskas priklauso nuo to, kaip planavimas sumažina vidutinį procesų laukimo laiką ir maksimaliai padidina procesoriaus panaudojimą.

Top