Operatsion tizimlar: Uchta oson. 5-qism: Rejalashtirish: Ko‘p darajali fikr-mulohazalar navbati (tarjima)

Operatsion tizimlarga kirish

Salom, Xabr! Men sizning e'tiboringizga bir qator maqolalar-tarjimalarni taqdim etmoqchiman, mening fikrimcha, qiziqarli bo'lgan adabiyot - OSTEP. Ushbu material unix-ga o'xshash operatsion tizimlarning ishini, ya'ni zamonaviy OTni tashkil etuvchi jarayonlar, turli rejalashtiruvchilar, xotira va shunga o'xshash boshqa komponentlar bilan ishlashni chuqur o'rganadi. Bu yerda barcha materiallarning asl nusxasini ko'rishingiz mumkin shu yerda. E'tibor bering, tarjima noprofessional tarzda qilingan (juda erkin), lekin men umumiy ma'noni saqlab qoldim deb umid qilaman.

Ushbu mavzu bo'yicha laboratoriya ishlarini bu erda topishingiz mumkin:

Boshqa qismlar:

Siz mening kanalimni ham ko'rishingiz mumkin telegram =)

Rejalashtirish: ko'p darajali fikr-mulohazalar navbati

Ushbu ma'ruzada biz eng mashhur yondashuvlardan birini ishlab chiqish muammolari haqida gapiramiz
rejalashtirish, bu deyiladi Ko'p darajali qayta aloqa navbati (MLFQ). MLFQ rejalashtiruvchisi birinchi marta 1962 yilda Fernando J. Korbato tomonidan nomlangan tizimda tasvirlangan.
Mos vaqt almashish tizimi (CTSS). Bu ishlar (shu jumladan, keyingi ishlar
Multics) keyinchalik Tyuring mukofotiga nomzod bo'ldi. Rejalashtiruvchi edi
keyinchalik yaxshilandi va allaqachon mavjud bo'lgan ko'rinishga ega bo'ldi
ba'zi zamonaviy tizimlar.

MLFQ algoritmi bir-biriga o'xshash ikkita asosiy muammoni hal qilishga harakat qiladi.
Birinchidan, u oldingi ma'ruzada muhokama qilganimizdek, eng ko'p navbat boshidan boshlash usuli bilan optimallashtirilgan aylanish vaqtini optimallashtirishga harakat qiladi.
qisqa vazifalar. Biroq, OS ma'lum bir jarayon qancha davom etishini bilmaydi va bu
SJF, STCF algoritmlarining ishlashi uchun zarur bilimlar. Ikkinchidan, MLFQ harakat qilmoqda
tizimni foydalanuvchilar uchun javob beradi (masalan, o'tirganlar va
vazifa tugashini kutayotgan ekranga tikilib turing) va shu bilan vaqtni minimallashtiring
javob. Afsuski, RR kabi algoritmlar javob vaqtini yaxshilaydi, lekin juda
aylanish vaqti ko'rsatkichiga yomon ta'sir qiladi. Shuning uchun bizning muammomiz: qanday qilib loyihalash kerak
hech narsa bilmasdan bizning talablarimizga javob beradigan rejalashtiruvchi
umuman jarayonning tabiati? Rejalashtiruvchi vazifalarning xususiyatlarini qanday o'rganishi mumkin,
qaysini ishga tushiradi va shu tariqa yaxshiroq rejalashtirish qarorlarini qabul qiladi?

Muammoning mohiyati: Mukammal bilimsiz vazifalarni belgilashni qanday rejalashtirish kerak?
Bir vaqtning o'zida javob vaqtini kamaytiradigan rejalashtiruvchini qanday loyihalash kerak
interaktiv vazifalar uchun va ayni paytda bilmagan holda ishlash vaqtini kamaytiradi
vazifani bajarish vaqtini bilasizmi?

Eslatma: biz oldingi voqealardan o'rganamiz

MLFQ navbati o'rganadigan tizimning ajoyib namunasidir
kelajakni bashorat qilish uchun o'tgan voqealar. Shunga o'xshash yondashuvlar ko'pincha
OS da topilgan (Va kompyuter fanining boshqa ko'plab sohalari, shu jumladan filiallar
apparat prognozlari va keshlash algoritmlari). Shunga o'xshash sayohatlar
vazifalar xulq-atvor bosqichlariga ega bo'lsa va shuning uchun bashorat qilinadigan bo'lsa, ishga tushiriladi.
Biroq, ushbu texnikada ehtiyot bo'lishingiz kerak, chunki bashorat qilish juda oson
noto'g'ri bo'lib chiqishi va tizimni bundan ham yomonroq qarorlar qabul qilishga olib kelishi mumkin
umuman bilimsiz bo'lar edi.

MLFQ: Asosiy qoidalar

Keling, MLFQ algoritmining asosiy qoidalarini ko'rib chiqaylik. Va bu algoritmni amalga oshirish bo'lsa-da
Bir necha bor, asosiy yondashuvlar o'xshash.
Amalga oshirishda biz ko'rib chiqamiz, MLFQ bir nechta bo'ladi
alohida navbatlar, ularning har biri boshqa ustuvorlikka ega bo'ladi. Istalgan vaqtda,
bajarishga tayyor vazifa bitta navbatda. MLFQ ustuvorliklardan foydalanadi,
qaysi vazifani bajarish uchun ishlashni hal qilish, ya'ni. yuqoriroq vazifa
birinchi navbatda ustuvorlik (yuqori ustunlikka ega navbatdagi vazifa) ishga tushiriladi
navbat.
Albatta, berilgan navbatda bir nechta vazifa bo'lishi mumkin, shuning uchun
shuning uchun ular bir xil ustuvorlikka ega bo'ladilar. Bunday holda, mexanizm qo'llaniladi
Ushbu vazifalar orasida yugurishni rejalashtirish uchun RR.
Shunday qilib, biz MLFQ uchun ikkita asosiy qoidaga erishamiz:

  • 1-qoida: Agar ustuvorlik (A) > Prioritet (B) bo'lsa, A vazifasi ishga tushiriladi (B bo'lmaydi)
  • 2-qoida: Priority(A) = Priority(B) bo'lsa, A&B RR-dan foydalanishni boshlaydi

Yuqoridagilarga asoslanib, MLFQni rejalashtirishning asosiy elementlari
ustuvorliklardir. Har biriga qat'iy ustuvorlik berish o'rniga
vazifa, MLFQ kuzatilgan xatti-harakatlarga qarab o'z ustuvorligini o'zgartiradi.
Masalan, agar vazifa klaviaturadan kiritishni kutayotganda doimiy ravishda protsessorga ishni tashlasa,
MLFQ jarayon ustuvorligini yuqori darajada ushlab turadi, chunki shunday
interaktiv jarayon ishlashi kerak. Agar, aksincha, vazifa doimiy va
protsessorni uzoq vaqt davomida qattiq ishlatsa, MLFQ uni pasaytiradi
ustuvorlik. Shunday qilib, MLFQ jarayonlar ishlayotgan paytda ularning xatti-harakatlarini o'rganadi
va xatti-harakatlardan foydalaning.
Keling, bir nuqtada navbatlar qanday ko'rinishi mumkinligiga misol keltiraylik
vaqt va keyin siz shunday bir narsa olasiz:
Operatsion tizimlar: Uchta oson. 5-qism: Rejalashtirish: Ko‘p darajali fikr-mulohazalar navbati (tarjima)

Ushbu sxemada 2 ta jarayon A va B eng yuqori ustuvor navbatda. Jarayon
C o'rtada, D jarayoni esa navbatning eng oxirida. Yuqoridagilarga ko'ra
MLFQ algoritmining tavsifiga ko'ra, rejalashtiruvchi vazifalarni faqat eng yuqori ko'rsatkichlar bilan bajaradi.
RR bo'yicha ustuvorlik va C, D vazifalari ishlamay qoladi.
Tabiiyki, statik surat MLFQ qanday ishlashi haqida to'liq tasavvurni bermaydi.
Vaqt o'tishi bilan rasmning qanday o'zgarishini aniq tushunish muhimdir.

1-urinish: ustuvorlikni qanday o'zgartirish mumkin

Ushbu nuqtada siz MLFQ ustuvorlik darajasini qanday o'zgartirishi haqida qaror qabul qilishingiz kerak
vazifalari (va shunday qilib, topshiriqning navbatdagi o'rni) uning hayotiy tsikli davomida rivojlanib boradi. Uchun
bu ish jarayonini yodda tutish kerak: ma'lum miqdor
Qisqa ish vaqtlari bilan interaktiv vazifalar (va shuning uchun tez-tez chiqariladi
CPU) va protsessordan butun ish vaqtini ishlatadigan bir nechta uzoq muddatli vazifalar
Bunday vazifalar uchun javob vaqti muhim emas. Va shu tarzda siz birinchi urinishingizni qilishingiz mumkin
MLFQ algoritmini quyidagi qoidalar bilan amalga oshiring:

  • 3-qoida: Tizimga topshiriq kirganda, u eng yuqori bo'lgan navbatga qo'yiladi
  • ustuvorlik.
  • Qoida 4a: Agar vazifa unga ajratilgan butun vaqt oynasidan foydalansa, u holda
  • ustuvorlik kamayadi.
  • Qoida 4b: Agar vazifa protsessorni vaqt oynasi tugashidan oldin chiqarsa, u holda
  • bir xil ustuvorlikda qoladi.

1-misol: Bitta uzoq muddatli vazifa

Ushbu misolda ko'rinib turibdiki, qabul vazifasi eng yuqori bilan belgilanadi
ustuvorlik. 10 ms vaqt oynasidan so'ng, jarayon ustuvorlik darajasiga tushiriladi
rejalashtiruvchi. Keyingi safar oynasidan so'ng, vazifa nihoyat pastga tushiriladi
tizimdagi eng past ustuvorlik, u qaerda qoladi.
Operatsion tizimlar: Uchta oson. 5-qism: Rejalashtirish: Ko‘p darajali fikr-mulohazalar navbati (tarjima)

2-misol: Qisqa topshiriq topshirildi

Keling, MLFQ qanday qilib SJFga yaqinlashishga harakat qilishiga misolni ko'rib chiqaylik. Unda
Masalan, ikkita vazifa: A, bu doimiy ravishda uzoq davom etadigan vazifadir
CPU va B ni egallash, bu qisqa interaktiv vazifadir. Faraz qilaylik
B topshirig'i kelganda A allaqachon bir muncha vaqt ishlagan.
Operatsion tizimlar: Uchta oson. 5-qism: Rejalashtirish: Ko‘p darajali fikr-mulohazalar navbati (tarjima)

Ushbu grafik stsenariy natijalarini ko'rsatadi. Vazifa A, har qanday vazifa kabi,
CPU foydalanish eng quyida edi. B topshirig'i T=100 vaqtida keladi va bo'ladi
eng ustuvor navbatga qo'yiladi. Uning ishlash muddati qisqa bo'lgani uchun
u oxirgi navbatga yetmasdan tugaydi.

Ushbu misoldan algoritmning asosiy maqsadini tushunish kerak: chunki algoritm
vazifaning uzoq yoki qisqa ekanligini biladi, keyin u birinchi navbatda vazifani bajaradi
qisqa va unga eng yuqori ustuvorlikni beradi. Agar bu juda qisqa vazifa bo'lsa, unda
u tez tugallanadi, aks holda uzoq ish bo'lsa, u sekin harakat qiladi
ustuvorligini pasaytiradi va tez orada u haqiqatan ham uzoq ish emasligini isbotlaydi
javobni talab qiladi.

3-misol: I/U haqida nima deyish mumkin?

Endi kiritish-chiqarish misolini ko'rib chiqamiz. 4b-qoidada ko'rsatilganidek,
agar jarayon protsessorning barcha vaqtini ishlatmasdan protsessorni chiqarsa,
keyin u bir xil ustuvorlik darajasida qoladi. Ushbu qoidaning maqsadi juda oddiy
- agar interaktiv ish ko'p kiritish-chiqarish operatsiyalarini bajarsa, masalan, kutish
foydalanuvchi tugmachasi yoki sichqonchani bosish orqali bunday vazifa protsessorni bo'shatadi
ajratilgan oyna oldidan. Biz bunday vazifaning ustuvorligini pasaytirmoqchi emasmiz,
va shuning uchun u bir xil darajada qoladi.
Operatsion tizimlar: Uchta oson. 5-qism: Rejalashtirish: Ko‘p darajali fikr-mulohazalar navbati (tarjima)

Ushbu misol algoritmning bunday jarayonlar bilan qanday ishlashini ko'rsatadi - interaktiv ish B, bajarishdan oldin faqat 1 ms uchun CPU kerak.
Barcha vaqtini protsessordan foydalanishga sarflaydigan kiritish/chiqarish jarayoni va uzoq muddatli ish A.
MLFQ B jarayonini eng yuqori darajada ushlab turadi, chunki u davom etadi
CPUni qo'yib yuboring. Agar B interaktiv vazifa bo'lsa, u holda algoritm erishgan
Sizning maqsadingiz interaktiv vazifalarni tezda bajarishdir.

Joriy MLFQ algoritmi bilan bog'liq muammolar

Oldingi misollarda biz MLFQ ning asosiy versiyasini yaratdik. Va u ko'rinadi
o'z ishini yaxshi va halol bajaradi, protsessor vaqtini o'rtasida adolatli taqsimlaydi
uzoq vazifalar va qisqa yoki katta hajmli vazifalarga ruxsat berish
I/U ustida tezda ishlang. Afsuski, bu yondashuv bir nechta narsalarni o'z ichiga oladi
jiddiy muammolar.
Birinchidan, ochlik muammosi: tizimda ko'plab interaktiv bo'lsa
vazifalar, keyin ular butun protsessor vaqtini iste'mol qiladilar va shuning uchun uzoq vaqt davomida bitta ham bo'lmaydi
vazifani bajarish mumkin bo'lmaydi (ular ochlikdan o'lishmoqda).

Ikkinchidan, aqlli foydalanuvchilar o'z dasturlarini shunday yozishlari mumkin edi
rejalashtiruvchini aldash. Aldash, majburlash uchun biror narsa qilishdir
Rejalashtiruvchi jarayonga ko'proq CPU vaqtini beradi. Algoritm shunday
yuqorida tavsiflangan shunga o'xshash hujumlar uchun juda zaif: vaqt oynasi amalda oldin
tugallangan bo'lsa, siz kiritish-chiqarish operatsiyasini bajarishingiz kerak (ba'zilarga, qanday fayl bo'lishidan qat'iy nazar)
va shu bilan protsessorni bo'shatadi. Bunday xatti-harakat sizga o'zgarishsiz qolishga imkon beradi
navbatning o'zi va yana CPU vaqtining katta foizini oladi. Agar shunday qilsangiz
bu to'g'ri (masalan, protsessorni chiqarishdan oldin oyna vaqtining 99 foizini bajaring),
bunday vazifa protsessorni oddiygina monopollashtirishi mumkin.

Va nihoyat, dastur vaqt o'tishi bilan o'z xatti-harakatlarini o'zgartirishi mumkin. O'sha vazifalar
protsessordan foydalangan holda interaktiv bo'lishi mumkin. Bizning misolimizda shunga o'xshash
vazifalar boshqalarga o'xshab rejalashtiruvchidan munosib munosabatda bo'lmaydi
(boshlang'ich) interaktiv vazifalar.

Tomoshabinlar uchun savol: zamonaviy dunyoda rejalashtiruvchiga qanday hujumlar amalga oshirilishi mumkin?

2-urinish: ustuvorlikni oshirish

Keling, qoidalarni o'zgartirishga harakat qilaylik va muammolardan qochishimiz mumkinligini bilib olaylik
ro'za tutish. Bu bog'liqligini ta'minlash uchun nima qilishimiz mumkin
CPU vazifalari o'z vaqtini oladi (hatto uzoq bo'lmasa ham).
Muammoning oddiy yechimi sifatida siz vaqti-vaqti bilan taklif qilishingiz mumkin
tizimdagi barcha ana shunday vazifalarning ustuvorligini oshirish. Ko'p yo'llari bor
Bunga erishish uchun misol tariqasida oddiy narsani amalga oshirishga harakat qilaylik: tarjima qilish
barcha vazifalarga darhol eng yuqori ustuvorlik beriladi, shuning uchun yangi qoida:

  • 5-qoida: Muayyan vaqt S dan keyin tizimdagi barcha vazifalarni eng yuqori navbatga o'tkazing.

Bizning yangi qoidamiz bir vaqtning o'zida ikkita muammoni hal qiladi. Birinchidan, jarayonlar
och qolmaslik kafolatlanadi: eng ustuvor vazifalar bo'linadi
RR algoritmiga ko'ra CPU vaqti va shuning uchun barcha jarayonlar qabul qilinadi
CPU vaqti. Ikkinchidan, agar ilgari ishlatilgan ba'zi jarayon
faqat protsessor interaktiv bo'ladi, u eng yuqori bo'lgan navbatda qoladi
ustuvorlikni eng yuqori darajaga bir marta oshirgandan so'ng.
Keling, bir misolni ko'rib chiqaylik. Ushbu stsenariyda foydalanish jarayonini ko'rib chiqing
Operatsion tizimlar: Uchta oson. 5-qism: Rejalashtirish: Ko‘p darajali fikr-mulohazalar navbati (tarjima)

CPU va ikkita interaktiv, qisqa jarayon. Shaklning chap tomonida, rasm ustuvor ko'tarilmasdan xatti-harakatni ko'rsatadi va shuning uchun tizimga ikkita interaktiv topshiriq kelgandan so'ng uzoq muddatli vazifa och qola boshlaydi. O'ngdagi rasmda ustuvorlik har 50 ms amalga oshiriladi va shuning uchun barcha jarayonlar protsessor vaqtini olish kafolatlanadi va vaqti-vaqti bilan ishga tushiriladi. Bu holatda 50ms misol sifatida olinadi, aslida bu raqam biroz yuqoriroq.
Shubhasiz, davriy o'sish vaqtini qo'shish S ga olib keladi
mantiqiy savol: qanday qiymat o'rnatilishi kerak? Faxriylardan biri
tizim muhandislari Jon Ousterhout tizimlardagi bunday miqdorlarni voo-doo deb atagan
doimiy, chunki ular to'g'rilash uchun qaysidir ma'noda qora sehrga muhtoj edilar
namoyish qilish. Va, afsuski, S ning bunday hidi bor. Agar siz ham qiymatni o'rnatsangiz
katta - uzoq vazifalar och qola boshlaydi. Va agar siz qiymatni juda past o'rnatsangiz,
Interfaol vazifalar protsessor vaqtini to'g'ri olmaydi.

3-urinish: Yaxshiroq buxgalteriya hisobi

Endi bizda hal qilish kerak bo'lgan yana bir muammo bor: qanday qilib yo'q
bizning rejalashtiruvchimiz aldanishiga yo'l qo'yingmi? Bunday imkoniyat uchun odamlar aybdor
4a, 4b qoidalari, bu ishni protsessorni bo'shatib, ustuvorlikni saqlab qolishga imkon beradi
belgilangan vaqt tugashidan oldin. Bu bilan qanday kurashish mumkin?
Bu holda yechim har birida CPU vaqtini yaxshiroq hisobga olish deb hisoblanishi mumkin
MLFQ darajasi. Dastur ishlatgan vaqtni unutish o'rniga
protsessor ajratilgan davr uchun, uni hisobga olish va saqlash kerak. Keyin
jarayon belgilangan vaqtni tugatdi, uni keyingisiga tushirish kerak
ustuvorlik darajasi. Endi jarayon o'z vaqtini qanday ishlatishi muhim emas - qanday qilib
doimiy ravishda protsessorda yoki bir qator qo'ng'iroqlar sifatida hisoblash. Shunday qilib,
4-qoida quyidagi tahrirda bayon etilsin:

  • 4-qoida: Vazifa joriy navbatda ajratilgan vaqtni tugatgandan so'ng (u protsessorni necha marta bo'shatgan bo'lishidan qat'iy nazar), bu vazifaning ustuvorligi pasayadi (u navbatda pastga siljiydi).

Keling, bir misolni ko'rib chiqaylik:
Operatsion tizimlar: Uchta oson. 5-qism: Rejalashtirish: Ko‘p darajali fikr-mulohazalar navbati (tarjima)»

Rasmda siz rejalashtiruvchini aldashga harakat qilsangiz nima bo'lishini ko'rsatadi, masalan
agar oldingi qoidalar 4a, 4b bo'lsa, chapdagi natija olinadi. Yangi baxt
qoida o'ng tarafdagi natijadir. Himoya qilishdan oldin, har qanday jarayon tugashdan oldin I/U ni chaqirishi mumkin va
Shunday qilib, xatti-harakatlaridan qat'i nazar, himoyani yoqishdan so'ng CPU ustidan hukmronlik qiladi
I/O, u hali ham navbatda pastga siljiydi va shuning uchun insofsiz bo'lolmaydi
CPU resurslarini egallab olish.

MLFQ va boshqa muammolarni yaxshilash

Yuqoridagi yaxshilanishlar bilan yangi muammolar paydo bo'ladi: asosiylaridan biri
Savollar - bunday rejalashtiruvchini qanday parametrlash mumkin? Bular. Qancha bo'lishi kerak
navbatlar? Navbatdagi dastur oynasining o'lchami qanday bo'lishi kerak? Qanaqasiga
Dastur ustuvor tez-tez ochlik va oldini olish uchun oshirish kerak
dastur harakatining o'zgarishini hisobga olasizmi? Bu savollarga oddiy javob yo'q
javob va faqat yuklar va keyingi konfiguratsiya bilan tajribalar
rejalashtiruvchi qoniqarli muvozanatga olib kelishi mumkin.

Misol uchun, ko'pchilik MLFQ ilovalari sizga boshqasini belgilashga imkon beradi
turli navbatlar uchun vaqt oraliqlari. Odatda yuqori darajadagi navbatlar
qisqa intervallar belgilanadi. Bu navbatlar interaktiv vazifalardan iborat,
ularning o'rtasida almashish juda sezgir va 10 yoki undan kamroq vaqtni olishi kerak
Xonim. Bundan farqli o'laroq, past ustuvor navbatlar foydalanadigan uzoq muddatli vazifalardan iborat
MARKAZIY PROTSESSOR. Va bu holda, uzoq vaqt oralig'i juda yaxshi mos keladi (100ms).
Operatsion tizimlar: Uchta oson. 5-qism: Rejalashtirish: Ko‘p darajali fikr-mulohazalar navbati (tarjima)

Ushbu misolda 2-sonli ustuvor navbatda ishlagan 20 ta vazifa mavjud
ms, 10ms oynalarga bo'lingan. 40ms o'rta navbatda (20ms oynasi) va past ustuvorlikda
Navbat vaqti oynasi 40 ms ga aylandi, bu erda vazifalar o'z ishlarini yakunladi.

MLFQ ning Solaris OS ilovasi vaqt almashish rejalashtiruvchilar sinfidir.
Rejalashtiruvchi jadvallar to'plamini taqdim etadi, ular kerak bo'lganda aniq belgilaydi
jarayonning ustuvorligi uning hayoti davomida o'zgaradi, hajmi qanday bo'lishi kerak
ajratilgan oyna va vazifalarning ustuvorliklarini qanchalik tez-tez oshirish kerakligi. Administrator
tizimlar ushbu jadval bilan o'zaro ta'sir qilishi va rejalashtiruvchining o'zini tutishiga olib kelishi mumkin
boshqacha. Odatiy bo'lib, bu jadval asta-sekin o'sib boruvchi 60 ta navbatga ega
oyna hajmi 20ms (yuqori ustuvorlik) dan bir necha yuz milodiy (past ustuvorlik) va
shuningdek, barcha vazifalarni soniyada bir marta kuchaytirish bilan.

Boshqa MLFQ rejalashtiruvchilari jadval yoki biron bir aniqlikdan foydalanmaydi
Ushbu ma'ruzada tasvirlangan qoidalar, aksincha, ular yordamida ustuvorliklarni hisoblab chiqadi
matematik formulalar. Masalan, FreeBSD rejalashtiruvchisi formuladan foydalanadi
jarayon qancha davom etishiga qarab vazifaning joriy ustuvorligini hisoblang
ishlatilgan CPU. Bundan tashqari, protsessordan foydalanish vaqt o'tishi bilan pasayadi va hokazo
Shunday qilib, ustuvorlikni oshirish yuqorida tavsiflanganidan biroz boshqacha tarzda sodir bo'ladi. Bu shunday
yemirilish algoritmlari deb ataladi. 7.1 versiyasidan boshlab FreeBSD ULE rejalashtiruvchisidan foydalanmoqda.

Va nihoyat, ko'plab rejalashtiruvchilar boshqa xususiyatlarga ega. Masalan, ba'zilari
rejalashtiruvchilar operatsion tizimning ishlashi uchun eng yuqori darajalarni saqlab qoladilar va shuning uchun
Shunday qilib, hech bir foydalanuvchi jarayoni eng yuqori ustuvorlikni ololmaydi
tizimi. Ba'zi tizimlar sizga yordam berish uchun maslahat berishga imkon beradi
rejalashtiruvchi ustuvorliklarni to'g'ri belgilashi mumkin. Masalan, buyruq yordamida yaxshi
siz vazifaning ustuvorligini oshirishingiz yoki kamaytirishingiz va shu bilan oshirishingiz yoki
dasturning CPU vaqtini ishlatish imkoniyatlarini kamaytirish.

MLFQ: Xulosa

Biz MLFQ deb nomlangan rejalashtirish yondashuvini tasvirlab berdik. Uning ismi
ishlash printsipiga kiritilgan - u bir nechta navbatga ega va fikr-mulohazalardan foydalanadi
vazifa ustuvorligini aniqlash.
Qoidalarning yakuniy shakli quyidagicha bo'ladi:

  • 1-qoida: Agar ustuvorlik(A) > Priority(B) boʻlsa, A vazifasi ishga tushiriladi (B boʻlmaydi)
  • 2-qoida: Priority(A) = Priority(B) boʻlsa, A&B RR yordamida boshlanadi
  • 3-qoida: Vazifa tizimga kirganda, u eng yuqori ustuvor navbatga qo'yiladi.
  • 4-qoida: Vazifa joriy navbatda ajratilgan vaqtni tugatgandan so'ng (u protsessorni necha marta bo'shatgan bo'lishidan qat'iy nazar), bu vazifaning ustuvorligi pasayadi (u navbatda pastga siljiydi).
  • 5-qoida: Muayyan vaqt S dan keyin tizimdagi barcha vazifalarni eng yuqori navbatga o'tkazing.

MLFQ quyidagi sabablarga ko'ra qiziqarli - bilim talab qilish o'rniga
vazifaning tabiatini oldindan, algoritm vazifa va to'plamlarning o'tmishdagi xatti-harakatlarini o'rganadi
muvofiq ustuvorliklar. Shunday qilib, u bir vaqtning o'zida ikkita stulda o'tirishga harakat qiladi - kichik vazifalar uchun (SJF, STCF) unumdorlikka erishish va halol uzoq yugurish,
CPU yuklash ishlari. Shuning uchun ko'plab tizimlar, shu jumladan BSD va ularning hosilalari,
Solaris, Windows, Mac rejalashtiruvchi sifatida algoritmning ba'zi shakllaridan foydalanadi
MLFQ asosiy chiziq sifatida.

Dopolnitelnye materiallar:

  1. manpages.debian.org/stretch/manpages/sched.7.en.html
  2. en.wikipedia.org/wiki/Scheduling_(hisoblash)
  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

Manba: www.habr.com

a Izoh qo'shish