Preemptive at Non-Preemptive Scheduling sa Operating Systems
Processor Scheduling (o CPU Scheduling ay tumutukoy kung aling mga proseso ang nakatalaga sa, at inalis mula sa CPU, batay sa mga modelo ng pag-iiskedyul tulad ng Preemptive at Non-Preemptive Scheduling (kilala rin bilang Co-operative Scheduling).
Ang mga mas lumang mga sistema ay maaaring gumana sa simpleng stand-alone na mga mode ngunit sa pagtaas ng pangangailangan para sa tumutugon, kakayahang umangkop na mga system, pati na rin ang virtualization, pamamahala ng multi-processing mahusay na nagbibigay ng mabilis na tugon sa lahat ng mga kahilingan sa pagpoproseso ng gawain.
Ang mga yunit ng pag-iiskedyul ay madalas na tinutukoy bilang isang gawain at ito ang trabaho ng Scheduler upang patakbuhin at pamahalaan ang mga gawaing ito kapag kinakailangan; pinipili ng Scheduler ang gawain na aalisin at italaga sa CPU para sa pagpoproseso, ayon sa modelo ng pag-iiskedyul na ginamit.
Paano nalalaman ng Scheduler kung aling mga gawain ang priority?
Ang Scheduler ay kailangang magpatakbo ng isang makatarungan at mahusay na proseso ng pagpili, na isinasaalang-alang ang variable, dynamic na mga kahilingan sa pagproseso, at ginagawang karamihan ng mga cycle ng CPU.
Ang mga gawain ay maaaring nasa dalawang estado habang nasa pagpoproseso:
- Sa isang CPU Burst kung saan ang CPU ay gumaganap kalkulasyon upang iproseso ang gawain (ang panahon para sa isang CPU Burst ay nag-iiba mula sa gawain sa gawain, at programa sa programa).
- Sa isang Input / Output (I / O) Burst naghihintay ng data na matanggap o ipinadala mula sa system.
Kapag ang CPU ay idle, nababasa ng Scheduler ang Handa nang pila, at pinipili ang susunod na gawain upang patakbuhin. Pagkatapos, ito ang Dispatcher na nagbibigay sa napiling kontrol ng gawain ng CPU, kaya kailangang mabilis! Anumang oras na kinuha ng Dispatcher ay kilala bilang Mag-dispatch na Latency.
Mayroong iba't ibang mga istruktura at pasadyang mga parameter upang tukuyin ang Handa nang pila, pati na rin ang ilang mga pamamaraan na maaaring magamit upang pamahalaan ang mga pagkakumplikado ng proseso ng pag-iiskedyul.
Sa pangkalahatan, ang tungkol sa pag-optimize at pag-maximize ng CPU utilization, throughput, atbp.
Ang Scheduler ay kailangang gumawa ng desisyon sa panahon ng isa sa mga sumusunod na yugto:
- Kapag nagbago ang Task mula sa isang Pagpapatakbo sa isang Naghihintay na Estado (halimbawa, naghihintay sa kahilingan ng I / O).
- Kapag nagbago ang Task mula sa Pagpapatakbo sa Handa (halimbawa, pagtugon sa isang pag-abala).
- Kapag nagbago ang Task mula sa Naghihintay sa Handa (halimbawa, ang kahilingan ng I / O ay nakumpleto).
- Kapag ang Task
Ang isang bagong Task ay dapat piliin kung stage 1 o 4 ang mangyayari upang masiguro ang ganap na paggamit ng CPU, at sa parehong yugto 2 at 3, ang gawain ay maaaring magpatuloy sa pagtakbo o bago ang isang napili.
Matapos maunawaan kung paano naproseso ang isang gawain, tingnan natin ang dalawang mga modelo ng pag-iiskedyul na nakikitungo sa mga CPU interrupts.
Ang parehong may mga katulad na tampok sa mga gawain, mga estado ng gawain, mga queue, at mga priyoridad (static o dynamic):
- Non-Preemptive Scheduling ay kapag ang isang gawain ay tumatakbo hanggang tumigil ito (kusang-loob), o matapos. Ang Windows® ay may Non-Preemptive Scheduling hanggang sa Windows 3.x, pagkatapos nito ay nagbago ito sa Preemptive mula sa Windows 95.
- Preemptive Scheduling ay kung saan ang isang gawain ay maaaring masuspinde sa pamamagitan ng isang CPU na matakpan, hindi tulad ng Non-Preemptive kung saan ang gawain ay tumatakbo hanggang sa ito ay naglabas ng kontrol sa CPU.
Non-Preemptive Scheduling
Ang mga tungkulin sa loob ng isang Non-Preemptive na sistema ay tatakbo hanggang makumpleto.
Pagkatapos ay susuriin ng Scheduler ang lahat ng mga gawain ng estado at isinasagawa ang susunod na pinakamataas na priyoridad na gawain sa isang Handa estado.
Sa Non-Preemptive Scheduling, kapag ang isang gawain ay may assignment sa CPU, hindi ito maaaring alisin, kahit na ang maikling mga gawain ay kailangang maghintay para sa mas mahahabang gawain upang makumpleto.
Ang pamamahala ng pag-iiskedyul sa lahat ng mga gawain ay "makatarungan" at ang mga oras ng pagtugon ay mahuhulaan na ang mga gawain ng mataas na priyoridad ay hindi maaaring maubusan ng mga paghihintay na gawain sa ibaba ng queue.
Tinitiyak ng Scheduler na ang bawat gawain ay makakakuha ng 'bahagi ng CPU, pag-iwas sa anumang pagkaantala sa anumang gawain. Ang 'dami ng oras' na inilalaan sa CPU ay hindi maaaring maging katumbas, depende kung gaano katagal ang gawain upang makumpleto.
Preemptive Scheduling
Pinahihintulutan ng modelong iskedyul na ito ang mga gawain na magambala - bilang contrast sa Non-Preemptive Scheduling na may "run-to-completion" na diskarte.
Ang mga interrupts, na maaaring sinimulan mula sa mga panlabas na tawag, invokes ang Scheduler upang i-pause ang tumatakbo na gawain upang pamahalaan ang isa pang mas mataas na priyoridad na gawain - kaya maaaring ma-preempted ang kontrol ng CPU.
Ang pinakamataas na priyoridad na gawain sa a Handa Ang estado ay pinaandar, na nagpapahintulot sa mabilis na pagtugon sa mga kaganapan sa real-time.
Ang ilan sa mga kahinaan sa Pag-iiskedyul ng Pag-iiskedyul ay kinabibilangan ng pagtaas ng mga overhead sa mga mapagkukunan kapag gumagamit ng mga interrupts at mga isyu ay maaaring mangyari sa dalawang data sa pagbabahagi ng mga gawain, dahil maaaring maantala ang isa habang ina-update ang mga shared data structure, at maaaring makaapekto sa negatibong data integridad.
Sa kabilang banda, praktikal na ma-pause ang isang gawain upang pamahalaan ang isa pang maaaring maging kritikal.
Sa buod
Maraming mga variance at mga dependency sa iba't ibang mga patakaran ay maaaring tinukoy, tulad ng paggamit ng isang "Patakaran sa Round Robin [i]" kung saan ang bawat gawain (na may pantay na prayoridad) ay tumatakbo nang isang beses, at pagkatapos ay ilagay sa dulo ng pila, para sa susunod na ikot.
Kasama sa iba pang mga patakaran First-In-First-Out, Pinakamaikling-Job-First, Pinakamaikling-Job-Next, Pinakamaliit na Natitirang Oras, atbp.
Ang pagtatasa ng makasaysayang data ay maaaring magbigay ng impormasyon sa mga aspeto, tulad ng rate kung saan dumating ang mga bagong gawain, ang CPU at I / O Bursts atbp kaya ang mga probabilidad na distribusyon ay maaaring makalkula ang mga katangian ng mga oras ng paghihintay ng mga gawain, sa gayon ang pag-aarmas ng mga administrator na may kaugnay na data upang tukuyin ang mga modelo ng pag-iiskedyul.