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 . 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 =)
Ă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:

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.

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.

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.

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

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

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:
- en.wikipedia.org/wiki/Scheduling_
ForrĂĄs: habr.com
