Operētājsistēmas: trÄ«s vienkārÅ”as daļas. 5. daļa: plānoÅ”ana: vairāku lÄ«meņu atsauksmju rinda (tulkojums)

Ievads operētājsistēmās

Č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:

Citas daļas:

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:
Operētājsistēmas: trÄ«s vienkārÅ”as daļas. 5. daļa: plānoÅ”ana: vairāku lÄ«meņu atsauksmju rinda (tulkojums)

Š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.
Operētājsistēmas: trÄ«s vienkārÅ”as daļas. 5. daļa: plānoÅ”ana: vairāku lÄ«meņu atsauksmju rinda (tulkojums)

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.
Operētājsistēmas: trÄ«s vienkārÅ”as daļas. 5. daļa: plānoÅ”ana: vairāku lÄ«meņu atsauksmju rinda (tulkojums)

Š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Ä«.
Operētājsistēmas: trÄ«s vienkārÅ”as daļas. 5. daļa: plānoÅ”ana: vairāku lÄ«meņu atsauksmju rinda (tulkojums)

Å 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
Operētājsistēmas: trÄ«s vienkārÅ”as daļas. 5. daļa: plānoÅ”ana: vairāku lÄ«meņu atsauksmju rinda (tulkojums)

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:
Operētājsistēmas: trÄ«s vienkārÅ”as daļas. 5. daļa: plānoÅ”ana: vairāku lÄ«meņu atsauksmju rinda (tulkojums)Ā»

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).
Operētājsistēmas: trÄ«s vienkārÅ”as daļas. 5. daļa: plānoÅ”ana: vairāku lÄ«meņu atsauksmju rinda (tulkojums)

Å 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.

Papildu materiāli:

  1. manpages.debian.org/stretch/manpages/sched.7.en.html
  2. en.wikipedia.org/wiki/Scheduling_(skaitļoŔana)
  3. pages.lip6.fr/Julia.Lawall/atc18-bouron.pdf
  4. www.usenix.org/legacy/event/bsdcon03/tech/full_papers/roberson/roberson.pdf
  5. chebykin.org/freebsd-process-scheduling

Avots: www.habr.com

Pievieno komentāru