Äau Habr! Es vÄlos vÄrst jÅ«su uzmanÄ«bu uz vienas, manuprÄt, interesantas literatÅ«ras - OSTEP - rakstu sÄriju-tulkojumiem. Å ajÄ materiÄlÄ diezgan dziļi aplÅ«kots unix lÄ«dzÄ«gu operÄtÄjsistÄmu darbs, proti, darbs ar procesiem, dažÄdiem plÄnotÄjiem, atmiÅu un citiem lÄ«dzÄ«giem komponentiem, kas veido modernu OS. Visu materiÄlu oriÄ£inÄlus varat apskatÄ«t Å”eit Å”eit. LÅ«dzu, Åemiet vÄrÄ, ka tulkojums tika veikts neprofesionÄli (diezgan brÄ«vi), bet es ceru, ka es saglabÄju vispÄrÄjo nozÄ«mi.
Laboratorijas darbus par Å”o tÄmu var atrast Å”eit:
Varat arÄ« apskatÄ«t manu kanÄlu vietnÄ telegramma =)
PlÄnoÅ”ana: vairÄku lÄ«meÅu atsauksmju rinda
Å ajÄ lekcijÄ mÄs runÄsim par problÄmÄm, kas saistÄ«tas ar vienas no slavenÄkajÄm pieejÄm
plÄnoÅ”ana, ko sauc DaudzlÄ«meÅu atsauksmju rinda (MLFQ). MLFQ plÄnotÄju 1962. gadÄ pirmo reizi aprakstÄ«ja Fernando J. Korbato sistÄmÄ ar nosaukumu
SaderÄ«ga laika dalÄ«Å”anas sistÄma (CTSS). Å ie darbi (ieskaitot vÄlÄkos darbus
Multics) pÄc tam tika nominÄti TjÅ«ringa balvai. PlÄnotÄjs bija
pÄc tam uzlaboja un ieguva izskatu, kÄds jau ir atrodams
dažas modernas sistÄmas.
MLFQ algoritms mÄÄ£ina atrisinÄt 2 pamata problÄmas, kas pÄrklÄjas. PirmkÄrt, tÄ mÄÄ£ina optimizÄt aprites laiku, kas, kÄ mÄs runÄjÄm iepriekÅ”ÄjÄ lekcijÄ, tiek optimizÄts ar metodi, kas sÄkas rindas sÄkumÄ.
Ä«si uzdevumi. TomÄr OS nezina, cik ilgi tas vai cits process darbosies, un tas
nepiecieÅ”amÄs zinÄÅ”anas SJF, STCF algoritmu darbÄ«bai. OtrkÄrt, MLFQ mÄÄ£ina
padarÄ«t sistÄmu atsaucÄ«gu lietotÄjiem (piemÄram, tiem, kas sÄž un
skatoties uz ekrÄnu, gaidot, kamÄr uzdevums tiks pabeigts), un tÄdÄjÄdi samazinÄt laiku
atbildi. DiemžÄl tÄdi algoritmi kÄ RR samazina reakcijas laiku, bet
negatÄ«vi ietekmÄ apstrÄdes laika metriku. TÄpÄc mÅ«su problÄma: kÄ noformÄt
plÄnotÄjs, kas atbildÄ«s mÅ«su prasÄ«bÄm un tajÄ paÅ”Ä laikÄ neko nezina
procesa bÅ«tÄ«ba kopumÄ? KÄ plÄnotÄjs var apgÅ«t uzdevumu Ä«paŔības,
ko tÄ uzsÄk un tÄdÄjÄdi pieÅemt labÄkus plÄnoÅ”anas lÄmumus?
ProblÄmas bÅ«tÄ«ba: KÄ plÄnot uzdevumu uzstÄdÄ«Å”anu bez perfektÄm zinÄÅ”anÄm?
KÄ izveidot plÄnotÄju, kas vienlaikus samazina reakcijas laiku
interaktÄ«viem uzdevumiem un tajÄ paÅ”Ä laikÄ samazina apstrÄdes laiku, nezinot
zinÄÅ”anas par uzdevuma izpildes laiku?
PiezÄ«me: mÄs mÄcÄmies no iepriekÅ”Äjiem notikumiem
MLFQ rinda ir lielisks piemÄrs sistÄmai, kas mÄcÄs
pagÄtnes notikumi, lai paredzÄtu nÄkotni. Å Ädas pieejas bieži ir
atrodams operÄtÄjsistÄmÄ (Un daudzÄs citÄs datorzinÄtÅu nozarÄs, ieskaitot filiÄles
aparatÅ«ras prognozes un keÅ”atmiÅas algoritmi). LÄ«dzÄ«gi braucieni
tiek aktivizÄti, ja uzdevumiem ir uzvedÄ«bas fÄzes un tÄdÄjÄdi tie ir paredzami.
TomÄr ar Å”o paÅÄmienu jÄbÅ«t uzmanÄ«giem, jo āāprognozÄÅ”ana ir ļoti vienkÄrÅ”a.
var izrÄdÄ«ties nepareizi un likt sistÄmai pieÅemt sliktÄkus lÄmumus nekÄ
bÅ«tu vispÄr bez zinÄÅ”anÄm.
MLFQ: pamatnoteikumi
Apsveriet MLFQ algoritma pamatnoteikumus. Un, lai gan Ŕī algoritma realizÄcijas
ir vairÄkas, pamata pieejas ir lÄ«dzÄ«gas.
IevieÅ”anÄ, ko mÄs apsvÄrsim, MLFQ bÅ«s vairÄkas
atseviŔķas rindas, no kurÄm katrai bÅ«s atŔķirÄ«ga prioritÄte. JebkurÄ laikÄ,
izpildei gatavs uzdevums atrodas tajÄ paÅ”Ä rindÄ. MLFQ izmanto prioritÄtes,
izlemt, kuru uzdevumu palaist izpildei, t.i. uzdevums ar augstÄku
prioritÄte (uzdevums no rindas ar augstÄko prioritÄti) tiks palaists pirmajÄ
rindÄ.
Protams, noteiktÄ rindÄ var bÅ«t vairÄk nekÄ viens uzdevums, tÄpÄc
tÄpÄc viÅiem bÅ«s tÄda pati prioritÄte. Å ajÄ gadÄ«jumÄ tiks izmantots mehÄnisms
RR palaiÅ”anas plÄnoÅ”anai starp Å”iem uzdevumiem.
TÄdÄjÄdi mÄs nonÄkam pie diviem MLFQ pamatnoteikumiem:
1. noteikums: ja prioritÄte(A) > PrioritÄte(B), uzdevums A tiks izpildÄ«ts (B nedarbosies).
2. noteikums: ja prioritÄte (A) = prioritÄte (B), A&B tiek sÄkta, izmantojot RR
Pamatojoties uz iepriekÅ” minÄto, galvenie elementi MLFQ plÄnoÅ”anÄ ir
ir prioritÄtes. TÄ vietÄ, lai katram pieŔķirtu noteiktu prioritÄti
uzdevums, MLFQ maina savu prioritÄti atkarÄ«bÄ no novÄrotÄs uzvedÄ«bas.
PiemÄram, ja uzdevums pastÄvÄ«gi tiek aizvÄrts CPU, gaidot tastatÅ«ras ievadi,
MLFQ saglabÄs procesa prioritÄti augstu, jo tieÅ”i tÄ
interaktÄ«vajam procesam vajadzÄtu darboties. Ja, gluži pretÄji, uzdevums ir pastÄvÄ«gi un
ir CPU intensÄ«vs ilgu laiku, MLFQ pazeminÄs to
prioritÄte. TÄdÄjÄdi MLFQ pÄtÄ«s procesu uzvedÄ«bu to darbÄ«bas laikÄ.
un izmantot uzvedību.
UzzÄ«mÄsim piemÄru, kÄ varÄtu izskatÄ«ties rindas kÄdÄ brÄ«dÄ«
laiks, un tad jÅ«s saÅemat kaut ko lÄ«dzÄ«gu Å”im:
Å ajÄ shÄmÄ 2 procesi A un B atrodas rindÄ ar augstÄko prioritÄti. Process
C atrodas kaut kur vidÅ«, un process D atrodas rindas paÅ”Ä beigÄs. SaskaÅÄ ar iepriekÅ” minÄto
MLFQ algoritma aprakstus, plÄnotÄjs izpildÄ«s tikai uzdevumus ar augstÄko
prioritÄte saskaÅÄ ar RR, un uzdevumi C, D bÅ«s bez darba.
Protams, statisks momentuzÅÄmums nesniegs pilnÄ«gu priekÅ”statu par MLFQ darbÄ«bu.
Ir svarÄ«gi precÄ«zi saprast, kÄ attÄls laika gaitÄ mainÄs.
1. mÄÄ£inÄjums: kÄ mainÄ«t prioritÄti
Å ajÄ brÄ«dÄ« jums ir jÄizlemj, kÄ MLFQ mainÄ«s prioritÄtes lÄ«meni
uzdevumu (un lÄ«dz ar to uzdevuma pozÄ«ciju rindÄ) tÄ dzÄ«ves cikla laikÄ. PriekÅ”
tas ir nepiecieÅ”ams, lai paturÄtu prÄtÄ darbplÅ«smu: noteiktu summu
interaktÄ«vi uzdevumi ar Ä«su darbÄ«bas laiku (un tÄdÄjÄdi bieža izlaiÅ”ana
CPU) un vairÄkus garus uzdevumus, kas izmanto CPU visu savu darba laiku, kamÄr
reakcijas laiks Å”Ädiem uzdevumiem nav svarÄ«gs. Un tÄpÄc jÅ«s varat veikt pirmo mÄÄ£inÄjumu
ieviest MLFQ algoritmu ar Å”Ädiem noteikumiem:
3. noteikums: kad uzdevums nonÄk sistÄmÄ, tas tiek ievietots rindÄ ar augstÄko
prioritÄte.
4.a noteikums: ja uzdevumam tiek izmantots viss laika logs, tad tas
prioritÄte ir pazeminÄta.
4.b noteikums: ja uzdevums atbrÄ«vo centrÄlo procesoru pirms tÄ laika loga beigÄm, tad tas
paliek ar tÄdu paÅ”u prioritÄti.
1. piemÄrs. Viens ilgstoÅ”s uzdevums
KÄ redzat Å”ajÄ piemÄrÄ, uzÅemÅ”anas uzdevums ir iestatÄ«ts ar visaugstÄko
prioritÄte. PÄc 10 ms laika loga procesa prioritÄte tiek pazeminÄta.
plÄnotÄjs. PÄc nÄkamÄ laika loga uzdevums beidzot tiek pazeminÄts uz
zemÄkÄ prioritÄte sistÄmÄ, kur tÄ paliek.
2. piemÄrs: izvÄlÄjies Ä«su uzdevumu
Tagad apskatÄ«sim piemÄru, kÄ MLFQ mÄÄ£inÄs tuvoties SJF. TajÄ
PiemÄram, divi uzdevumi: A, kas ir ilgstoÅ”s uzdevums, kas pastÄvÄ«gi tiek veikts
aizÅem CPU un B, kas ir Ä«ss interaktÄ«vs uzdevums. PieÅemsim
ka A jau kÄdu laiku bija skrÄjis brÄ«dÄ«, kad ieradÄs uzdevums B.
Å ajÄ grafikÄ parÄdÄ«ti scenÄrija rezultÄti. A uzdevums, tÄpat kÄ jebkurÅ” uzdevums,
CPU izmantoÅ”ana bija paÅ”Ä apakÅ”Ä. Uzdevums B ieradÄ«sies laikÄ T=100 un tiks
ievietots augstÄkÄs prioritÄtes rindÄ. TÄ kÄ darbÄ«bas laiks ir Ä«ss,
tas tiks pabeigts, pirms tas sasniegs pÄdÄjo rindu.
No Ŕī piemÄra jums vajadzÄtu saprast algoritma galveno mÄrÄ·i: jo algoritms to nedara
zina garu vai Ä«su uzdevumu, tad vispirms pieÅem, ka uzdevums
Ä«ss un pieŔķir tai augstÄko prioritÄti. Ja tas tieÅ”Äm ir Ä«ss uzdevums, tad
tas tiks izpildÄ«ts Ätri, pretÄjÄ gadÄ«jumÄ, ja tas ir ilgs uzdevums, tas virzÄ«sies lÄni
prioritÄti uz leju, un drÄ«zumÄ pierÄdÄ«s, ka viÅa patieÅ”Äm ir garÅ” uzdevums, kas nav
prasa atbildi.
3. piemÄrs. KÄ ar I/O?
Tagad apskatÄ«sim I/O piemÄru. KÄ norÄdÄ«ts 4.b noteikumÄ,
ja process atbrÄ«vo procesoru, pilnÄ«bÄ neizmantojot savu procesora laiku,
tad tas paliek tajÄ paÅ”Ä prioritÄtes lÄ«menÄ«. Å Ä« noteikuma mÄrÄ·is ir diezgan vienkÄrÅ”s.
- ja interaktÄ«vais darbs veic daudz I/O, piemÄram, gaida
no lietotÄja taustiÅsitieniem vai peles, Å”Äds uzdevums atbrÄ«vos procesoru
pirms atvÄlÄtÄ loga. MÄs negribÄtu izlaist Å”Ädu prioritÄru uzdevumu,
un tÄdÄjÄdi tas paliks tajÄ paÅ”Ä lÄ«menÄ«.
Å ajÄ piemÄrÄ parÄdÄ«ts, kÄ algoritms darbotos ar Å”Ädiem procesiem - interaktÄ«vais uzdevums B, kuram CPU nepiecieÅ”ams tikai 1 ms pirms izpildes
I/O process un ilgs darbs A, kas visu laiku izmanto centrÄlo procesoru.
MLFQ saglabÄ procesam B visaugstÄko prioritÄti, kÄ tas turpinÄs
atlaidiet centrÄlo procesoru. Ja B ir interaktÄ«vs uzdevums, tad algoritms Å”ajÄ gadÄ«jumÄ ir sasniedzis
tÄ mÄrÄ·is ir Ätri uzsÄkt interaktÄ«vus uzdevumus.
ProblÄmas ar paÅ”reizÄjo MLFQ algoritmu
IepriekÅ”Äjos piemÄros mÄs esam izveidojuÅ”i MLFQ pamata versiju. Un Ŕķiet, ka viÅÅ”
labi un godīgi veic savu darbu, godīgi sadalot CPU laiku starp
gari uzdevumi un atļaut īsus uzdevumus vai uzdevumus, kuriem ir liela piekļuve
Ätri strÄdÄt pie I/O. DiemžÄl Ŕī pieeja ietver vairÄkus
nopietnas problÄmas. PirmkÄrt, bada problÄma: ja sistÄmai bÅ«s daudz interaktÄ«vu
uzdevumiem, tie patÄrÄs visu CPU laiku un tÄdÄjÄdi ne vienu ilgi
uzdevums nesaÅems iespÄju tikt izpildÄ«ts (viÅi ir badÄ).
OtrkÄrt, viedie lietotÄji varÄtu rakstÄ«t savas programmas tÄ, lai
apmÄnÄ«t plÄnotÄju. MaldinÄÅ”ana slÄpjas tajÄ, ka kaut ko dara, lai piespiestu
plÄnotÄju, lai procesam pieŔķirtu vairÄk CPU laika. Algoritms, kas
iepriekÅ” aprakstÄ«tais ir diezgan neaizsargÄts pret Å”Ädiem uzbrukumiem: pirms laika loga praktiski nav
beigÄs, jums ir jÄveic I/O darbÄ«ba (dažiem neatkarÄ«gi no faila)
un tÄdÄjÄdi atbrÄ«vojiet centrÄlo procesoru. Å Äda uzvedÄ«ba ļaus jums palikt tajÄ paÅ”Ä stÄvoklÄ«
pati rinda un atkal iegÅ«t lielÄku CPU laika procentu. Ja jÅ«s to darÄt
tas ir pareizi (piemÄram, palaidiet 99% loga laika pirms CPU atlaiÅ”anas),
Å”Äds uzdevums var vienkÄrÅ”i monopolizÄt procesoru.
Visbeidzot, programma laika gaitÄ var mainÄ«t savu uzvedÄ«bu. Tie uzdevumi
kas izmantoja centrÄlo procesoru, var kļūt interaktÄ«vs. MÅ«su piemÄrÄ lÄ«dzÄ«gi
uzdevumi netiks pienÄcÄ«gi apstrÄdÄti no plÄnotÄja, kÄ to darÄ«tu citi
(sÄkotnÄjie) interaktÄ«vie uzdevumi.
JautÄjums auditorijai: kÄdus uzbrukumus plÄnotÄjam varÄtu veikt mÅ«sdienu pasaulÄ?
2. mÄÄ£inÄjums: palieliniet prioritÄti
MÄÄ£inÄsim mainÄ«t noteikumus un redzÄt, vai mÄs varam izvairÄ«ties no problÄmÄm ar
bads. Ko mÄs varam darÄ«t, lai nodroÅ”inÄtu, ka tas ir saistÄ«ts
CPU uzdevumi saÅems savu laiku (pat ja ne ilgi).
KÄ vienkÄrÅ”u problÄmas risinÄjumu varat periodiski ieteikt
palielinÄt visu Å”Ädu uzdevumu prioritÄti sistÄmÄ. Ir daudz veidu
lai to panÄktu, mÄÄ£inÄsim Ä«stenot kaut ko vienkÄrÅ”u kÄ piemÄru: tulkot
visiem uzdevumiem vienlaikus ir augstÄkÄ prioritÄte, tÄpÄc jaunais noteikums:
5. noteikums: PÄc kÄda perioda S pÄrsÅ«tiet visus uzdevumus sistÄmÄ uz augstÄko rindu.
MÅ«su jaunais noteikums vienlaikus atrisina divas problÄmas. PirmkÄrt, procesi
garantÄts, ka nenomirs badÄ: uzdevumi augstÄkajÄ rindÄ dalÄ«sies
procesora laiks saskaÅÄ ar RR algoritmu un tÄdÄjÄdi visi procesi saÅems
procesora laiks. OtrkÄrt, ja kÄds process, kas iepriekÅ” izmantots
tikai procesors kļūst interaktÄ«vs, tas paliks rindÄ ar augstÄko
prioritÄte pÄc tam, kad vienreiz ir saÅemts paaugstinÄjums uz augstÄko prioritÄti.
Apsveriet piemÄru. Å ajÄ scenÄrijÄ apsveriet iespÄju izmantot vienu procesu
CPU un divi interaktÄ«vi, Ä«si procesi. AttÄla kreisajÄ pusÄ parÄdÄ«ta darbÄ«ba bez prioritÄtes palielinÄÅ”anas, un tÄdÄjÄdi ilgstoÅ”i darbojas uzdevums sÄk izzust pÄc tam, kad sistÄmÄ nonÄk divi interaktÄ«vi uzdevumi. LabajÄ attÄlÄ ik pÄc 50 ms tiek veikts prioritÄtes palielinÄjums, un tÄdÄjÄdi visi procesi tiek garantÄti procesora laika saÅemÅ”anai un tiks periodiski palaisti. 50 ms Å”ajÄ gadÄ«jumÄ tiek Åemts par piemÄru, patiesÄ«bÄ Å”is skaitlis ir nedaudz lielÄks.
Ir acÄ«mredzams, ka periodiskÄ pieauguma laika S pievienoÅ”ana noved pie
loÄ£isks jautÄjums: kÄda vÄrtÄ«ba ir jÄiestata? Viens no pelnÄ«tajiem
sistÄmu inženieri Džons Ousterhouts atsaucÄs uz lÄ«dzÄ«giem daudzumiem sistÄmÄs kÄ voo-doo
nemainÄ«gs, jo tie kaut kÄdÄ veidÄ prasÄ«ja melno maÄ£iju pareizai darbÄ«bai
iedarbÄ«ba. Un diemžÄl S ir tÄda garÅ”a. Ja iestatÄt arÄ« vÄrtÄ«bu
lieli - gari uzdevumi nomirs. Un, ja jÅ«s to iestatÄt pÄrÄk zemu,
interaktÄ«vie uzdevumi nesaÅems pienÄcÄ«gu CPU laiku.
3. mÄÄ£inÄjums: labÄka grÄmatvedÄ«ba
Tagad mums ir jÄatrisina vÄl viena problÄma: kÄ to nedarÄ«t
ļaut apkrÄpt mÅ«su plÄnotÄju? Å Ä«s iespÄjas vainÄ«gie ir
4.a un 4.b noteikumi, kas ļauj darbam saglabÄt savu prioritÄti, atbrÄ«vojot procesoru
pirms noteiktÄ laika beigÄm. KÄ ar to tikt galÄ?
Par risinÄjumu Å”ajÄ gadÄ«jumÄ var uzskatÄ«t labÄku CPU laika uzskaiti katrÄ
MLFQ lÄ«menis. TÄ vietÄ, lai aizmirstu programmas izmantoto laiku
procesoru pieŔķirtajam intervÄlam, jums tas jÄÅem vÄrÄ un jÄsaglabÄ. PÄc
process ir iztÄrÄjis atvÄlÄto laiku, tas ir jÄpazemina uz nÄkamo
prioritÄtes lÄ«menis. Tagad nav svarÄ«gi, kÄ process izmantos savu laiku ā kÄ
pastÄvÄ«gi skaitļo procesorÄ vai kÄ zvanu kopums. TÄdÄjÄdi
4. noteikums ir jÄpÄrraksta Å”Ädi:
4. noteikums: pÄc tam, kad uzdevums ir iztÄrÄjis atvÄlÄto laiku paÅ”reizÄjÄ rindÄ (neatkarÄ«gi no tÄ, cik reižu tas atbrÄ«voja centrÄlo procesoru), Å”Äda uzdevuma prioritÄte tiek samazinÄta (tas pÄrvietojas rindÄ uz leju).
ApskatÄ«sim piemÄru:
Ā»
AttÄlÄ parÄdÄ«ts, kas notiek, ja mÄÄ£inÄt piemÄnÄ«t plÄnotÄju
ja tas bÅ«tu ar iepriekÅ”Äjiem noteikumiem 4a, 4b bÅ«tu rezultÄts kreisajÄ pusÄ. Ar jaunu
noteikums ir tÄds, ka rezultÄts ir labajÄ pusÄ. Pirms aizsardzÄ«bas jebkurÅ” process varÄja izsaukt I/O pirms pabeigÅ”anas un
tÄdÄjÄdi dominÄ CPU pÄc aizsardzÄ«bas iespÄjoÅ”anas neatkarÄ«gi no uzvedÄ«bas
I/O, viÅÅ” joprojÄm iestÄsies rindÄ un tÄdÄjÄdi nevarÄs negodÄ«gi
pÄrÅemt CPU resursus.
MLFQ un citu problÄmu uzlaboÅ”ana
Ar iepriekÅ”minÄtajiem uzlabojumiem rodas jaunas problÄmas: viena no galvenajÄm
JautÄjumi - kÄ parametrizÄt Å”Ädu plÄnotÄju? Tie. Cik vajadzÄtu bÅ«t
rindas? KÄdam jÄbÅ«t programmas loga izmÄram rindÄ? KÄ
programmai bieži vien bÅ«tu jÄnosaka prioritÄte, lai izvairÄ«tos no bada un
lai Åemtu vÄrÄ izmaiÅas programmas darbÄ«bÄ? Uz Å”iem jautÄjumiem nav vienkÄrÅ”a
reakcija un tikai eksperimenti ar slodzÄm un turpmÄko konfigurÄciju
plÄnotÄjs var radÄ«t apmierinoÅ”u lÄ«dzsvaru.
PiemÄram, lielÄkÄ daļa MLFQ implementÄciju ļauj pieŔķirt dažÄdus
laika niÅ”as dažÄdÄm rindÄm. Parasti ir augstas prioritÄtes rindas
Ä«si intervÄli. Å Ä«s rindas sastÄv no interaktÄ«viem uzdevumiem,
pÄrslÄgÅ”anÄs starp kurÄm ir diezgan jutÄ«ga, un tai vajadzÄtu ilgt 10 vai mazÄk
jaunkundze. Turpretim zemas prioritÄtes rindas sastÄv no ilgstoÅ”iem uzdevumiem, kas tiek izmantoti
PROCESORS. Un Å”ajÄ gadÄ«jumÄ Ä¼oti labi iederas garie laika intervÄli (100ms).
Å ajÄ piemÄrÄ ir 2 uzdevumi, kas ir darbojuÅ”ies augstas prioritÄtes rindÄ 20
ms, sadalÄ«ts 10 ms logos. 40 ms vidÄjÄ rindÄ (20 ms logÄ) un zemajÄ prioritÄtÄ
rindas laika logs kļuva par 40 ms, kurÄ uzdevumi pabeidza savu darbu.
MLFQ ievieÅ”ana operÄtÄjsistÄmÄ Solaris ir laika koplietoÅ”anas plÄnotÄju klase.
PlÄnotÄjs nodroÅ”inÄs tabulu kopu, kas precÄ«zi nosaka, kÄ tam vajadzÄtu bÅ«t
mainÄ«t procesa prioritÄti visÄ tÄ dzÄ«ves laikÄ, kÄdam jÄbÅ«t izmÄram
logs, kas jÄpieŔķir un cik bieži jÄpaaugstina uzdevumu prioritÄtes. Administrators
sistÄma var mijiedarboties ar Å”o tabulu un likt plÄnotÄjam darboties
savÄdÄk. PÄc noklusÄjuma Å”ajÄ tabulÄ ir 60 rindas ar pakÄpenisku pieaugumu
loga izmÄrs no 20 ms (augsta prioritÄte) lÄ«dz vairÄkiem simtiem ms (zemÄkÄ prioritÄte) un
arÄ« ar visu uzdevumu palielinÄÅ”anu reizi sekundÄ.
Citi MLFQ plÄnotÄji neizmanto tabulu vai kÄdu konkrÄtu
noteikumi, kas ir aprakstÄ«ti Å”ajÄ lekcijÄ, gluži pretÄji, viÅi aprÄÄ·ina prioritÄtes, izmantojot
matemÄtiskÄs formulas. PiemÄram, FreeBSD plÄnotÄjs izmanto formulu
paÅ”reizÄjÄs uzdevuma prioritÄtes aprÄÄ·inÄÅ”ana, pamatojoties uz procesa apjomu
izmantoja centrÄlo procesoru. TurklÄt CPU lietojums laika gaitÄ sabojÄjas, un lÄ«dz ar to
TÄdÄjÄdi prioritÄtes palielinÄjums nedaudz atŔķiras no iepriekÅ” aprakstÄ«tÄ. TÄ ir patiesÄ«ba
sauc par samazinÄjuma algoritmiem. SÄkot ar versiju 7.1, FreeBSD izmanto ULE plÄnotÄju.
Visbeidzot, daudziem plÄnotÄjiem ir arÄ« citas funkcijas. PiemÄram, daži
plÄnotÄji rezervÄ augstÄkus lÄ«meÅus operÄtÄjsistÄmas darbÄ«bai un tÄdÄjÄdi
TÄdÄjÄdi neviens lietotÄja process nevar iegÅ«t augstÄko prioritÄti
sistÄma. Dažas sistÄmas ļauj jums sniegt padomus, lai palÄ«dzÄtu
plÄnotÄjs, lai pareizi noteiktu prioritÄtes. PiemÄram, izmantojot komandu jauki
varat palielinÄt vai samazinÄt uzdevuma prioritÄti un tÄdÄjÄdi palielinÄt vai
samazinÄtu programmas izredzes uz CPU laiku.
MLFQ: kopsavilkums
MÄs esam aprakstÄ«juÅ”i plÄnoÅ”anas pieeju, ko sauc par MLFQ. ViÅa vÄrds
ietverts darbÄ«bas principÄ - tajÄ ir vairÄkas rindas un tiek izmantota atgriezeniskÄ saite
lai noteiktu uzdevumu prioritÄti.
Noteikumu galÄ«gÄ forma bÅ«s Å”Äda:
1. noteikums: ja prioritÄte (A) > PrioritÄte (B), uzdevums A tiks izpildÄ«ts (B nedarbosies)
2. noteikums: Ja prioritÄte(A) = PrioritÄte(B), A&B tiek palaists, izmantojot RR
3. noteikums: Kad uzdevums nonÄk sistÄmÄ, tas tiek ievietots augstÄkÄs prioritÄtes rindÄ.
4. noteikums: pÄc tam, kad uzdevums ir iztÄrÄjis atvÄlÄto laiku paÅ”reizÄjÄ rindÄ (neatkarÄ«gi no tÄ, cik reižu tas atbrÄ«voja centrÄlo procesoru), Å”Äda uzdevuma prioritÄte tiek samazinÄta (tas pÄrvietojas rindÄ uz leju).
5. noteikums: PÄc kÄda perioda S pÄrsÅ«tiet visus uzdevumus sistÄmÄ uz augstÄko rindu.
MLFQ ir interesants Å”Äda iemesla dÄļ - tÄ vietÄ, lai pieprasÄ«tu zinÄÅ”anas par
uzdevuma raksturs iepriekÅ”, algoritms apgÅ«st uzdevuma un kopu pagÄtnes uzvedÄ«bu
prioritÄtes. TÄdÄjÄdi viÅÅ” mÄÄ£ina sÄdÄt uz diviem krÄsliem vienlaikus - lai sasniegtu veiktspÄju maziem uzdevumiem (SJF, STCF) un godÄ«gi skrietu garus,
CPU ielÄdes darbi. TÄpÄc daudzas sistÄmas, tostarp BSD un to atvasinÄjumi,
Solaris, Windows, Mac izmanto kÄdu algoritmu kÄ plÄnotÄju
MLFQ kÄ bÄzes lÄ«nija.