Əməliyyat Sistemləri: Üç Asan Parça. Hissə 5: Planlaşdırma: Çox Səviyyəli Əlaqə Növbəsi (tərcümə)

Əməliyyat sistemlərinə giriş

Hey Habr! Fikrimcə, bir maraqlı ədəbiyyatın - OSTEP-in bir sıra məqalə-tərcümələrini diqqətinizə çatdırmaq istərdim. Bu material unix-ə bənzər əməliyyat sistemlərinin işini, yəni proseslər, müxtəlif planlaşdırıcılar, yaddaş və müasir ƏS-ni təşkil edən digər oxşar komponentlərlə işləməyi kifayət qədər dərindən müzakirə edir. Bütün materialların orijinalına burada baxa bilərsiniz burada. Nəzərə alın ki, tərcümə qeyri-peşəkar şəkildə (olduqca sərbəst) edilib, amma ümid edirəm ki, ümumi mənası saxlamışam.

Bu mövzuda laboratoriya işlərini burada tapa bilərsiniz:

Digər hissələr:

Kanalıma da baxa bilərsiniz teleqram =)

Planlaşdırma: Çox Səviyyəli Əlaqə Növbəsi

Bu mühazirədə ən məşhur yanaşmalardan birinin inkişaf etdirilməsi problemlərindən danışacağıq
planlaşdırma adlanır Çox Səviyyəli Əlaqə Növbəsi (MLFQ). MLFQ planlayıcısı ilk dəfə 1962-ci ildə Fernando J. Corbato tərəfindən adlanan sistemdə təsvir edilmişdir.
Uyğun Vaxt Paylaşım Sistemi (CTSS). Bu işlər (sonrakı işlər də daxil olmaqla
Multics) sonradan Turing Mükafatına namizəd oldular. Planlaşdırıcı idi
sonradan təkmilləşdi və artıq tapıla bilən görünüşü əldə etdi
bəzi müasir sistemlər.

MLFQ alqoritmi üst-üstə düşən 2 əsas problemi həll etməyə çalışır.
Əvvəla, o, əvvəlki mühazirədə müzakirə etdiyimiz kimi, ən çox növbənin başından başlamaq üsulu ilə optimallaşdırılan dövriyyə müddətini optimallaşdırmağa çalışır.
qısa tapşırıqlar. Bununla belə, ƏS bu və ya digər prosesin nə qədər davam edəcəyini bilmir və bu
SJF, STCF alqoritmlərinin işləməsi üçün zəruri biliklər. İkincisi, MLFQ çalışır
sistemi istifadəçilər üçün (məsələn, oturanlar və
tapşırığın tamamlanmasını gözləyərkən ekrana baxmaq) və bununla da vaxtı minimuma endirmək
cavab. Təəssüf ki, RR kimi alqoritmlər cavab müddətini yaxşılaşdırır, lakin son dərəcə
dövriyyə müddəti metrikasına pis təsir göstərir. Beləliklə, bizim problemimiz: necə dizayn etmək olar
tələblərimizə cavab verəcək və eyni zamanda heç bir şey bilməyən planlaşdırıcı
prosesin xarakteri, ümumiyyətlə? Planlayıcı tapşırıqların xüsusiyyətlərini necə öyrənə bilər,
hansını işə salır və beləliklə daha yaxşı planlaşdırma qərarları verir?

Problemin mahiyyəti: Mükəmməl bilik olmadan tapşırıqların qoyulmasını necə planlaşdırmaq olar?
Eyni zamanda cavab vaxtını minimuma endirən bir planlaşdırıcı necə tərtib etmək olar
interaktiv tapşırıqlar üçün və eyni zamanda bilmədən işləmə müddətini minimuma endirir
tapşırığın icra müddəti haqqında məlumatınız varmı?

Qeyd: Əvvəlki hadisələrdən öyrənirik

MLFQ növbəsi təlim keçmiş sistemin əla nümunəsidir
gələcəyi proqnozlaşdırmaq üçün keçmiş hadisələr. Bu cür yanaşmalar tez-tez olur
OS-də (Və kompüter elmində bir çox digər sahələr, o cümlədən filiallar
aparat proqnozları və keş alqoritmləri). Oxşar gəzintilər
tapşırıqların davranış fazaları olduqda və beləliklə proqnozlaşdırıla biləndə işə salınır.
Ancaq bu texnika ilə diqqətli olmaq lazımdır, çünki proqnozlar çox asandır.
səhv çıxa və sistemin daha pis qərarlar qəbul etməsinə səbəb ola bilər
ümumiyyətlə məlumatsız olardı.

MLFQ: Əsas Qaydalar

MLFQ alqoritminin əsas qaydalarına nəzər salaq. Bu alqoritmin həyata keçirilməsinə baxmayaraq
bir neçə var, əsas yanaşmalar oxşardır.
Nəzərə alacağımız tətbiqdə MLFQ bir neçə olacaq
ayrı-ayrı növbələr, hər birinin fərqli prioritetləri olacaq. İstənilən vaxt,
icraya hazır olan tapşırıq eyni növbədədir. MLFQ prioritetlərdən istifadə edir,
icra üçün hansı tapşırığın icrasına qərar vermək, yəni. daha yüksək vəzifə
prioritet (ən yüksək prioritetə ​​malik növbədən gələn tapşırıq) birinci işə salınacaq
növbə.
Əlbəttə ki, müəyyən bir növbədə birdən çox tapşırıq ola bilər, belə ki
ona görə də onlar eyni prioritetə ​​sahib olacaqlar. Bu vəziyyətdə mexanizm istifadə ediləcək
Bu vəzifələr arasında başlanğıc planlaması üçün RR.
Beləliklə, MLFQ üçün iki əsas qaydaya çatırıq:

  • Qayda 1: Prioritet(A) > Prioritet(B) olarsa, A tapşırığı işə salınacaq (B olmayacaq)
  • Qayda 2: Prioritet(A) = Prioritet(B) olarsa, A&B RR-dən istifadə etməyə başlayır

Yuxarıda göstərilənlərə əsasən, MLFQ-nin planlaşdırılmasının əsas elementləri
prioritetlərdir. Hər birinə sabit bir prioritet vermək əvəzinə
tapşırıq, MLFQ müşahidə edilən davranışdan asılı olaraq prioritetini dəyişir.
Məsələn, klaviatura girişini gözləyərkən bir tapşırıq daim CPU-da dayanırsa,
MLFQ proses prioritetini yüksək tutacaq, çünki belədir
interaktiv proses işləməlidir. Əgər, əksinə, vəzifə daim və
uzun müddətdir CPU intensivdir, MLFQ onu endirəcək
prioritetdir. Beləliklə, MLFQ proseslərin işlədiyi zaman davranışını öyrənəcək.
və davranışlardan istifadə edin.
Növbələrin bir anda necə görünə biləcəyinə dair bir nümunə çəkək
vaxt və sonra belə bir şey əldə edirsiniz:
Əməliyyat Sistemləri: Üç Asan Parça. Hissə 5: Planlaşdırma: Çox Səviyyəli Əlaqə Növbəsi (tərcümə)

Bu sxemdə 2 proses A və B ən yüksək prioritetlə növbədədir. Proses
C ortada bir yerdədir və D prosesi növbənin ən sonundadır. Yuxarıda göstərilənlərə əsasən
MLFQ alqoritminin təsviri ilə, planlaşdırıcı yalnız ən yüksək olan tapşırıqları yerinə yetirəcək
RR-ə görə prioritet və C, D tapşırıqları işdən çıxacaq.
Təbii ki, statik snapshot MLFQ-nun necə işlədiyi barədə tam məlumat verməyəcək.
Zamanla şəklin necə dəyişdiyini dəqiq başa düşmək vacibdir.

Cəhd 1: Prioriteti necə dəyişdirmək olar

Bu nöqtədə, MLFQ-nun prioritet səviyyəsini necə dəyişəcəyinə qərar verməlisiniz
tapşırıq (və beləliklə, tapşırığın növbədəki mövqeyi) onun həyat dövrü ərzində. üçün
bunun üçün iş axınını yadda saxlamalısınız: müəyyən bir məbləğ
qısa iş vaxtları olan interaktiv tapşırıqlar (və beləliklə tez-tez buraxılış
CPU) və bütün iş vaxtı CPU-dan istifadə edən bir neçə uzun tapşırıqlar
bu cür tapşırıqlar üçün cavab müddəti vacib deyil. Və beləliklə, ilk cəhdi edə bilərsiniz
MLFQ alqoritmini aşağıdakı qaydalarla həyata keçirin:

  • Qayda 3: Tapşırıq sistemə daxil olduqda, ən yüksək olan növbəyə qoyulur
  • prioritet.
  • Rule4a: Əgər tapşırıq bütün vaxt pəncərəsindən istifadə edirsə, o zaman
  • prioritet azalır.
  • Qayda 4b: Əgər Tapşırıq vaxt pəncərəsi bitməzdən əvvəl CPU-nu buraxırsa, o zaman
  • eyni prioritetdə qalır.

Nümunə 1: Tək uzunmüddətli tapşırıq

Bu nümunədə gördüyünüz kimi, qəbul zamanı vəzifə ən yüksək ilə təyin olunur
prioritet. 10 ms vaxt pəncərəsindən sonra proses prioritet olaraq aşağı salınır.
planlaşdırıcı. Növbəti dəfə pəncərədən sonra tapşırıq nəhayət olaraq aşağı səviyyəyə endirilir
qaldığı yerdə sistemdə ən aşağı prioritetdir.
Əməliyyat Sistemləri: Üç Asan Parça. Hissə 5: Planlaşdırma: Çox Səviyyəli Əlaqə Növbəsi (tərcümə)

Nümunə 2: Qısa bir tapşırıq götürdüm

İndi gəlin MLFQ-nun SJF-ə necə yaxınlaşmağa çalışacağına dair bir nümunəyə baxaq. Bunda
məsələn, iki vəzifə: A, davamlı olaraq uzun müddət davam edən bir vəzifədir
CPU və B-ni tutmaq, bu qısa bir interaktiv tapşırıqdır. Güman
B tapşırığı gələnə qədər A artıq bir müddət işləyirdi.
Əməliyyat Sistemləri: Üç Asan Parça. Hissə 5: Planlaşdırma: Çox Səviyyəli Əlaqə Növbəsi (tərcümə)

Bu qrafik ssenarinin nəticələrini göstərir. Tapşırıq A, hər hansı bir tapşırıq kimi,
CPU istifadə ən aşağı idi. B tapşırığı T=100 vaxtında gələcək və gələcək
ən yüksək prioritet növbəyə yerləşdirilir. İşləmə müddəti qısa olduğundan,
sonuncu növbəyə çatmazdan əvvəl tamamlanacaq.

Bu nümunədən alqoritmin əsas məqsədini başa düşməlisiniz: çünki alqoritm bunu etmir
uzun və ya qısa bir tapşırığı bilir, sonra ilk növbədə tapşırığı öz üzərinə götürür
qısadır və ona ən yüksək prioritet verir. Əgər həqiqətən qısa bir işdirsə, deməli
tez tamamlanacaq, əks halda uzun bir işdirsə, yavaş-yavaş hərəkət edəcək
aşağı prioritet və tezliklə sübut edəcək ki, o, həqiqətən uzun bir iş deyil
cavab tələb edir.

Misal 3: I/O haqqında nə demək olar?

İndi bir I/O nümunəsinə baxaq. 4b qaydasında göstərildiyi kimi,
proses bütün prosessor vaxtını istifadə etmədən prosessoru buraxırsa,
sonra eyni prioritet səviyyəsində qalır. Bu qaydanın məqsədi olduqca sadədir.
- interaktiv iş bir çox I/O yerinə yetirirsə, məsələn, gözləmək
istifadəçi düymələri və ya siçan vuruşlarından belə bir tapşırıq prosessoru azad edəcək
ayrılmış pəncərədən əvvəl. Biz belə bir prioritet vəzifəni buraxmaq istəməzdik,
və beləliklə də eyni səviyyədə qalacaq.
Əməliyyat Sistemləri: Üç Asan Parça. Hissə 5: Planlaşdırma: Çox Səviyyəli Əlaqə Növbəsi (tərcümə)

Bu nümunə alqoritmin bu cür proseslərlə necə işləyəcəyini göstərir - icra etməzdən əvvəl yalnız 1ms üçün CPU tələb edən interaktiv tapşırıq B.
I/O prosesi və hər zaman CPU-dan istifadə edən uzun bir iş A.
MLFQ davam etdikcə B prosesini ən yüksək prioritetdə saxlayır
CPU-nu buraxın. Əgər B interaktiv tapşırıqdırsa, bu halda alqoritm çatmışdır
onun məqsədi interaktiv tapşırıqları tez bir zamanda işə salmaqdır.

Mövcud MLFQ alqoritmi ilə bağlı problemlər

Əvvəlki nümunələrdə biz MLFQ-nun əsas versiyasını qurmuşuq. Və deyəsən o
öz işini yaxşı və vicdanla yerinə yetirir, CPU vaxtını ədalətli şəkildə bölüşdürür
uzun tapşırıqlar və qısa tapşırıqlara və ya çox əldə edilən tapşırıqlara imkan verir
tez emal etmək üçün I/O. Təəssüf ki, bu yanaşma bir neçəsini ehtiva edir
ciddi problemlər.
Əvvəla, aclıq problemi: sistem çoxlu interaktiv olarsa
tapşırıqlar, onlar bütün CPU vaxtını sərf edəcəklər və beləliklə, bir dənə də uzun olmayacaq
tapşırığı yerinə yetirmək şansı olmayacaq (onlar acından ölürlər).

İkincisi, ağıllı istifadəçilər proqramlarını elə yaza bilərdilər ki
planlaşdırıcını aldat. Aldatma, məcbur etmək üçün bir şey etməkdir
prosesə daha çox CPU vaxtı vermək üçün planlaşdırıcı. Alqoritm ki
Yuxarıda təsvir edilənlər oxşar hücumlara qarşı olduqca həssasdır: vaxt pəncərəsi praktiki olaraq əvvəl
artıq, bir I / O əməliyyatı yerinə yetirməlisiniz (bəzilərinə, hansı fayldan asılı olmayaraq)
və beləliklə CPU-nu azad edin. Bu cür davranış eyni vəziyyətdə qalmağınıza imkan verəcəkdir
növbənin özü və yenidən CPU vaxtının daha böyük faizini əldə edir. Əgər etsən
bu düzgündür (məsələn, CPU-nu buraxmazdan əvvəl pəncərə vaxtının 99%-ni işlədin),
belə bir vəzifə sadəcə prosessoru monopoliya altına ala bilər.

Nəhayət, proqram zamanla öz davranışını dəyişə bilər. Həmin vəzifələr
CPU istifadə edən interaktiv ola bilər. Bizim nümunəmizdə oxşardır
tapşırıqlar başqaları kimi planlaşdırıcıdan lazımi müalicə almayacaq
(orijinal) interaktiv tapşırıqlar.

Tamaşaçılara sual: müasir dünyada planlaşdırıcıya hansı hücumlar edilə bilər?

Cəhd 2: Prioriteti artırın

Qaydaları dəyişdirməyə çalışaq və problemlərdən qaça biləcəyimizi görək
oruc tutmaq. Bunu təmin etmək üçün nə edə bilərik
CPU tapşırıqları öz vaxtını alacaq (uzun olmasa da).
Problemin sadə bir həlli olaraq, vaxtaşırı təklif edə bilərsiniz
sistemdəki bütün bu kimi vəzifələrin prioritetini artırmaq. Bir çox yol var
Buna nail olmaq üçün misal kimi sadə bir şeyi həyata keçirməyə çalışaq: tərcümə et
bütün vəzifələr bir anda ən yüksək prioritetdir, buna görə də yeni qayda:

  • Qayda 5: Müəyyən S müddətindən sonra sistemdəki bütün tapşırıqları ən yüksək növbəyə köçürün.

Yeni qaydamız eyni anda iki problemi həll edir. Birincisi, proseslər
ac qalmamağa zəmanət verilir: ən yüksək növbədə olan tapşırıqlar paylaşılacaq
RR alqoritminə görə CPU vaxtı və beləliklə bütün prosesləri alacaq
CPU vaxtı. İkincisi, əvvəllər istifadə edilən bəzi proses varsa
yalnız prosessor interaktiv olur, o, ən yüksək olan növbədə qalacaq
bir dəfə ən yüksək prioritetə ​​təkan aldıqdan sonra prioritet.
Məsələni nəzərdən keçirək. Bu ssenaridə istifadə edərək tək bir prosesi nəzərdən keçirin
Əməliyyat Sistemləri: Üç Asan Parça. Hissə 5: Planlaşdırma: Çox Səviyyəli Əlaqə Növbəsi (tərcümə)

CPU və iki interaktiv, qısa proses. Şəkildə solda, rəqəm prioritet təkan olmadan davranışı göstərir və beləliklə, sistemə iki interaktiv tapşırıq gəldikdən sonra uzunmüddətli tapşırıq ac qalmağa başlayır. Sağdakı şəkildə, hər 50 ms bir prioritet artım həyata keçirilir və beləliklə, bütün proseslər prosessor vaxtının alınmasına zəmanət verilir və vaxtaşırı işə salınacaqdır. Bu vəziyyətdə 50 ms nümunə götürülür, əslində bu rəqəm bir qədər yüksəkdir.
Aydındır ki, dövri yüksəlmə vaxtının S əlavə edilməsi gətirib çıxarır
məntiqi sual: hansı dəyər təyin edilməlidir? Layiq olanlardan biri
sistem mühəndisləri John Ousterhout sistemlərdəki oxşar kəmiyyətlərə voo-doo kimi istinad edirdi
daimi, çünki onlar müəyyən şəkildə düzgünlük üçün qara sehr tələb edirdilər
məruz qalma. Təəssüf ki, S-in belə bir ləzzəti var. Siz də dəyəri təyin etsəniz
böyük - uzun vəzifələr ac qalacaq. Və onu çox aşağı təyin etsəniz,
interaktiv tapşırıqlar lazımi CPU vaxtını almayacaq.

Cəhd 3: Daha yaxşı Mühasibat Uçotu

İndi həll etməli olduğumuz başqa bir problemimiz var: necə etməməli
planlayıcımızı aldatmağa icazə verin? Bu ehtimalın günahkarlarıdır
4a, 4b qaydaları, işin prioritetini saxlamağa imkan verir, prosessoru azad edir
ayrılmış vaxt bitməzdən əvvəl. Bununla necə məşğul olmaq olar?
Bu vəziyyətdə həll hər biri üçün CPU vaxtının daha yaxşı uçotu hesab edilə bilər
MLFQ səviyyəsi. Proqramın istifadə etdiyi vaxtı unutmaq yerinə
ayrılmış interval üçün prosessor, onu nəzərə almalı və saxlamalısınız. sonra
proses ona ayrılan vaxtı başa vurdu, o, növbəti mərhələyə endirilməlidir
prioritet səviyyəsi. İndi prosesin öz vaxtından necə istifadə edəcəyinin fərqi yoxdur - necə
prosessorda və ya zənglər dəsti kimi daim hesablama. Beləliklə,
4-cü qayda aşağıdakı redaksiyada verilsin:

  • Qayda 4: Tapşırıq cari növbədə ayrılmış vaxtını istifadə etdikdən sonra (prosessoru neçə dəfə azad etməsindən asılı olmayaraq) belə tapşırığın prioriteti azalır (növbədə aşağı hərəkət edir).

Bir misala baxaq:
Əməliyyat Sistemləri: Üç Asan Parça. Hissə 5: Planlaşdırma: Çox Səviyyəli Əlaqə Növbəsi (tərcümə)»

Şəkil planlaşdırıcını aldatmağa çalışsanız nə olacağını göstərir
əvvəlki qaydalar 4a ilə olsaydı, 4b soldakı nəticə olardı. Yeni ilə
qayda nəticənin sağda olmasıdır. Qorumadan əvvəl hər hansı bir proses tamamlanmadan əvvəl I/O çağıra bilər və
beləliklə, davranışdan asılı olmayaraq qorunmanı təmin etdikdən sonra CPU-da üstünlük təşkil edin
I/O, o, yenə də növbəyə düşəcək və beləliklə, vicdansızlıq edə bilməyəcək
CPU resurslarını ələ keçirin.

MLFQ-nin təkmilləşdirilməsi və digər məsələlər

Yuxarıda göstərilən təkmilləşdirmələrlə yeni problemlər ortaya çıxır: əsas problemlərdən biri
suallar - belə bir planlaşdırıcını necə parametrləşdirmək olar? Bunlar. Nə qədər olmalıdır
növbələr? Növbə daxilində proqram pəncərəsinin ölçüsü nə qədər olmalıdır? Necə
aclıq və aclıqdan qaçınmaq üçün tez-tez proqrama üstünlük verilməlidir
proqramın davranışının dəyişməsini nəzərə almaq üçün? Bu suallara heç bir sadəlik yoxdur
cavab və yalnız yüklər və sonrakı konfiqurasiya ilə sınaqlar
planlayıcı bəzi qənaətbəxş tarazlığa səbəb ola bilər.

Məsələn, əksər MLFQ tətbiqləri sizə fərqli təyin etməyə imkan verir
müxtəlif növbələr üçün vaxt intervalları. Adətən yüksək prioritet növbələr olur
qısa intervallar. Bu növbələr interaktiv tapşırıqlardan ibarətdir,
arasında keçid olduqca həssasdır və 10 və ya daha az vaxt almalıdır
Xanım. Bunun əksinə olaraq, aşağı prioritet növbələr istifadə olunan uzunmüddətli vəzifələrdən ibarətdir
CPU. Və bu halda, uzun zaman intervalları çox yaxşı uyğun gəlir (100ms).
Əməliyyat Sistemləri: Üç Asan Parça. Hissə 5: Planlaşdırma: Çox Səviyyəli Əlaqə Növbəsi (tərcümə)

Bu nümunədə yüksək prioritet növbə 2-də işləyən 20 tapşırıq var
ms 10ms pəncərələrə bölünür. Orta növbədə (40 ms pəncərə) və aşağı prioritet növbədə 20 ms
Tapşırıqların işini tamamladığı yerdə növbə vaxtı pəncərəsi 40 ms oldu.

MLFQ-nun Solaris OS tətbiqi vaxt mübadiləsi planlaşdırıcıları sinfidir.
Planlaşdırıcı onun necə olması lazım olduğunu dəqiq müəyyən edən bir sıra cədvəllər təqdim edəcək
müddəti ərzində prosesin prioritetini dəyişdirmək, ölçüsü nə olmalıdır
ayrılmış pəncərə və tapşırıq prioritetlərini nə qədər tez-tez yüksəltmək lazımdır. Administrator
sistem bu cədvəllə qarşılıqlı əlaqədə ola bilər və planlaşdırıcının davranışını təmin edə bilər
fərqli. Varsayılan olaraq, bu cədvəldə tədricən artımla 60 növbə var
pəncərə ölçüsü 20 ms-dən (yüksək prioritet) bir neçə yüz ms-ə qədər (ən aşağı prioritet) və
həmçinin saniyədə bir dəfə bütün tapşırıqların gücləndirilməsi ilə.

Digər MLFQ planlaşdırıcıları cədvəldən və ya hər hansı xüsusi istifadə etmir
Bu fəsildə təsvir olunan qaydalar, əksinə, prioritetləri istifadə edərək hesablayırlar
riyazi düsturlar. Məsələn, FreeBSD-də planlaşdırıcı formuldan istifadə edir
prosesin nə qədər olduğuna görə cari vəzifə prioritetinin hesablanması
CPU istifadə etdi. Bundan əlavə, CPU istifadəsi zamanla çürüyür və beləliklə
Beləliklə, artan prioritet yuxarıda təsvir ediləndən bir qədər fərqli şəkildə baş verir. Bu doğrudur
çürümə alqoritmləri adlanır. 7.1 versiyasından etibarən FreeBSD ULE planlaşdırıcısından istifadə edir.

Nəhayət, bir çox planlaşdırıcının başqa xüsusiyyətləri var. Məsələn, bəziləri
planlaşdırıcılar əməliyyat sisteminin işləməsi üçün daha yüksək səviyyələri ehtiyatda saxlayır və beləliklə
Beləliklə, heç bir istifadəçi prosesi ən yüksək prioriteti ala bilməz
sistemi. Bəzi sistemlər sizə kömək etmək üçün məsləhətlər verməyə imkan verir
planlayıcının düzgün prioritetləşdirilməsi. Məsələn, əmrdən istifadə etməklə gözəl
bir tapşırığın prioritetini artıra və ya azalda və bununla da artıra və ya azalda bilərsiniz
CPU vaxtı üçün proqramın şansını azaldır.

MLFQ: Xülasə

Biz MLFQ adlı planlaşdırma yanaşmasını təsvir etdik. Onun adı
əməliyyat prinsipi ilə bağlanmışdır - bir neçə növbə var və rəydən istifadə edir
bir vəzifəyə üstünlük vermək.
Qaydaların yekun forması aşağıdakı kimi olacaq:

  • Qayda 1: Prioritet(A) > Prioritet(B) olarsa, A tapşırığı yerinə yetiriləcək (B yerinə yetirilməyəcək)
  • Qayda 2: Prioritet(A) = Prioritet(B) olarsa, A&B RR-dən istifadə etməyə başlayır
  • Qayda 3: Tapşırıq sistemə daxil olduqda, o, ən yüksək prioritet növbəyə yerləşdirilir.
  • Qayda 4: Tapşırıq cari növbədə ayrılmış vaxtını istifadə etdikdən sonra (prosessoru neçə dəfə azad etməsindən asılı olmayaraq) belə tapşırığın prioriteti azalır (növbədə aşağı hərəkət edir).
  • Qayda 5: Müəyyən S müddətindən sonra sistemdəki bütün tapşırıqları ən yüksək növbəyə köçürün.

MLFQ aşağıdakı səbəbdən maraqlıdır - haqqında bilik tələb etmək əvəzinə
tapşırığın xarakterini əvvəlcədən alqoritm tapşırığın keçmiş davranışını öyrənir və təyin edir
müvafiq olaraq prioritetlər. Beləliklə, o, eyni anda iki stulda oturmağa çalışır - kiçik tapşırıqlar (SJF, STCF) üçün performansa nail olmaq və vicdanla uzun olanları idarə etmək,
CPU yükləmə işləri. Buna görə də, BSD və onların törəmələri də daxil olmaqla bir çox sistemlər,
Solaris, Windows, Mac planlayıcı kimi bir növ alqoritmdən istifadə edir
MLFQ əsas kimi.

Əlavə materiallar:

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

Mənbə: www.habr.com

Добавить комментарий