OperĂĄciĂłs rendszerek: HĂĄrom egyszerƱ rĂ©sz. 5. rĂ©sz: ÜtemezĂ©s: Több szintƱ visszajelzƑ sor (fordĂ­tĂĄs)

Bevezetés az operåciós rendszerekbe

HellĂł, Habr! SzeretnĂ©m bemutatni nektek egy Ă©rdekes cikk-sorozat fordĂ­tĂĄsĂĄt, amely az Ă©n vĂ©lemĂ©nyem szerint izgalmas irodalom — OSTEP. Ebben az anyagban elĂ©g mĂ©lyen megvizsgĂĄljuk az unix-szerƱ operĂĄciĂłs rendszerek mƱködĂ©sĂ©t, kĂŒlönösen a folyamatokkal, kĂŒlönbözƑ ĂŒtemezƑkkel, memĂłriĂĄval Ă©s hasonlĂł összetevƑkkel foglalkozunk, amelyek alkotjĂĄk a modern OS-t. Az összes anyag eredeti vĂĄltozatĂĄt itt lĂĄthatjĂĄtok itt. KĂ©rlek vegyĂ©tek figyelembe, hogy a fordĂ­tĂĄs szakĂ©rtelem nĂ©lkĂŒli (elĂ©g szabad), de remĂ©lem, az ĂĄltalĂĄnos Ă©rtelemben megmaradt.

A tantĂĄrgyhoz kapcsolĂłdĂł laboratĂłriumi munkĂĄk itt talĂĄlhatĂłk:

Egyéb részek:

Emellett lĂĄtogathattok el a csatornĂĄmra a telegramon =)

ÜtemezĂ©s: TöbbszintƱ VisszajelzƑ Sor

Ebben az elƑadĂĄsban a legjobban ismert ĂŒtemezĂ©si megközelĂ­tĂ©s fejlesztĂ©si problĂ©mĂĄirĂłl fogunk beszĂ©lni, amelyet
TöbbszintƱ VisszajelzƑ Sor-nak MLFQ-nak neveznek. Az MLFQ ĂŒtemezƑt elƑször 1962-ben Fernando J. CorbatĂł Ă­rta le egy Kompatibilis IdƑmegosztĂł Rendszer (CTSS) nevƱ rendszerben. Ezek a munkĂĄk (beleĂ©rtve a Multics kĂ©sƑbbi munkĂĄit) kĂ©sƑbb a Turing-dĂ­jra kerĂŒltek. Az ĂŒtemezƑ
kĂ©sƑbb tovĂĄbbfejlesztĂ©sre kerĂŒlt, Ă©s olyan formĂĄt öltött, amely mĂĄr megtalĂĄlhatĂł
néhåny modern rendszerben.
Az MLFQ algoritmus megprĂłbĂĄlja megoldani 2 alapvetƑ, ĂĄtfedƑ problĂ©mĂĄt.
MegprĂłbĂĄlja optimalizĂĄlni a fordulĂĄsi idƑt, amelyet, ahogy azt a korĂĄbbi elƑadĂĄsban ĂĄttekintettĂŒk, a legrövidebb feladatok elejĂ©n valĂł ĂŒtemezĂ©s mĂłdszerĂ©vel optimalizĂĄlnak. Azonban az operĂĄciĂłs rendszer nem tudja, hogy egy folyamat mennyi ideig fog futni, ez pedig

szĂŒksĂ©ges tudĂĄs az SJF Ă©s STCF algoritmusokhoz.
ElƑször isAz MLFQ megprĂłbĂĄlja
visszajelzƑvĂ© tenni a rendszert a felhasznĂĄlĂłk szĂĄmĂĄra (pĂ©ldĂĄul azok szĂĄmĂĄra, akik ott ĂŒlnek Ă©s
bĂĄmuljĂĄk a kĂ©pernyƑt a feladat befejezĂ©sĂ©re vĂĄrva), Ă­gy minimalizĂĄlva a SecondlyvĂĄlaszidƑt. Sajnos az olyan algoritmusok, mint a RR, csökkentik a vĂĄlaszidƑt, de rendkĂ­vĂŒl
rosszul hatnak a fordulĂĄsi idƑ mĂ©retĂ©re. Innen adĂłdik a problĂ©mĂĄnk: Hogyan tervezhetĂŒnk
olyan ĂŒtemezƑt, amely megfelel az igĂ©nyeinknek anĂ©lkĂŒl, hogy bĂĄrmilyen tudĂĄssal bĂ­rnĂĄnk a
folyamat termĂ©szetĂ©rƑl, ĂĄltalĂĄban? Hogyan tud az ĂŒtemezƑ tanulmĂĄnyozni a feladatok jellemzƑit,
amelyeket indĂ­t, Ă©s Ă­gy jobban döntĂ©seket hozni az ĂŒtemezĂ©srƑl?
A problĂ©ma lĂ©nyege: Hogyan ĂŒtemezhetĂŒnk feladatokat ideĂĄlis tudĂĄs nĂ©lkĂŒl?
Hogyan fejleszthetĂŒnk olyan ĂŒtemezƑt, amely egyszerre minimalizĂĄlja a vĂĄlaszidƑt
az interaktĂ­v feladatok szĂĄmĂĄra, Ă©s ugyanakkor minimalizĂĄlja a fordulĂĄsi idƑt anĂ©lkĂŒl, hogy elƑre tudnĂĄnk a feladat vĂ©grehajtĂĄsi idejĂ©t?

MegjegyzĂ©s: tanulunk a korĂĄbbi esemĂ©nyekbƑl.
Az MLFQ sor egy remek példåja egy olyan rendszernek, amely a
mĂșlt esemĂ©nyein tanul, hogy elƑre jelezze a jövƑt. Az ilyen megközelĂ­tĂ©sek gyakran
megtalålhatók az operåciós rendszerekben (és sok mås informatikai ågazatban, beleértve a

hardver- Ă©s gyorsĂ­tĂłtĂĄr algoritmusok elƑrejelzĂ©seit). Az ilyen megközelĂ­tĂ©sek

akkor mƱködnek, amikor a feladatoknak viselkedési fåzisaik vannak, és így kiszåmíthatók.
esemĂ©nyek, hogy elƑre jelezzĂŒk a jövƑt. Az ilyen megközelĂ­tĂ©sek gyakran
megfigyelhetƑk operĂĄciĂłs rendszerekben (Ă©s sok mĂĄs terĂŒleten az informatikĂĄban, beleĂ©rtve az ĂĄgazatokat
elƑrejelzĂ©sek az eszközökben Ă©s a cache algoritmusokban). Az ilyen megközelĂ­tĂ©sek
akkor mƱködnek, amikor a feladatok viselkedĂ©si fĂĄzisokkal rendelkeznek, Ă©s Ă­gy elƑrejelezhetƑk.
Azonban ezzel a technológiåval óvatosnak kell lenni, mert a jóslatok nagyon könnyen
hibåsak lehetnek, és a rendszert a legrosszabb döntések meghozatalåra késztethetik, mint
ha egyåltalån nem lennének ismeretek.

MLFQ: AlapvetƑ Szabályok

Vizsgáljuk meg az MLFQ algoritmus alapvetƑ szabályait. Bár ennek az algoritmusnak
több megvalĂłsĂ­tĂĄsa lĂ©tezik, az alapvetƑ megközelĂ­tĂ©sek hasonlĂłak.
Az åltalam tårgyalt megvalósítåsban az MLFQ-ban több
kĂŒlönbözƑ prioritĂĄsĂș sor lesz. Minden pillanatban
a végrehajtåsra kész feladat egy sorban talålható. Az MLFQ prioritåsokat hasznål
annak eldöntĂ©sĂ©re, hogy melyik feladatot indĂ­tsuk el, azaz a magasabb prioritĂĄsĂș
(a legmagasabb prioritĂĄsĂș sorbĂłl szĂĄrmazĂł feladat) kerĂŒl elsƑkĂ©nt
végrehajtåsra.
Bizonyåra egy adott sorban több feladat is talålható, így
egyenlƑ prioritással rendelkeznek. Ebben az esetben az RR mechanizmus
fogja megszervezni a feladatok végrehajtåsåt.
Így kĂ©t alapvetƑ szabĂĄlyhoz Ă©rkezĂŒnk az MLFQ-hoz:

  • SzabĂĄly1: Ha prioritĂĄs(A) > prioritĂĄs(B), A feladat kerĂŒl vĂ©grehajtĂĄsra (B nem)
  • SzabĂĄly2: Ha prioritĂĄs(A) = prioritĂĄs(B), A Ă©s B az RR hasznĂĄlatĂĄval kerĂŒlnek vĂ©grehajtĂĄsra

A fentiek alapjĂĄn a prioritĂĄsok kulcsfontossĂĄgĂș elemei az MLFQ tervezĂ©sĂ©nek
Ahelyett, hogy fix prioritåst rendelnénk minden
feladathoz, az MLFQ a megfigyelt viselkedés alapjån módosítja a prioritåsåt.
Példåul, ha egy feladat folyamatosan CPU-t vår beviteli mƱveletre,
az MLFQ magas szinten tartja a folyamat prioritĂĄsĂĄt, mivel az interaktĂ­v folyamat
így kell mƱködjön. Ha azonban egy feladat folyamatosan és
intenzĂ­ven hasznĂĄlja a CPU-t hosszĂș ideig, az MLFQ csökkenti a
prioritĂĄsĂĄt. Így az MLFQ tanulmĂĄnyozza a folyamatok viselkedĂ©sĂ©t mƱködĂ©sĂŒk sorĂĄn
Ă©s az alapjĂĄn hasznĂĄlja Ƒket.
Rajzoljunk egy példåt arra, hogyan nézhetnének ki a sorok egy adott pillanatban
és akkor valami ilyesmi lenne:
OperĂĄciĂłs rendszerek: HĂĄrom egyszerƱ rĂ©sz. 5. rĂ©sz: ÜtemezĂ©s: Több szintƱ visszajelzƑ sor (fordĂ­tĂĄs)

Ebben a tĂĄblĂĄzatban 2 A Ă©s B folyamat talĂĄlhatĂł a legmagasabb prioritĂĄsĂș sorban. A C folyamat
valahol a középen, míg a D folyamat a sor végén talålható. Az MLFQ algoritmusånak leíråsai szerint
a tervezƑ csak a legmagasabb prioritĂĄsĂș feladatokat hajtja vĂ©gre.
prioritås szerint RR, míg a C és D feladatok nem kapnak figyelmet.
Természetesen a statikus pillanatkép nem ad teljes képet arról, hogyan mƱködik az MLFQ.
Fontos megĂ©rteni, hogy pontosan hogyan vĂĄltozik a kĂ©p az idƑ elƑrehaladtĂĄval.

PrĂłbĂĄlkozĂĄs 1: Hogyan vĂĄltoztathatĂł a prioritĂĄs

Ebben a pillanatban el kell döntenĂŒnk, hogy az MLFQ hogyan fogja vĂĄltoztatni a prioritĂĄsi szintet
a feladatok (és így a feladat helyzete a sorban) életciklusa sorån. Ehhez
tartani kell Ă©szben a munkafolyamatot: bizonyos szĂĄmĂș
interaktĂ­v feladatot rövid vĂ©grehajtĂĄsi idƑvel (Ă©s Ă­gy gyakori CPU felszabadĂ­tĂĄssal)
és néhåny hosszabb feladatot, amelyek teljes mértékben kihasznåljåk a CPU-t, miközben
az ilyen feladatok esetĂ©ben a vĂĄlaszidƑ nem fontos. Így tehetjĂŒk meg az elsƑ kĂ­sĂ©rletet
az MLFQ algoritmus megvalĂłsĂ­tĂĄsĂĄra a következƑ szabĂĄlyokkal:

  • Rule3: Amikor egy feladat a rendszerbe Ă©rkezik, a legmagasabb prioritĂĄsĂș sorba
  • kerĂŒl.
  • Rule4a: Ha a feladat teljes mĂ©rtĂ©kben kihasznĂĄlja az erre a feladatra elƑírt idƑablakot, akkor
  • prioritĂĄsa csökken.
  • Rule4b: Ha a Feladat a CPU-t a megadott idƑablak lejĂĄrta elƑtt felszabadĂ­tja, akkor
  • megmarad a korĂĄbbi prioritĂĄsĂĄn.

PĂ©lda 1: Egyetlen hosszĂștĂĄvĂș feladat

Ahogyan ebben a példåban låtható, a feladat a legmagasabb
prioritĂĄssal Ă©rkezik. A 10 ms idƑablak utĂĄn a prioritĂĄs csökken
a tervezƑ ĂĄltal. A következƑ idƑablak utĂĄn a feladat vĂ©gĂŒl a
legalacsonyabb prioritåsra csökken a rendszerben, ahol tovåbbra is marad.
OperĂĄciĂłs rendszerek: HĂĄrom egyszerƱ rĂ©sz. 5. rĂ©sz: ÜtemezĂ©s: Több szintƱ visszajelzƑ sor (fordĂ­tĂĄs)

PĂ©lda 2: Érkezik egy rövid feladat

Most nĂ©zzĂŒk meg azt a pĂ©ldĂĄt, ahogyan az MLFQ megprĂłbĂĄl közelĂ­teni az SJF-hez. Ebben a
pĂ©ldĂĄban kĂ©t feladat van: A, amely egy hosszĂș futĂĄsĂș feladat, amely folyamatosan
kihasznĂĄlja a CPU-t, Ă©s B, amely egy rövid interaktĂ­v feladat. TegyĂŒk fel,
hogy A mår dolgozott egy ideje, amikor B feladat érkezik.
OperĂĄciĂłs rendszerek: HĂĄrom egyszerƱ rĂ©sz. 5. rĂ©sz: ÜtemezĂ©s: Több szintƱ visszajelzƑ sor (fordĂ­tĂĄs)

A grafikonon låthatóak a szcenårió eredményei. Az A feladat, mint bårmelyik feladat,
amely hasznĂĄlja a CPU-t, alul talĂĄlhatĂł. A B feladat a T=100 idƑpontban Ă©rkezik Ă©s
a legmagasabb prioritĂĄsĂș sorba kerĂŒl. Mivel a vĂ©grehajtĂĄsi ideje kicsi,
ezt a legutolsĂł sorba Ă©rĂ©s elƑtt befejezi.

EbbƑl a pĂ©ldĂĄbĂłl következtetni lehet a algoritmus fƑ cĂ©ljĂĄra: mivel az algoritmus nem
tudja, hogy egy feladat hosszĂș vagy rövid, elsƑdlegesen azt feltĂ©telezi, hogy a feladat
rövid és a legmagasabb prioritåst ad neki. Ha ez valóban egy rövid feladat, akkor
gyorsan elvĂ©gzƑdik, ellenkezƑ esetben, ha ez egy hosszĂș feladat, akkor lassan fog haladni
az alacsonyabb prioritĂĄs mellett, Ă©s hamarosan igazolni fogja, hogy ez valĂłban egy hosszĂș feladat, amely nem
igényel visszajelzést.

Példa 3: Mi a helyzet a bemenettel és kimenettel?

Most nĂ©zzĂŒk meg a bemenet-kimenettel kapcsolatos pĂ©ldĂĄt. Ahogy a 4b szabĂĄlyban ĂĄll,
ha egy folyamat felszabadĂ­tja a processzort, anĂ©lkĂŒl, hogy teljesen kihasznĂĄlta volna a processzori idƑt,
akkor az ugyanazon a prioritĂĄsi szinten marad. Ennek a szabĂĄlynak a szĂĄndĂ©ka meglehetƑsen egyszerƱ
— ha egy interaktĂ­v feladat sok bemeneti kimeneti mƱveletet hajt vĂ©gre, pĂ©ldĂĄul vĂĄrakozik
a felhasznĂĄlĂł billentyƱleĂŒtĂ©seire vagy az egĂ©rre, egy ilyen feladat korĂĄbban felszabadĂ­tja a processzort
a kijelölt ablakbĂłl. Nem szeretnĂ©nk, ha egy ilyen feladat prioritĂĄsban lejjebb kerĂŒlne,
ezért ugyanazon a szinten marad.
OperĂĄciĂłs rendszerek: HĂĄrom egyszerƱ rĂ©sz. 5. rĂ©sz: ÜtemezĂ©s: Több szintƱ visszajelzƑ sor (fordĂ­tĂĄs)

Ez a pĂ©lda megmutatja, hogyan mƱködik az algoritmus ezekkel a folyamatokkal — a B interaktĂ­v feladat, amelynek csak 1 ms-ra van szĂŒksĂ©ge a CPU-ra a bemeneti kimeneti folyamat vĂ©grehajtĂĄsa elƑtt,
Ă©s az A hosszĂș feladat, amely folyamatosan hasznĂĄlja a CPU-t.
Az MLFQ a B folyamatot a legmagasabb prioritĂĄson tartja, mivel az folyamatosan
felszabadítja a CPU-t. Ha B egy interaktív feladat, akkor az algoritmus ebben az esetben elérte
céljåt, hogy gyorsan indítson interaktív feladatokat.

A jelenlegi MLFQ algoritmus problémåi

Az elƑzƑ pĂ©ldĂĄkban egy alapvetƑ MLFQ modellt Ă©pĂ­tettĂŒnk. És Ășgy tƱnik, hogy jĂłl Ă©s tisztessĂ©gesen mƱködik,
igazsĂĄgosan osztva a processzori idƑt a hosszĂș feladatok között, Ă©s lehetƑvĂ© tĂ©ve a rövid feladatok szĂĄmĂĄra, vagy azok szĂĄmĂĄra, amelyek intenzĂ­ven hasznĂĄljĂĄk
a bemeneti kimenetet, hogy gyorsan dolgozhassanak. Sajnos, ez a megközelítés néhåny
komoly problémåt tartalmaz.
, az éhség problémåja: ha a rendszerben sok interaktív
ElƑször isfeladat van, akkor ezek el fogjĂĄk fogyasztani az összes processzori idƑt, Ă­gy egyik hosszĂș
feladat sem fog lehetƑsĂ©get kapni a vĂ©grehajtĂĄsra (Ă©heznek).
, okos felhasznĂĄlĂłk kĂ©pesek lennĂ©nek Ășgy Ă­rni programjaikat, hogy

SecondlyĂĄtverjĂ©k az ĂŒtemezƑt. Az ĂĄtverĂ©s lĂ©nyege, hogy valamit Ășgy csinĂĄljanak, hogy
az ĂŒtemezƑ több processzori idƑt adjon a folyamatnak. Az algoritmus, amely
ĂŒtemezƑ, hogy több processzorkapacitĂĄst biztosĂ­tson a folyamata szĂĄmĂĄra. Az algoritmus, amely
a fent említett módszer teljesen sebezhetƑ az ilyen támadásokkal szemben: mielƑtt a idƑablak szinte
lejårna, végre kell hajtani egy bemeneti-kimeneti mƱveletet (akårhol, teljesen mindegy, melyik fåjlon)
Ă©s Ă­gy szabaddĂĄ tenni a CPU-t. Az ilyen viselkedĂ©s lehetƑvĂ© teszi, hogy ugyanabban
a sorban maradjunk, Ă©s ismĂ©t nagyobb szĂĄzalĂ©kos arĂĄnyt kapjunk a processzori idƑbƑl. Ha ezt
helyesen vĂ©gezzĂŒk el (pĂ©ldĂĄul, 99%-ban vĂ©grehajtva az idƑablakot a CPU felszabadĂ­tĂĄsa elƑtt),
akkor a feladat egyszerƱen monopolizålhatja a processzort.

VĂ©gĂŒl a programok idƑvel megvĂĄltoztathatjĂĄk a viselkedĂ©sĂŒket. Azok a feladatok,
amelyek CPU-t hasznåltak, interaktívvå vålhatnak. A példånkban az ilyen
feladatok nem fognak megfelelƑ bĂĄnĂĄsmĂłdban rĂ©szesĂŒlni a ĂŒtemezƑtƑl, mintha mĂĄs,
(eredeti) interaktĂ­v feladatokat kaptak volna.

KĂ©rdĂ©s a teremben: milyen tĂĄmadĂĄsokat lehetett vĂ©grehajtani a ĂŒtemezƑ ellen a modern vilĂĄgban?

2. Kísérlet: Prioritås emelése

PrĂłbĂĄljuk meg megvĂĄltoztatni a szabĂĄlyokat, Ă©s nĂ©zzĂŒk meg, sikerĂŒl-e elkerĂŒlni a
éhezést. Mit tehetnénk annak érdekében, hogy garantåljuk, hogy a CPU-hoz kapcsolódó
feladatok megkapjĂĄk az idejĂŒket (mĂ©g ha nem is hosszĂș ideig).
EgyszerƱ megoldĂĄskĂ©nt arra a problĂ©mĂĄra javasolt, hogy idƑnkĂ©nt
emeljĂŒk meg minden ilyen feladat prioritĂĄsĂĄt a rendszerben. SzĂĄmos mĂłdja van ennek
elérésére, próbåljunk ki egy egyszerƱ példåt: minden feladatot azonnal a legmagasabb
prioritĂĄsra ĂĄllĂ­tani, innen az Ășj szabĂĄly:

  • SzabĂĄly5: Egy bizonyos S idƑ elteltĂ©vel az összes feladatot a rendszerben a legmagasabb sorba helyezni.

Új szabĂĄlyunk kĂ©t problĂ©mĂĄt is egy csapĂĄsra megold. ElƑször is, a folyamatok
garantåltan nem éheznek: azok a feladatok, amelyek a legmagasabb sorban vannak, a RR algoritmus alapjån
osztják el a processzoridƑt, így minden folyamat megkapja a processzoridƑt. Másodszor, ha bármelyik
folyamat, amely korĂĄbban csak a processzort hasznĂĄlta, interaktĂ­vvĂĄ vĂĄlik, akkor a legmagasabb
prioritĂĄsĂș sorban fog maradni, miutĂĄn egyszer mĂĄr megkapta a legmagasabb prioritĂĄsĂș emelĂ©st.
NĂ©zzĂŒnk meg egy pĂ©ldĂĄt. Ebben a forgatĂłkönyvben vegyĂŒnk egy olyan folyamatot, amely
hasznĂĄl
OperĂĄciĂłs rendszerek: HĂĄrom egyszerƱ rĂ©sz. 5. rĂ©sz: ÜtemezĂ©s: Több szintƱ visszajelzƑ sor (fordĂ­tĂĄs)

CPU Ă©s kĂ©t interaktĂ­v, rövid folyamat. A bal oldalon a kĂ©p azt mutatja, hogy az elƑnyben rĂ©szesĂ­tĂ©s nĂ©lkĂŒli viselkedĂ©s hogyan mƱködik, Ă­gy a hosszĂș feladat Ă©hezni kezd, miutĂĄn a rendszerbe kĂ©t interaktĂ­v feladat Ă©rkezik. A jobb oldalon a prioritĂĄs 50 ms-onkĂ©nt emelkedik, Ă­gy minden folyamat garantĂĄltan kap processzoridƑt Ă©s idƑszakosan elindul. A 50 ms itt pĂ©ldakĂ©nt van megadva, a valĂłsĂĄgban ez a szĂĄm kissĂ© magasabb.
NyilvĂĄnvalĂł, hogy az S periĂłdikus emelĂ©si idƑ hozzĂĄadĂĄsa vezet a
kérdésekhez: milyen értéket kellene beållítani? Egy elismert
rendszermérnök, John Ousterhout, ilyen nagysågokat voo-doo
konstansnak nevezett, mivel bizonyos értelemben fekete mågiåt követeltek a helyes
beĂĄllĂ­tĂĄshoz. És sajnos, az S-nek ilyen Ă­ze van. Ha tĂșl magasra ĂĄllĂ­tjuk az Ă©rtĂ©ket,
a hosszĂș feladatok Ă©hezni fognak. Ha pedig tĂșl alacsonyra ĂĄllĂ­tjuk,
az interaktív feladatok nem kapják meg a megfelelƑ processzoridƑt.

Kísérlet 3: A legjobb nyilvåntartås

Most egy Ășjabb problĂ©mĂĄnk van, amelyet meg kell oldani: hogyan ne
engedjĂŒk meg, hogy a tervezƑnket becsapjĂĄk? Az ezt lehetƑvĂ© tevƑ
4a, 4b szabĂĄlyok felelƑsek, amelyek lehetƑvĂ© teszik a feladat szĂĄmĂĄra, hogy megtartja a prioritĂĄsĂĄt, miközben a processzort
felszabadĂ­tja a kijelölt idƑ letelte elƑtt. Hogyan kĂŒzdjĂŒnk meg ezzel?
A megoldás ebben az esetben a CPU idƑ legjobb nyilvántartásának
alkalmazĂĄsa minden MLFQ szinten. Ahelyett, hogy elfelejtenĂ©nk, mennyi idƑt hasznĂĄlt el a program
a processzor alatt az adott idƑszak alatt, figyelembe kell venni Ă©s megtartani azt. MiutĂĄn
a folyamat felhasznĂĄlta a rĂĄ kijelölt idƑt, prioritĂĄsĂĄt le kell csökkenteni a következƑ
prioritĂĄsi szintre. Most mĂĄr noha a folyamat hogyan hasznĂĄlja az idejĂ©t — akĂĄr
folyamatosan szĂĄmĂ­t a processzoron, akĂĄr több hĂ­vĂĄskĂ©nt. Így
az 4es szabĂĄlyt a következƑkĂ©ppen kell ĂĄtĂ­rni:

  • Rule4: MiutĂĄn a feladat felhasznĂĄlta a rĂĄ kijelölt idƑt a jelenlegi sorban (fĂŒggetlenĂŒl attĂłl, hogy hĂĄnyszor szabadĂ­totta fel a CPU-t), ennek a feladatnak a prioritĂĄsa csökken (lelĂ©p a sorbĂłl).

NĂ©zzĂŒnk egy pĂ©ldĂĄt:
OperĂĄciĂłs rendszerek: HĂĄrom egyszerƱ rĂ©sz. 5. rĂ©sz: ÜtemezĂ©s: Több szintƱ visszajelzƑ sor (fordĂ­tĂĄs)»

A kĂ©pen lĂĄthatĂł, mi törtĂ©nik, ha megprĂłbĂĄljuk megtĂ©veszteni a tervezƑt, hogyan
ha a korĂĄbbi 4a, 4b szabĂĄlyokkal valĂłsult volna meg, az eredmĂ©ny balra lett volna. Az Ășj szabĂĄly mellett - az eredmĂ©ny jobbra. A vĂ©delem elƑtt bĂĄrmilyen folyamat okozhatott I/O-t a befejezĂ©s elƑtt, Ă©s
Ă­gy dominĂĄlhatott a CPU-n, a vĂ©delem aktivĂĄlĂĄsa utĂĄn pedig, fĂŒggetlenĂŒl a viselkedĂ©stƑl, az I/O tovĂĄbbra is sorban hĂĄtra fog kerĂŒlni, Ă©s Ă­gy nem tudja tisztessĂ©gtelenĂŒl
elfoglalni a CPU erƑforrásait.
Javítva az MLFQ-t és egyéb problémåkat
A fent emlĂ­tett fejlesztĂ©sekkel Ășj problĂ©mĂĄk merĂŒlnek fel: az egyik legfontosabb

kĂ©rdĂ©s az, hogy hogyan paramĂ©terezhessĂŒnk egy ilyen tervezƑt? TehĂĄt, hĂĄny sor legyen? Mekkora legyen a program futĂĄsi ablaka a soron belĂŒl? Milyen gyakran kell emelni a program prioritĂĄsĂĄt, hogy elkerĂŒljĂŒk az Ă©hezĂ©st Ă©s

figyelembe vegyĂŒk a program viselkedĂ©sĂ©nek vĂĄltozĂĄsĂĄt? Ezekre a kĂ©rdĂ©sekre nincsen egyszerƱ
vĂĄlasz, Ă©s csak a terhelĂ©sekkel vĂ©gzett kĂ­sĂ©rletek Ă©s a tervezƑ kĂ©sƑbbi konfigurĂĄlĂĄsa vezethet valami kielĂ©gĂ­tƑ egyensĂșlyhoz.
PĂ©ldĂĄul, a legtöbb MLFQ implementĂĄciĂł lehetƑvĂ© teszi, hogy kĂŒlönbözƑ
idƑtartamokat rendeljĂŒnk kĂŒlönbözƑ sorokhoz. A magas prioritĂĄsĂș sorok ĂĄltalĂĄban
rövid idƑtartamokat kapnak. Ezek a sorok interaktĂ­v feladatokbĂłl ĂĄllnak,
amelyek közötti vĂĄltĂĄs elĂ©g Ă©rzĂ©keny, Ă©s 10 ms vagy kevesebb idƑt igĂ©nyel. Ezzel szemben, az alacsony prioritĂĄsĂș sorok hosszĂș feladatokat tartalmaznak, melyek CPU-t hasznĂĄlnak.
Ebben az esetben a hosszĂș idƑtartamok nagyon jĂłl megfelelnek (100 ms).

Ebben a pĂ©ldĂĄban 2 feladat futott a magas prioritĂĄsĂș sorban 20
ms-ig, 10 ms-enkĂ©nti ablakokra bontva. 40 ms az ĂĄtlagos sorban (20 ms-os ablak) Ă©s az alacsony prioritĂĄsĂș
sorban az idƑtartam 40 ms-ra nƑtt, ahol a feladatok befejeztĂ©k a munkĂĄjukat.
Az MLFQ implementĂĄciĂłja a Solaris OS-ben - egy osztĂĄlyĂș tervezƑ, amely idƑmegosztĂĄst alkalmaz.
A tervezƑ egy sor táblázatot biztosít, amelyek pontosan meghatározzák, hogy hogyan kell
våltoznia a folyamat prioritåsånak élete sorån, mekkora legyen az allokålt ablak mérete és milyen gyakran kell emelni a feladat prioritåsåt. A rendszeradminisztråtor
OperĂĄciĂłs rendszerek: HĂĄrom egyszerƱ rĂ©sz. 5. rĂ©sz: ÜtemezĂ©s: Több szintƱ visszajelzƑ sor (fordĂ­tĂĄs)

interakciĂłba lĂ©phet ezzel a tĂĄblĂĄzattal, Ă©s kĂ©nyszerĂ­theti a tervezƑt eltĂ©rƑ mĂłdon viselkedni.
AlapĂ©rtelmezetten ebben a tĂĄblĂĄzatban 60 sor van, fokozatosan növekvƑ
ablakmérettel 20 ms (magas prioritås) és több szåz ms (alacsony prioritås) között.

A MLFQ megvalĂłsĂ­tĂĄsa a Solaris operĂĄciĂłs rendszerben — az idƑbeli ĂŒtemezƑk klasszikus tĂ­pusa.
Az ĂŒtemezƑ egy sor tĂĄblĂĄt biztosĂ­t, amelyek pontosan meghatĂĄrozzĂĄk, hogyan kell
våltoztatni a folyamat prioritåsåt az élete sorån, mekkora legyen a mérete
a kiosztott ablaknak és milyen gyakran kell emelni a feladatok prioritåsåt. Az adminisztråtor
interakciĂłba lĂ©phet ezzel a tĂĄblĂĄzattal, Ă©s kĂ©nyszerĂ­theti az ĂŒtemezƑt arra, hogy mĂĄskĂ©pp viselkedjen.
AlapĂ©rtelmezĂ©s szerint ebben a tĂĄblĂĄzatban 60 sor van, fokozatosan növekvƑ
ablakmérettel 20 ms-tól (magas prioritås) néhåny szåz ms-ig (alacsony prioritås), és
szintén minden feladatot måsodpercenként megnövelve.

MĂĄs MLFQ ĂŒtemezƑk nem hasznĂĄlnak tĂĄblĂĄzatot vagy valamilyen konkrĂ©t
szabályt, ami ebben az elƑadásban van leírva, ehelyett prioritásokat számítanak ki
matematikai kĂ©pletek segĂ­tsĂ©gĂ©vel. PĂ©ldĂĄul a FreeBSD ĂŒtemezƑje egy kĂ©pletet hasznĂĄl a
aktuålis prioritås kiszåmítåsåhoz, figyelembe véve, hogy mennyi CPU-t hasznålt a folyamat.
TovĂĄbbĂĄ, a CPU hasznĂĄlat az idƑ mĂșlĂĄsĂĄval csökken, Ă­gy a
prioritĂĄs növelĂ©se kissĂ© eltĂ©rƑen törtĂ©nik, mint ahogy fent leĂ­rtuk. Ezek a
Ășn. decay algoritmusok. A FreeBSD 7.1-es verziĂłjĂĄtĂłl kezdƑdƑen ULE ĂŒtemezƑt hasznĂĄlnak.

VĂ©gĂŒl, sok ĂŒtemezƑnek vannak mĂĄs jellemzƑi is. PĂ©ldĂĄul nĂ©hĂĄny
ĂŒtemezƑ a legmagasabb szinteket fenntartja az operĂĄciĂłs rendszer szĂĄmĂĄra, Ă­gy
nincs felhasznĂĄlĂłi folyamat, amely a legmagasabb prioritĂĄst kapnĂĄ a
rendszerben. NĂ©hĂĄny rendszer lehetƑvĂ© teszi, hogy tanĂĄcsokat adjunk az ĂŒtemezƑnek,
hogy segĂ­tsĂŒk a prioritĂĄsok helyes beĂĄllĂ­tĂĄsĂĄban. PĂ©ldĂĄul a parancs segĂ­tsĂ©gĂ©vel kellemes
növelhetjĂŒk vagy csökkenthetjĂŒk egy folyamat prioritĂĄsĂĄt, ezzel növelve vagy
csökkentve a program processzoraidƑre valĂł esĂ©lyeit.

MLFQ: Összefoglalás

LeĂ­rtuk az MLFQ nĂ©ven ismert ĂŒtemezĂ©si megközelĂ­tĂ©st. A neve
abban az elvben rejlik, hogy több sorral rendelkezik és visszajelzést hasznål
a feladat prioritĂĄsĂĄnak meghatĂĄrozĂĄsĂĄhoz.
A szabĂĄlyok vĂ©gsƑ formĂĄja a következƑ lesz:

  • Rule1: Ha prioritĂĄs(A) > prioritĂĄs(B), akkor A feladat fut (B nem)
  • Rule2: Ha prioritĂĄs(A) = prioritĂĄs(B), A Ă©s B RR hasznĂĄlatĂĄval futnak
  • Rule3: Amikor a feladat bekerĂŒl a rendszerbe, a legmagasabb prioritĂĄsĂș sorba kerĂŒl.
  • Rule4: MiutĂĄn a feladat felhasznĂĄlta a rĂĄ kijelölt idƑt a jelenlegi sorban (fĂŒggetlenĂŒl attĂłl, hogy hĂĄnyszor szabadĂ­totta fel a CPU-t), ennek a feladatnak a prioritĂĄsa csökken (lelĂ©p a sorbĂłl).
  • SzabĂĄly5: Egy bizonyos S idƑ elteltĂ©vel az összes feladatot a rendszerben a legmagasabb sorba helyezni.

Az MLFQ érdekessége, hogy nem követeli meg a feladat természetének
elƑzetes ismeretĂ©t, a algoritmus a feladat korĂĄbbi viselkedĂ©sĂ©t tanulmĂĄnyozza Ă©s ĂĄllĂ­tja
be a prioritĂĄsokat ennek megfelelƑen. Így prĂłbĂĄlja meg egyszerre a kĂ©t szĂ©kben ĂŒlni –
a kis feladatok (SJF, STCF) teljesĂ­tmĂ©nyĂ©t elĂ©rni Ă©s mĂ©ltĂĄnyosan futtatni a hosszĂș,
CPU-t igĂ©nylƑ feladatokat. Éppen ezĂ©rt sok rendszer, beleĂ©rtve a BSD-t Ă©s azok
ågaikat, a Solaris-t, a Windows-t és a Mac-et is, valamilyen formåjåt hasznålja az MLFQ

TovĂĄbbi anyagok:

  1. algoritmusnak alapként.
  2. manpages.debian.org/stretch/manpages/sched.7.hu.htmlen.wikipedia.org/wiki/Scheduling_
  3. pages.lip6.fr/Julia.Lawall/atc18-bouron.pdf
  4. www.usenix.org/legacy/event/bsdcon03/tech/full_papers/roberson/roberson.pdf
  5. (computing) chebykin.org/freebsd-process-scheduling

ForrĂĄs: habr.com

MegbĂ­zhatĂł hosting vĂĄsĂĄrlĂĄsa weboldalak szĂĄmĂĄra, DDoS vĂ©delemmel, VPS VDS szerverek. đŸ”„ MegbĂ­zhatĂł webtĂĄrhely vĂĄsĂĄrlĂĄsa DDoS vĂ©delemmel, VPS VDS szerverek | ProHoster