මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 5 කොටස: සැලසුම් කිරීම: බහු මට්ටමේ ප්‍රතිපෝෂණ පෝලිම (පරිවර්තනය)

මෙහෙයුම් පද්ධති හැඳින්වීම

හේයි හබ්ර්! මම ඔබේ අවධානයට ලිපි මාලාවක් ගෙන ඒමට කැමතියි - මගේ මතය අනුව එක් රසවත් සාහිත්‍යයක පරිවර්තන - OSTEP. මෙම ද්‍රව්‍යය unix වැනි මෙහෙයුම් පද්ධතිවල ක්‍රියාකාරිත්වය, එනම් ක්‍රියාවලි සමඟ වැඩ කිරීම, විවිධ උපලේඛන, මතකය සහ නවීන මෙහෙයුම් පද්ධතියක් සාදන වෙනත් සමාන සංරචක පිළිබඳව ගැඹුරින් සාකච්ඡා කරයි. ඔබට මෙහි සියලුම ද්‍රව්‍යවල මුල් පිටපත දැක ගත හැකිය මෙහි. පරිවර්ථනය වෘත්තීය නොවන ලෙස (තරමක් නිදහසේ) සිදු කර ඇති බව කරුණාවෙන් සලකන්න, නමුත් මම සාමාන්‍ය අර්ථය රඳවා ගැනීමට බලාපොරොත්තු වෙමි.

මෙම විෂය පිළිබඳ රසායනාගාර කටයුතු මෙහි සොයාගත හැකිය:

වෙනත් අමතර කොටස්:

ඔබට මගේ නාලිකාව ද පරීක්ෂා කළ හැකිය විදුලි පණිවුඩ =)

සැලසුම් කිරීම: බහු මට්ටමේ ප්‍රතිපෝෂණ පෝලිම

මෙම දේශනයේදී අපි වඩාත් ප්රසිද්ධ ප්රවේශයන් වර්ධනය කිරීමේ ගැටළු ගැන කතා කරමු
සැලසුම් කිරීම, එය හැඳින්වේ බහු මට්ටමේ ප්‍රතිපෝෂණ පෝලිම (MLFQ). MLFQ උපලේඛනය ප්‍රථම වරට විස්තර කරන ලද්දේ 1962 දී Fernando J. Corbató විසින් හැඳින්වෙන පද්ධතියක් තුළිනි.
ගැළපෙන කාල-බෙදාගැනීමේ පද්ධතිය (CTSS). මෙම කෘතීන් (පසුව වැඩ කිරීම ඇතුළුව
Multics) පසුව ටියුරින් සම්මානය සඳහා නම් කරන ලදී. සැලසුම්කරු විය
පසුව වැඩි දියුණු කර දැනටමත් සොයා ගත හැකි පෙනුම ලබා ගත්තේය
සමහර නවීන පද්ධති.

MLFQ ඇල්ගොරිතම මූලික අතිච්ඡාදනය වන ගැටළු 2ක් විසඳීමට උත්සාහ කරයි.
පළමුව, එය හැරවුම් කාලය ප්‍රශස්ත කිරීමට උත්සාහ කරයි, අප පෙර දේශනයේ දී සාකච්ඡා කළ පරිදි, පෝලිමේ ආරම්භයේ සිට ආරම්භ කිරීමේ ක්‍රමය මඟින් ප්‍රශස්ත කර ඇත.
කෙටි කාර්යයන්. කෙසේ වෙතත්, යම් ක්‍රියාවලියක් කොපමණ කාලයක් ක්‍රියාත්මක වේද යන්න OS දන්නේ නැත, සහ මෙය
SJF, STCF ඇල්ගොරිතම වල ක්‍රියාකාරිත්වය සඳහා අවශ්‍ය දැනුම. දෙවනුව, MLFQ උත්සාහ කරයි
පරිශීලකයින් සඳහා පද්ධතිය ප්‍රතිචාරාත්මක කරන්න (උදාහරණයක් ලෙස, වාඩි වී සිටින අය සඳහා සහ
කාර්යය සම්පූර්ණ වන තෙක් තිරය දෙස බලා සිටින්න) එවිට කාලය අවම කරන්න
ප්රතිචාරය. අවාසනාවන්ත ලෙස, RR වැනි ඇල්ගොරිතම ප්රතිචාර කාලය වැඩි දියුණු කරයි, නමුත් අතිශයින්ම
හැරවුම් කාල මෙට්‍රික් මත නරක බලපෑමක් ඇති කරයි. එබැවින් අපගේ ගැටලුව: නිර්මාණය කරන්නේ කෙසේද
කිසිවක් නොදැන අපගේ අවශ්‍යතා සපුරාලන කාලසටහන්කරුවෙකු
සාමාන්යයෙන් ක්රියාවලියේ ස්වභාවය? කාලසටහන් කරන්නා විසින් කාර්යයේ ලක්ෂණ ඉගෙන ගන්නේ කෙසේද,
එය දියත් කරන අතර එමඟින් වඩා හොඳ සැලසුම් තීරණ ගන්නේ කුමක්ද?

ගැටලුවේ සාරය: පරිපූර්ණ දැනුමකින් තොරව කාර්යයන් සැකසීම සැලසුම් කරන්නේ කෙසේද?
එකවර ප්‍රතිචාර දැක්වීමේ කාලය අවම කරන උපලේඛකයක් සැලසුම් කරන්නේ කෙසේද
අන්තර් ක්රියාකාරී කාර්යයන් සඳහා සහ ඒ සමගම නොදැනුවත්වම හැරවුම් කාලය අවම කරයි
කාර්යය ක්රියාත්මක කිරීමේ කාලය පිළිබඳ දැනුම?

සටහන: අපි පෙර සිදුවීම් වලින් ඉගෙන ගන්නෙමු

MLFQ පෝලිම යනු ඉගෙන ගන්නා පද්ධතියක විශිෂ්ට උදාහරණයකි
අනාගතය පුරෝකථනය කිරීමට අතීත සිදුවීම්. සමාන ප්රවේශයන් බොහෝ විට සිදු වේ
OS හි දක්නට ලැබේ (සහ ශාඛා ඇතුළු පරිගණක විද්‍යාවේ තවත් බොහෝ ශාඛා
දෘඪාංග අනාවැකි සහ හැඹිලි ඇල්ගොරිතම). සමාන චාරිකා
කර්තව්‍යයන් චර්යාත්මක අවධීන් ඇති විට ක්‍රියා විරහිත වන අතර එමඟින් පුරෝකථනය කළ හැකිය.
කෙසේ වෙතත්, අනාවැකි ඉතා පහසු බැවින් ඔබ මෙම තාක්ෂණය සමඟ ප්රවේශම් විය යුතුය
වැරදි බවට පත් විය හැකි අතර වඩා නරක තීරණ ගැනීමට පද්ධතිය මෙහෙයවනු ඇත
කිසිම දැනුමක් නැතුව ඇති.

MLFQ: මූලික නීති

MLFQ ඇල්ගොරිතමයේ මූලික නීති බලමු. මෙම ඇල්ගොරිතම ක්‍රියාත්මක කළත්
කිහිපයක් තිබේ, මූලික ප්රවේශයන් සමාන වේ.
අපි බලනවා ක්‍රියාත්මක කිරීමේදී, MLFQ කිහිපයක් ඇත
වෙනම පෝලිම්, ඒ සෑම එකක්ම වෙනස් ප්‍රමුඛතාවයක් ඇත. ඕනෑම අවස්ථාවක,
ක්‍රියාත්මක කිරීමට සූදානම් කාර්යයක් එක් පෝලිමක ඇත. MLFQ ප්‍රමුඛතා භාවිතා කරයි,
ක්රියාත්මක කිරීම සඳහා කුමන කාර්යය ක්රියාත්මක කිරීමට තීරණය කිරීමට, i.e. ඉහළ සමඟ කාර්යය
ප්‍රමුඛතාවය (ඉහළම ප්‍රමුඛතාවය ඇති පෝලිමේ සිට කාර්යය) පළමුව දියත් කෙරේ
පෝලිම.
ඇත්ත වශයෙන්ම, දී ඇති පෝලිමක එක් කාර්යයකට වඩා තිබිය හැක, එබැවින්
එබැවින් ඔවුන්ට සමාන ප්රමුඛතාවයක් ලැබෙනු ඇත. මෙම අවස්ථාවේදී, යාන්ත්රණය භාවිතා කරනු ඇත
මෙම කාර්යයන් අතර ධාවනයක් උපලේඛනගත කිරීමට RR.
මේ අනුව අපි MLFQ සඳහා මූලික නීති දෙකකට පැමිණෙමු:

  • රීති 1: ප්‍රමුඛතාවය(A) > ප්‍රමුඛතාවය(B), කාර්යය A දියත් කෙරේ නම් (B නොවේ)
  • රීති 2: ප්‍රමුඛතාවය(A) = ප්‍රමුඛතාවය(B), A&B RR භාවිතයෙන් ආරම්භ කර තිබේ නම්

ඉහත මත පදනම්ව, MLFQ සැලසුම් කිරීම සඳහා ප්රධාන අංග
ප්‍රමුඛතා වේ. එක එක අයට ස්ථිර ප්‍රමුඛතාවයක් දෙනවා වෙනුවට
කර්තව්‍යය, MLFQ නිරීක්ෂණය කරන ලද හැසිරීම අනුව එහි ප්‍රමුඛතාවය වෙනස් කරයි.
උදාහරණයක් ලෙස, කාර්යයක් යතුරුපුවරු ආදානය සඳහා රැඳී සිටින අතරතුර CPU වෙත නිරන්තරයෙන් වැඩ විසි කරන්නේ නම්,
MLFQ ක්‍රියාවලි ප්‍රමුඛතාවය ඉහළ මට්ටමක තබා ගනු ඇත, මන්ද එය එසේ වේ
අන්තර් ක්රියාකාරී ක්රියාවලියක් ක්රියා කළ යුතුය. නම්, ඊට පටහැනිව, කාර්යය නිරන්තරයෙන් සහ
දිගු කාලයක් පුරා CPU භාවිතා කරයි, MLFQ එය අඩු කරයි
ප්රමුඛතාවයක්. මේ අනුව, MLFQ ක්‍රියාවලි ක්‍රියාත්මක වන විට ඒවායේ හැසිරීම අධ්‍යයනය කරනු ඇත
සහ හැසිරීම් භාවිතා කරන්න.
යම් අවස්ථාවක පෝලිම් කෙබඳු විය හැකිද යන්න පිළිබඳ උදාහරණයක් අපි බලමු
කාලය සහ පසුව ඔබට මෙවැනි දෙයක් ලැබේ:
මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 5 කොටස: සැලසුම් කිරීම: බහු මට්ටමේ ප්‍රතිපෝෂණ පෝලිම (පරිවර්තනය)

මෙම යෝජනා ක්‍රමයේ A සහ ​​B ක්‍රියාවලි 2 ක් ඉහළම ප්‍රමුඛතා පෝලිමේ ඇත. ක්රියාවලිය
C මධ්‍යයේ කොතැනක හෝ ඇති අතර D ක්‍රියාවලි පෝලිමේ අවසානයේ ඇත. ඉහත සඳහන් පරිදි
MLFQ ඇල්ගොරිතමයේ විස්තර වලට අනුව, උපලේඛකයා විසින් කාර්යයන් ක්‍රියාත්මක කරනු ලබන්නේ ඉහළම ඒවා සමඟ පමණි.
RR අනුව ප්‍රමුඛතාවය, සහ C, D කර්තව්‍යයන් ක්‍රියා විරහිත වනු ඇත.
ස්වාභාවිකවම, ස්ථිතික ඡායාරූපයක් MLFQ ක්‍රියා කරන ආකාරය පිළිබඳ සම්පූර්ණ චිත්‍රයක් ලබා නොදේ.
කාලයත් සමඟ පින්තූරය වෙනස් වන ආකාරය නිවැරදිව තේරුම් ගැනීම වැදගත්ය.

උත්සාහය 1: ප්‍රමුඛතාවය වෙනස් කරන්නේ කෙසේද

මෙම අවස්ථාවේදී MLFQ ප්‍රමුඛතා මට්ටම වෙනස් කරන්නේ කෙසේදැයි ඔබ තීරණය කළ යුතුය
කාර්යයන් (සහ එම කාර්යය පෝලිමේ පිහිටීම) එය එහි ජීවන චක්‍රය හරහා ඉදිරියට යන විට. සදහා
කාර්ය ප්රවාහය මතක තබා ගැනීම සඳහා මෙය අවශ්ය වේ: නිශ්චිත මුදලක්
කෙටි ධාවන කාලයන් සහිත අන්තර්ක්‍රියාකාරී කාර්යයන් (සහ ඒ අනුව නිතර මුදා හැරීම
CPU) සහ CPU ඔවුන්ගේ සියලුම වැඩ කරන කාලය භාවිතා කරන දිගු-කාලීන කාර්යයන් කිහිපයක්
එවැනි කාර්යයන් සඳහා ප්රතිචාර කාලය වැදගත් නොවේ. මේ ආකාරයෙන් ඔබට ඔබේ පළමු උත්සාහය කළ හැකිය
පහත සඳහන් නීති සමඟ MLFQ ඇල්ගොරිතම ක්රියාත්මක කරන්න:

  • රීති 3: කාර්යයක් පද්ධතියට ඇතුළු වූ විට, එය ඉහළම පෝලිමේ තබා ඇත
  • ප්රමුඛත්වය.
  • Rule4a: කාර්යයක් එයට වෙන් කර ඇති සම්පූර්ණ කාල කවුළුව භාවිතා කරන්නේ නම්, එය
  • ප්රමුඛත්වය අඩු වේ.
  • Rule4b: කාර්යයක් එහි කාල කවුළුව කල් ඉකුත් වීමට පෙර CPU මුදා හරින්නේ නම්, එය
  • එකම ප්‍රමුඛතාවයකින් පවතී.

උදාහරණ 1: තනි දිගුකාලීන කාර්යයක්

මෙම උදාහරණයේ දැකිය හැකි පරිදි, ඇතුළත් වීමේ කාර්යය ඉහළම ලෙස සකසා ඇත
ප්රමුඛත්වය. 10ms කාල කවුළුවකින් පසුව, ක්‍රියාවලිය ප්‍රමුඛතාවයෙන් පහත හෙලනු ලැබේ
සැලසුම්කරු. ඊළඟ කාල කවුළුවෙන් පසුව, කාර්යය අවසානයේ පහත හෙලනු ලැබේ
පද්ධතියේ අඩුම ප්‍රමුඛතාවය, එය පවතින තැන.
මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 5 කොටස: සැලසුම් කිරීම: බහු මට්ටමේ ප්‍රතිපෝෂණ පෝලිම (පරිවර්තනය)

උදාහරණ 2: කෙටි කාර්යයක් ලබා දී ඇත

දැන් අපි බලමු MLFQ SJF වෙත ළඟා වීමට උත්සාහ කරන ආකාරය පිළිබඳ උදාහරණයක් බලමු. ඒ තුළ
උදාහරණයක් ලෙස, කාර්යයන් දෙකක්: A, එය නිරන්තරයෙන් දිගුකාලීන කාර්යයකි
කෙටි අන්තර්ක්‍රියාකාරී කාර්යයක් වන CPU සහ B වාඩිලාගැනීම. සිතන්න
කාර්යය B පැමිණෙන විට A ඒ වන විටත් ටික වේලාවක් වැඩ කරමින් සිටි බව.
මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 5 කොටස: සැලසුම් කිරීම: බහු මට්ටමේ ප්‍රතිපෝෂණ පෝලිම (පරිවර්තනය)

මෙම ප්‍රස්ථාරය දර්ශනයේ ප්‍රතිඵල පෙන්වයි. A කාර්යය, ඕනෑම කාර්යයක් මෙන්,
CPU භාවිතය ඉතා පහළම විය. කාර්යය B T=100 වේලාවට පැමිණේ
ඉහළම ප්‍රමුඛතා පෝලිමේ තබා ඇත. එහි මෙහෙයුම් කාලය කෙටි බැවින්, එසේ නම්
අවසාන පෝලිමට පැමිණීමට පෙර එය සම්පූර්ණ වනු ඇත.

මෙම උදාහරණයෙන්, ඇල්ගොරිතමයේ ප්‍රධාන ඉලක්කය තේරුම් ගත යුතුය: ඇල්ගොරිතම එසේ නොවන බැවින්
කාර්යයක් දිගු ද කෙටි ද යන්න දනී, පසුව ඔහු මුලින්ම උපකල්පනය කරන්නේ කාර්යය බව ය
කෙටි වන අතර එය ඉහළම ප්රමුඛත්වය ලබා දෙයි. මෙය ඉතා කෙටි කාර්යයක් නම්, එසේ නම්
එය ඉක්මනින් අවසන් වනු ඇත, එසේ නොමැති නම් එය දිගු කාර්යයක් නම්, එය සෙමින් ගමන් කරයි
ප්‍රමුඛතාවය අඩු වන අතර ඇය සැබවින්ම එසේ නොකරන දිගු කාර්යයක් බව ඉක්මනින් ඔප්පු කරනු ඇත
ප්රතිචාරයක් අවශ්ය වේ.

උදාහරණ 3: I/O ගැන කුමක් කිව හැකිද?

දැන් අපි I/O උදාහරණයක් බලමු. රීති 4b හි සඳහන් පරිදි,
ක්‍රියාවලියක් ප්‍රොසෙසරය එහි සියලුම ප්‍රොසෙසර කාලය භාවිතා නොකර මුදා හරින්නේ නම්,
එවිට එය ප්‍රමුඛතා මට්ටමේම පවතී. මෙම රීතියේ අරමුණ තරමක් සරල ය
- අන්තර්ක්‍රියාකාරී කාර්යය බොහෝ I/O මෙහෙයුම් සිදු කරන්නේ නම්, උදාහරණයක් ලෙස, බලා සිටීම
පරිශීලක යතුර හෝ මූසිකය එබීමෙන්, එවැනි කාර්යයක් ප්රොසෙසරය නිදහස් කරනු ඇත
වෙන් කළ කවුළුවට පෙර. එවැනි කාර්යයක ප්‍රමුඛතාවය පහත හෙළීමට අපි කැමති නැත,
එබැවින් එය එකම මට්ටමේ පවතිනු ඇත.
මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 5 කොටස: සැලසුම් කිරීම: බහු මට්ටමේ ප්‍රතිපෝෂණ පෝලිම (පරිවර්තනය)

එවැනි ක්‍රියාවලීන් සමඟ ඇල්ගොරිතම ක්‍රියා කරන්නේ කෙසේදැයි මෙම උදාහරණය පෙන්වයි - අන්තර්ක්‍රියාකාරී ජොබ් බී, ක්‍රියාත්මක කිරීමට පෙර CPU 1ms සඳහා පමණක් අවශ්‍ය වේ.
I/O ක්‍රියාවලිය සහ දිගුකාලීන රැකියා A, එහි මුළු කාලයම CPU භාවිතා කරයි.
MLFQ ක්‍රියාවලිය B ඉහළම ප්‍රමුඛතාවයේ තබා ගන්නේ එය දිගටම පවතින බැවිනි
CPU නිදහස් කරන්න. B යනු අන්තර් ක්රියාකාරී කාර්යයක් නම්, ඇල්ගොරිතම සාක්ෂාත් කර ඇත
ඔබේ ඉලක්කය වන්නේ අන්තර් ක්රියාකාරී කාර්යයන් ඉක්මනින් ක්රියාත්මක කිරීමයි.

වත්මන් MLFQ ඇල්ගොරිතම සමඟ ගැටළු

පෙර උදාහරණ වලදී අපි MLFQ හි මූලික අනුවාදයක් ගොඩනගා ගත්තෙමු. සහ ඔහු බව පෙනේ
එහි කාර්යය හොඳින් සහ අවංකව ඉටු කරයි, CPU කාලය අතර සාධාරණ ලෙස බෙදා හරිනු ලැබේ
දිගු කාර්යයන් සහ කෙටි හෝ ඉහළ පරිමාවේ කාර්යයන් සඳහා ඉඩ ලබා දීම
I/O මත ඉක්මනින් වැඩ කරන්න. අවාසනාවකට මෙන්, මෙම ප්රවේශය කිහිපයක් අඩංගු වේ
බරපතල ගැටළු.
පළමුව, කුසගින්න පිළිබඳ ගැටළුව: පද්ධතියට බොහෝ අන්තර්ක්‍රියාකාරී තිබේ නම්
කාර්යයන්, එවිට ඔවුන් සියලු ප්‍රොසෙසර කාලය පරිභෝජනය කරනු ඇති අතර එමඟින් දිගු කාලයක් එක එකක්වත් නොවේ
කාර්යය ඉටු කිරීමට නොහැකි වනු ඇත (ඔවුන් කුසගින්නෙන් පෙළෙනවා).

දෙවනුව, දක්ෂ පරිශීලකයින්ට ඔවුන්ගේ වැඩසටහන් ලිවීමට හැකි විය
උපලේඛකයා රවට්ටන්න. රැවටීම යනු බල කිරීමට යමක් කිරීමයි
උපලේඛකයා ක්‍රියාවලියට වැඩි CPU කාලයක් ලබා දෙයි. ඇල්ගොරිතම බව
ඉහත විස්තර කර ඇත්තේ සමාන ප්‍රහාරවලට බෙහෙවින් ගොදුරු විය හැකි ය: කාල කවුළුව ප්‍රායෝගිකව පෙර
අවසන්, ඔබට I/O මෙහෙයුමක් සිදු කිරීමට අවශ්‍ය වේ (සමහර අයට, කුමන ගොනුවක් වුවද)
සහ එමගින් CPU නිදහස් කරන්න. එවැනි හැසිරීම් ඔබට එලෙසම සිටීමට ඉඩ සලසයි
පෝලිමේම නැවත වරක් CPU කාලයෙන් විශාල ප්‍රතිශතයක් ලබා ගනී. ඔබ කරන්නේ නම්
මෙය නිවැරදියි (උදාහරණයක් ලෙස, CPU මුදා හැරීමට පෙර කවුළු කාලයෙන් 99% ක් ක්‍රියාත්මක කරන්න),
එවැනි කාර්යයක් සරලව ප්රොසෙසරය ඒකාධිකාරී කළ හැක.

අවසාන වශයෙන්, වැඩසටහනකට කාලයත් සමඟ එහි හැසිරීම වෙනස් කළ හැකිය. එම කාර්යයන්
CPU භාවිතා කළ ඒවා අන්තර්ක්‍රියාකාරී විය හැක. අපගේ උදාහරණයේ, සමාන
අනෙකුත් කාර්යයන්ට නියමිත පරිදි උපලේඛනකරුගෙන් ඔවුන්ට ලැබිය යුතු සැලකීම නොලැබේ
(ආරම්භක) අන්තර් ක්රියාකාරී කාර්යයන්.

ප්‍රේක්ෂකයින් සඳහා ප්‍රශ්නය: නූතන ලෝකයේ කාලසටහන්කරුට එල්ල කළ හැකි ප්‍රහාර මොනවාද?

උත්සාහය 2: ප්‍රමුඛතාවය වැඩි කිරීම

අපි නීති වෙනස් කිරීමට උත්සාහ කර ගැටළු වළක්වා ගත හැකිදැයි බලමු
නිරාහාරව සිටීම. එය සම්බන්ධ බව සහතික කිරීමට අපට කළ හැක්කේ කුමක්ද?
CPU කාර්යයන් සඳහා ඔවුන්ගේ කාලය ලැබෙනු ඇත (දිගු නොවේ වුවද).
ගැටලුවට සරල විසඳුමක් ලෙස, ඔබට වරින් වර යෝජනා කළ හැකිය
පද්ධතියේ එවැනි සියලු කාර්යයන්හි ප්‍රමුඛතාවය ඉහළ නැංවීම. බොහෝ ක්රම තිබේ
මෙය සාක්ෂාත් කර ගැනීම සඳහා, උදාහරණයක් ලෙස සරල දෙයක් ක්රියාත්මක කිරීමට උත්සාහ කරමු: පරිවර්තනය කරන්න
සියලුම කාර්යයන් වහාම ඉහළම ප්‍රමුඛතාවය ලබා දෙනු ලැබේ, එබැවින් නව රීතිය:

  • රීතිය 5: නිශ්චිත කාල සීමාවකට පසු S, පද්ධතියේ සියලුම කාර්යයන් ඉහළම පෝලිමට ගෙන යන්න.

අපගේ නව නීතිය එකවර ගැටලු දෙකක් විසඳයි. පළමුව, ක්රියාවලීන්
කුසගින්නේ නොසිටින බවට සහතික වේ: ඉහළම ප්‍රමුඛතාවයේ ඇති කාර්යයන් බෙදී යනු ඇත
RR ඇල්ගොරිතමයට අනුව CPU කාලය සහ ඒ අනුව සියලුම ක්‍රියාවලීන් ලැබෙනු ඇත
CPU කාලය. දෙවනුව, කලින් භාවිතා කරන ලද යම් ක්රියාවලියක් නම්
ප්‍රොසෙසරය පමණක් අන්තර්ක්‍රියාකාරී වේ, එය ඉහළම පෝලිමේ පවතිනු ඇත
ඉහළම ප්‍රමුඛතාවයේ එක් වරක් වැඩිවීමක් ලැබීමෙන් පසු ප්‍රමුඛතාවය.
අපි උදාහරණයක් බලමු. මෙම අවස්ථාවෙහිදී, භාවිතා කරන එක් ක්රියාවලියක් සලකා බලන්න
මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 5 කොටස: සැලසුම් කිරීම: බහු මට්ටමේ ප්‍රතිපෝෂණ පෝලිම (පරිවර්තනය)

CPU සහ අන්තර්ක්‍රියාකාරී, කෙටි ක්‍රියාවලි දෙකක්. රූපයේ වම් පසින්, රූපය ප්‍රමුඛතා ප්‍රවර්ධනයකින් තොරව හැසිරීම පෙන්නුම් කරයි, එබැවින් පද්ධතියට අන්තර්ක්‍රියාකාරී කාර්යයන් දෙකක් පැමිණීමෙන් පසු දිගුකාලීන කාර්යය සාගින්නෙන් පෙළීමට පටන් ගනී. දකුණු පස ඇති රූපයේ, සෑම 50ms ප්‍රමුඛතා වැඩි වීමක් සිදු කරනු ලබන අතර, ඒ අනුව සියලුම ක්‍රියාවලීන් CPU කාලය ලබා ගැනීම සහතික කර ඇති අතර කාලානුරූපව දියත් කෙරේ. මෙම නඩුවේ 50ms උදාහරණයක් ලෙස ගනු ලැබේ; යථාර්ථයේ දී මෙම සංඛ්යාව තරමක් වැඩි ය.
පැහැදිලිවම, ආවර්තිතා වැඩිවන කාලය S එකතු කිරීම හේතු වේ
තාර්කික ප්රශ්නයක්: කුමන අගයක් සැකසිය යුතුද? ගෞරවනීය අයගෙන් කෙනෙකි
පද්ධති ඉංජිනේරුවන් ජෝන් ඔස්ටර්හවුට් පද්ධතිවල එවැනි ප්‍රමාණ හැඳින්වූයේ voo-doo ලෙසිනි
නියත, මන්ද ඔවුන්ට යම් ආකාරයකින් නිවැරදි කිරීම සඳහා කළු මැජික් අවශ්‍ය විය
ප්රදර්ශනය කිරීම. තවද, අවාසනාවකට මෙන්, එස් එවැනි සුවඳක් ඇත. ඔබත් අගය නියම කළහොත්
විශාල - දිගු කාර්යයන් කුසගින්නේ සිටීමට පටන් ගනී. ඔබ ඉතා අඩු අගයක් සකසන්නේ නම්,
අන්තර්ක්‍රියාකාරී කාර්යයන් සඳහා නිසි CPU කාලය නොලැබෙනු ඇත.

උත්සාහය 3: වඩා හොඳ ගිණුම්කරණය

දැන් අපට විසඳීමට තවත් ගැටළුවක් තිබේ: එසේ නොකරන්නේ කෙසේද
අපගේ උපලේඛකයා රැවටීමට ඉඩ දෙන්නද? මෙම හැකියාව සම්බන්ධයෙන් දොස් පැවරිය යුත්තේ ජනතාවයි
රීති 4a, 4b, ප්‍රොසෙසරය නිදහස් කරමින් රැකියාවකට ප්‍රමුඛත්වය ලබා දීමට ඉඩ සලසයි
නියමිත කාලය අවසන් වීමට පෙර. මෙය සමඟ කටයුතු කරන්නේ කෙසේද?
මෙම නඩුවේ විසඳුම එක් එක් CPU කාලය වඩා හොඳ ගිණුම්කරණයක් ලෙස සැලකිය හැකිය
MLFQ මට්ටම. වැඩසටහන භාවිතා කළ කාලය අමතක කරනවා වෙනුවට
වෙන් කරන ලද කාලය සඳහා ප්රොසෙසරය, එය සැලකිල්ලට ගෙන සුරැකිය යුතුය. අනතුරුව
ක්‍රියාවලිය එහි වෙන් කළ කාලය භාවිතා කර ඇත, එය ඊළඟ එකට පහත දැමිය යුතුය
ප්රමුඛතා මට්ටම. ක්‍රියාවලිය එහි කාලය භාවිතා කරන්නේ කෙසේද - කෙසේද යන්න දැන් වැදගත් නොවේ
ප්රොසෙසරය මත හෝ ඇමතුම් ගණනාවක් ලෙස නිරන්තරයෙන් ගණනය කිරීම. මේ අනුව,
රීතිය 4 පහත පෝරමයට නැවත ලිවිය යුතුය:

  • රීතිය 4: කර්තව්‍යයක් වත්මන් පෝලිමේ එහි වෙන් කර ඇති කාලය භාවිතා කළ පසු (එය කොපමණ වාර ගණනක් CPU නිදහස් කළද), එම කාර්යයේ ප්‍රමුඛතාවය පහත වැටේ (එය පෝලිමේ පහළට ගමන් කරයි).

අපි උදාහරණයක් බලමු:
මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 5 කොටස: සැලසුම් කිරීම: බහු මට්ටමේ ප්‍රතිපෝෂණ පෝලිම (පරිවර්තනය)»

ඔබ උපලේඛකයා රැවටීමට උත්සාහ කළහොත් කුමක් සිදුවේද යන්න රූපයේ දැක්වේ
එය පෙර රීති 4a, 4b සමඟ තිබුනේ නම්, වම් පැත්තේ ප්රතිඵලය ලැබෙනු ඇත. සුභ අලුත්
රීතිය යනු දකුණු පස ඇති ප්‍රතිඵලයයි. ආරක්ෂාවට පෙර, ඕනෑම ක්‍රියාවලියක් සම්පූර්ණ කිරීමට පෙර I/O ඇමතීමට සහ
හැසිරීම කුමක් වුවත්, ආරක්ෂාව සබල කිරීමෙන් පසුව, CPU මත ආධිපත්‍යය දරයි
I/O, ඔහු තවමත් පෝලිමේ පහළට ගමන් කරනු ඇති අතර, එබැවින් වංක ලෙස කිරීමට නොහැකි වනු ඇත
CPU සම්පත් පවරා ගන්න.

MLFQ සහ අනෙකුත් ගැටළු වැඩිදියුණු කිරීම

ඉහත වැඩිදියුණු කිරීම් සමඟ නව ගැටළු ඇතිවේ: ප්රධාන එකක්
ප්‍රශ්න - එවැනි උපලේඛකයක් පරාමිතිකරණය කරන්නේ කෙසේද? එම. එය කොපමණ විය යුතුද
පෝලිම්? පෝලිමේ ඇති වැඩසටහන් කවුළුවේ ප්‍රමාණය කුමක් විය යුතුද? කෙසේද
කුසගින්නෙන් වැළකී සිටීම සඳහා වැඩසටහන් ප්‍රමුඛතාවය බොහෝ විට වැඩි කළ යුතුය
වැඩසටහනේ හැසිරීම් වල වෙනස සැලකිල්ලට ගත යුතුද? මෙම ප්රශ්නවලට සරල පිළිතුරක් නොමැත
පිළිතුරු සහ බර පැටවීම් සහ පසුව වින්‍යාස කිරීම සමඟ අත්හදා බැලීම් පමණි
සැලසුම්කරු යම් සතුටුදායක සමතුලිතතාවයකට මඟ පෑදිය හැක.

උදාහරණයක් ලෙස, බොහෝ MLFQ ක්‍රියාත්මක කිරීම් ඔබට විවිධ පැවරීමට ඉඩ සලසයි
විවිධ පෝලිම් සඳහා කාල පරතරයන්. සාමාන්‍යයෙන් ඉහළ ප්‍රමුඛතා පෝලිම්
කෙටි කාල පරතරයන් නියම කර ඇත. මෙම පෝලිම් අන්තර් ක්රියාකාරී කාර්යයන් වලින් සමන්විත වේ,
අතර මාරුවීම තරමක් සංවේදී වන අතර 10ක් හෝ ඊට අඩුවෙන් ගත යුතුය
මෙනෙවිය. ඊට ප්‍රතිවිරුද්ධව, අඩු ප්‍රමුඛතා පෝලිම් සමන්විත වන්නේ භාවිතා කරන දිගුකාලීන කාර්යයන් වලින්ය
CPU. තවද මෙම අවස්ථාවේ දී, දිගු කාල පරතරයන් ඉතා හොඳින් ගැලපේ (100ms).
මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 5 කොටස: සැලසුම් කිරීම: බහු මට්ටමේ ප්‍රතිපෝෂණ පෝලිම (පරිවර්තනය)

මෙම උදාහරණයේ ඉහළ ප්‍රමුඛතා පෝලිම් 2 හි වැඩ කළ කාර්යයන් 20 ක් ඇත
ms, 10ms කවුළු වලට බෙදා ඇත. මැද පෝලිමේ (40ms කවුළුව) සහ අඩු ප්‍රමුඛතාවයේ 20ms
පෝලිම් කාල කවුළුව 40ms බවට පත් වූ අතර එහිදී කාර්යයන් ඔවුන්ගේ කාර්යය සම්පූර්ණ කරන ලදී.

MLFQ හි Solaris OS ක්‍රියාත්මක කිරීම කාලය බෙදාගැනීමේ උපලේඛන පන්තියකි.
සැලසුම්කරු විසින් එය නිවැරදිව නිර්වචනය කරන වගු කට්ටලයක් ලබා දෙනු ඇත
ක්‍රියාවලියේ ප්‍රමුඛතාවය එහි ජීවිත කාලය තුළ වෙනස් වේ, ප්‍රමාණය කුමක් විය යුතුද?
වෙන් කරන ලද කවුළුව සහ ඔබට කොපමණ වාරයක් කාර්ය ප්‍රමුඛතා මතු කළ යුතුද යන්න. පරිපාලක
පද්ධතිවලට මෙම වගුව සමඟ අන්තර් ක්‍රියා කළ හැකි අතර කාලසටහන්කරුගේ හැසිරීමට හේතු වේ
වෙනස් ලෙස. පෙරනිමියෙන්, මෙම වගුවේ ක්‍රමානුකූලව වැඩිවීමක් සහිත පෝලිම් 60 ක් ඇත
කවුළු ප්‍රමාණය 20ms (ඉහළ ප්‍රමුඛතාවය) සිට ms සිය ගණනක් දක්වා (අඩු ප්‍රමුඛතාවය), සහ
තත්පරයකට වරක් සියලු කාර්යයන් වැඩි කිරීමත් සමඟ.

අනෙකුත් MLFQ සැලසුම්කරුවන් මේසයක් හෝ විශේෂිත එකක් භාවිතා නොකරයි
මෙම දේශනයේ විස්තර කර ඇති නීති, ඊට පටහැනිව, ඔවුන් භාවිතා කරමින් ප්‍රමුඛතා ගණනය කරයි
ගණිතමය සූත්ර. උදාහරණයක් ලෙස, FreeBSD උපලේඛනය සඳහා සූත්‍රයක් භාවිතා කරයි
ක්‍රියාවලිය කොපමණ කාලයක් පවතීද යන්න මත පදනම්ව කාර්යයක වත්මන් ප්‍රමුඛතාවය ගණනය කරන්න
භාවිතා කරන ලද CPU. මීට අමතරව, CPU භාවිතය කාලයත් සමඟ ක්ෂය වේ, සහ එසේ ය
මේ අනුව, ප්‍රමුඛතාවය වැඩි කිරීම ඉහත විස්තර කර ඇති ආකාරයට වඩා තරමක් වෙනස් ලෙස සිදුවේ. මෙය සත්යයයි
ක්ෂය වීමේ ඇල්ගොරිතම ලෙස හැඳින්වේ. 7.1 අනුවාදයේ සිට, FreeBSD ULE උපලේඛනය භාවිතා කර ඇත.

අවසාන වශයෙන්, බොහෝ උපලේඛනකරුවන්ට වෙනත් විශේෂාංග තිබේ. උදාහරණයක් ලෙස, සමහරක්
උපලේඛනකරුවන් විසින් මෙහෙයුම් පද්ධතියේ ක්‍රියාකාරිත්වය සඳහා ඉහළම මට්ටම් වෙන්කරවා ගනී
මේ අනුව, කිසිදු පරිශීලක ක්‍රියාවලියකට ඉහළම ප්‍රමුඛතාවය ලබා ගත නොහැක
පද්ධති. සමහර පද්ධති ඔබට උපකාර කිරීමට උපදෙස් දීමට ඉඩ සලසයි
සැලසුම්කරුට ප්‍රමුඛතා නිවැරදිව සැකසිය හැක. උදාහරණයක් ලෙස, විධානය භාවිතා කිරීම ලස්සන
ඔබට කාර්යයක ප්‍රමුඛතාවය වැඩි කිරීමට හෝ අඩු කිරීමට හැකි අතර එමඟින් වැඩි කිරීමට හෝ
CPU කාලය භාවිතා කිරීමේ වැඩසටහනේ අවස්ථා අඩු කරන්න.

MLFQ: සාරාංශය

අපි MLFQ නම් සැලසුම් ප්‍රවේශයක් විස්තර කර ඇත. ඔහුගේ නම
මෙහෙයුම් මූලධර්මය තුළ කොටා ඇත - එය පෝලිම් කිහිපයක් ඇති අතර ප්රතිපෝෂණ භාවිතා කරයි
කාර්යය ප්රමුඛතාව තීරණය කිරීමට.
නීතිවල අවසාන ආකෘතිය පහත පරිදි වේ:

  • රීතිය 1: ප්‍රමුඛතාවය(A) > ප්‍රමුඛතාවය(B) නම්, කාර්යය A දියත් කෙරේ (B නොවේ)
  • රීතිය 2: priority(A) = Priority(B), A&B ආරම්භ කරන්නේ RR භාවිතයෙන්
  • රීතිය 3: කාර්යයක් පද්ධතියට ඇතුළු වූ විට, එය ඉහළම ප්‍රමුඛතා පෝලිමේ තබා ඇත.
  • රීතිය 4: කර්තව්‍යයක් වත්මන් පෝලිමේ එහි වෙන් කර ඇති කාලය භාවිතා කළ පසු (එය කොපමණ වාර ගණනක් CPU නිදහස් කළද), එම කාර්යයේ ප්‍රමුඛතාවය පහත වැටේ (එය පෝලිමේ පහළට ගමන් කරයි).
  • රීතිය 5: නිශ්චිත කාල සීමාවකට පසු S, පද්ධතියේ සියලුම කාර්යයන් ඉහළම පෝලිමට ගෙන යන්න.

MLFQ පහත සඳහන් හේතුව නිසා සිත්ගන්නා සුළුය - ඒ වෙනුවට දැනුම අවශ්‍ය වේ
කාර්යයේ ස්වභාවය කල්තියා, ඇල්ගොරිතම කාර්යයේ අතීත හැසිරීම සහ කට්ටල අධ්‍යයනය කරයි
ඒ අනුව ප්රමුඛතා. මේ අනුව, ඔහු එකවර පුටු දෙකක වාඩි වීමට උත්සාහ කරයි - කුඩා කාර්යයන් සඳහා (SJF, STCF) ඵලදායිතාව ලබා ගැනීමට සහ අවංකව දිගු කාලයක් ධාවනය කිරීමට,
CPU-පූරණය රැකියා. එබැවින්, BSD සහ ඒවායේ ව්‍යුත්පන්නයන් ඇතුළු බොහෝ පද්ධති,
Solaris, Windows, Mac යම් ආකාරයක ඇල්ගොරිතමයක් උපලේඛනය ලෙස භාවිතා කරයි
මූලික පදනමක් ලෙස MLFQ.

අතිරේක ද්රව්ය:

  1. manpages.debian.org/stretch/manpages/sched.7.en.html
  2. en.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. chebykin.org/freebsd-process-scheduling

මූලාශ්රය: www.habr.com