මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 4 වන කොටස: උපලේඛකයාට හැඳින්වීම (පරිවර්තනය)

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

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

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

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

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

Scheduler වෙත හැඳින්වීම

ගැටලුවේ සාරය: උපලේඛන ප්රතිපත්තියක් සංවර්ධනය කරන්නේ කෙසේද
යටින් පවතින උපලේඛන ප්‍රතිපත්ති රාමු සැලසුම් කළ යුත්තේ කෙසේද? ප්රධාන උපකල්පන කුමක් විය යුතුද? වැදගත් වන මිනුම් මොනවාද? මුල් පරිගණක පද්ධතිවල භාවිතා කරන ලද මූලික තාක්ෂණික ක්රම මොනවාද?

වැඩ බර උපකල්පන

හැකි ප්‍රතිපත්ති ගැන සාකච්ඡා කිරීමට පෙර, අපි මුලින්ම පද්ධතියේ ක්‍රියාත්මක වන ක්‍රියාවලීන් පිළිබඳ සරල කරන අපගමනය කිහිපයක් කරමු, ඒවා සාමූහිකව හැඳින්වේ. වැඩ බර. වැඩ ප්‍රමාණය නිර්වචනය කිරීම ප්‍රතිපත්ති ගොඩනැගීමේ තීරණාත්මක කොටසක් වන අතර, වැඩ ප්‍රමාණය ගැන ඔබ වැඩි වැඩියෙන් දන්නා තරමට, ඔබට ලිවිය හැකි ප්‍රතිපත්තිය වඩා හොඳය.

පද්ධතිය තුළ ක්‍රියාත්මක වන ක්‍රියාවලීන් ගැන පහත උපකල්පන කරමු, සමහර විට එයද හැඳින්වේ රැකියා (කාර්යයන්). මෙම උපකල්පන සියල්ලම පාහේ යථාර්ථවාදී නොවේ, නමුත් චින්තනයේ වර්ධනය සඳහා අවශ්ය වේ.

  1. සෑම කාර්යයක්ම එකම කාලයක් සඳහා ක්රියාත්මක වේ,
  2. සියලුම කාර්යයන් එකවර සකසා ඇත,
  3. පවරා ඇති කාර්යය එය අවසන් වන තෙක් ක්‍රියා කරයි,
  4. සියලුම කාර්යයන් CPU පමණක් භාවිතා කරයි,
  5. එක් එක් කාර්යයේ ධාවන කාලය දනී.

Scheduler Metrics

භාරය පිළිබඳ සමහර උපකල්පනවලට අමතරව, විවිධ උපලේඛනගත කිරීමේ ප්‍රතිපත්ති සංසන්දනය කිරීම සඳහා තවත් මෙවලමක් අවශ්‍ය වේ: උපලේඛන ප්‍රමිතික. මෙට්රික් යනු යම් දෙයක මිනුමක් පමණි. උපලේඛන සංසන්දනය කිරීමට භාවිතා කළ හැකි මිතික ගණනාවක් තිබේ.

උදාහරණයක් ලෙස, අපි මෙට්‍රික් එකක් භාවිතා කරමු සංසරන කාලය (සංසරන කාලය). කාර්යය සම්පූර්ණ කිරීමේ කාලය සහ පද්ධතියේ කාර්යය පැමිණීමේ කාලය අතර වෙනස ලෙස කාර්යය හැරවුම් කාලය අර්ථ දැක්වේ.

Tturnaround=සම්පූර්ණ කිරීම-Tarrival

සියලුම කාර්යයන් එකම වේලාවක පැමිණි බව අප උපකල්පනය කළ බැවින්, Ta=0 සහ ඒ අනුව Tt=Tc. ඉහත උපකල්පන වෙනස් කරන විට මෙම අගය ස්වභාවිකවම වෙනස් වේ.

තවත් මෙට්රික් - සාධාරණත්වය (සාධාරණත්වය, අවංකකම). ඵලදායිතාව සහ සාධාරණත්වය සැලසුම් කිරීමේදී බොහෝ විට විරුද්ධ ලක්ෂණ වේ. උදාහරණයක් ලෙස, උපලේඛකයා කාර්ය සාධනය ප්‍රශස්ත කළ හැක, නමුත් වෙනත් කාර්යයන් ක්‍රියාත්මක වන තෙක් බලා සිටීමේ වියදමින් සාධාරණත්වය අඩු වේ.

ප්‍රථමයෙන් ප්‍රථමයෙන් (FIFO)

අපට ක්‍රියාත්මක කළ හැකි මූලික ඇල්ගොරිතම FIFO හෝ ලෙස හැඳින්වේ පළමුව පැමිණෙන (ඇතුළට), පළමුව සේවය (පිටතට). මෙම ඇල්ගොරිතමයට වාසි කිහිපයක් ඇත: එය ක්රියාත්මක කිරීම ඉතා පහසු වන අතර එය අපගේ සියලු උපකල්පනවලට ගැලපෙන අතර කාර්යය හොඳින් ඉටු කරයි.

අපි සරල උදාහරණයක් බලමු. අපි හිතමු එකවර වැඩ 3ක් සෙට් උනා කියලා. නමුත් A කාර්යය අනෙක් සියල්ලටම වඩා මඳක් කලින් පැමිණි බව උපකල්පනය කරමු, එබැවින් එය ක්‍රියාත්මක කිරීමේ ලැයිස්තුවේ අනෙක් ඒවාට වඩා කලින් දිස්වනු ඇත, C ට සාපේක්ෂව B මෙන්. අපි ඒ සෑම එකක්ම තත්පර 10 ක් ක්‍රියාත්මක වේ යැයි උපකල්පනය කරමු. මෙම නඩුවේ මෙම කාර්යයන් සම්පූර්ණ කිරීමට සාමාන්ය කාලය කුමක්ද?

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 4 වන කොටස: උපලේඛකයාට හැඳින්වීම (පරිවර්තනය)

අගයන් ගණනය කිරීමෙන් - 10 + 20 + 30 සහ 3 න් බෙදීමෙන්, අපට සාමාන්‍ය වැඩසටහන් ක්‍රියාත්මක කිරීමේ කාලය තත්පර 20 ට සමාන වේ.
දැන් අපි අපේ උපකල්පන වෙනස් කිරීමට උත්සාහ කරමු. විශේෂයෙන්ම, උපකල්පනය 1 සහ ඒ අනුව අපි තවදුරටත් එක් එක් කාර්යය ක්රියාත්මක කිරීමට සමාන කාලයක් ගත වන බව උපකල්පනය නොකරමු. FIFO මෙවර ක්‍රියා කරන්නේ කෙසේද?

එය පෙනෙන පරිදි, විවිධ කාර්යයන් ක්රියාත්මක කිරීමේ වේලාවන් FIFO ඇල්ගොරිතමයේ ඵලදායිතාවයට අතිශයින් සෘණාත්මක බලපෑමක් ඇති කරයි. A කාර්යය සම්පූර්ණ කිරීමට තත්පර 100 ක් ගත වන අතර B සහ C තත්පර 10 බැගින් ගත වේ යැයි අපි උපකල්පනය කරමු.

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 4 වන කොටස: උපලේඛකයාට හැඳින්වීම (පරිවර්තනය)

රූපයෙන් පෙනෙන පරිදි, පද්ධතිය සඳහා සාමාන්ය කාලය (100+110+120)/3=110 වනු ඇත. මෙම බලපෑම හැඳින්වේ පරිවාර බලපෑම, සම්පතක සමහර කෙටි කාලීන පාරිභෝගිකයින් අධික පාරිභෝගිකයෙකු පසුපස පෝලිම් ගැසෙන විට. එය හරියට සම්පූර්ණ කරත්තයක් සමඟ පාරිභෝගිකයෙකු ඔබ ඉදිරිපිට සිටින විට සිල්ලර වෙළඳසැලේ රේඛාව වැනි ය. ගැටලුවට හොඳම විසඳුම වන්නේ මුදල් ලේඛනය වෙනස් කිරීමට හෝ ලිහිල් කිරීමට සහ ගැඹුරින් හුස්ම ගැනීමට උත්සාහ කිරීමයි.

කෙටිම රැකියාව පළමුව

හෙවිවේට් ක්‍රියාවලීන් සමඟ සමාන තත්වයක් කෙසේ හෝ විසඳිය හැකිද? නිසැකවම. තවත් ආකාරයේ සැලසුම් කිරීමක් ලෙස හැඳින්වේකෙටිම රැකියාව පළමුව (SJF). එහි ඇල්ගොරිතම ද තරමක් ප්‍රාථමික ය - නමට අනුව, කෙටිම කාර්යයන් පළමුව, එකින් එක දියත් කෙරේ.

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 4 වන කොටස: උපලේඛකයාට හැඳින්වීම (පරිවර්තනය)

මෙම උදාහරණයේ දී, එකම ක්‍රියාවලීන් ක්‍රියාත්මක කිරීමේ ප්‍රතිඵලය සාමාන්‍ය වැඩසටහන් හැරවුම් කාලයෙහි වැඩි දියුණුවක් වනු ඇති අතර එය සමාන වනු ඇත 50 වෙනුවට 110, එය 2 ගුණයක් පමණ වඩා හොඳය.

මේ අනුව, සියලු කාර්යයන් එකම වේලාවක පැමිණෙන බවට ලබා දී ඇති උපකල්පනය සඳහා, SJF ඇල්ගොරිතම වඩාත්ම ප්‍රශස්ත ඇල්ගොරිතම ලෙස පෙනේ. කෙසේ වෙතත්, අපගේ උපකල්පන තවමත් යථාර්ථවාදී නොවන බව පෙනේ. මෙම අවස්ථාවේදී අපි උපකල්පනය 2 වෙනස් කරන අතර මෙම අවස්ථාවේදී කාර්යයන් ඕනෑම වේලාවක තිබිය හැකි අතර, සියල්ලම එකම වේලාවක නොතිබිය හැකිය. මෙය හේතු විය හැකි ගැටළු මොනවාද?

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 4 වන කොටස: උපලේඛකයාට හැඳින්වීම (පරිවර්තනය)

A (100c) කාර්යය මුලින්ම පැමිණ ක්‍රියාත්මක වීමට පටන් ගනී යැයි සිතමු. t=10 ට, කාර්ය B සහ C පැමිණේ, ඒ සෑම එකක්ම තත්පර 10 ක් ගතවේ. එබැවින් සාමාන්‍ය ක්‍රියාත්මක කිරීමේ කාලය (100+(110-10)+(120-10))3 = 103. මෙය වැඩිදියුණු කිරීමට උපලේඛකයාට කුමක් කළ හැකිද?

අවසන් කිරීමට කෙටිම කාලය පළමුව (STCF)

තත්වය වැඩිදියුණු කිරීම සඳහා, වැඩසටහන දියත් කර අවසන් වන තෙක් ක්‍රියාත්මක වන බවට උපකල්පනය 3 අපි ඉවත් කරමු. ඊට අමතරව, අපට දෘඪාංග සහාය අවශ්ය වනු ඇති අතර, ඔබ අනුමාන කළ හැකි පරිදි, අපි භාවිතා කරන්නෙමු ටයිමරය ධාවන කාර්යයකට බාධා කිරීමට සහ සන්දර්භය මාරු කිරීම. මේ අනුව, කාලසටහන්කරුට කාර්යයන් B, C පැමිණෙන මොහොතේ යමක් කළ හැකිය - කාර්යය A ක්‍රියාත්මක කිරීම නවතා B සහ C කාර්යයන් සැකසීමට යොදවා, ඒවා අවසන් වූ පසු, ක්‍රියාවලිය දිගටම කරගෙන යාම A. එවැනි උපලේඛකයක් ලෙස හැඳින්වේ. STCFහෝ පූර්වගාමී රැකියාව පළමුව.

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 4 වන කොටස: උපලේඛකයාට හැඳින්වීම (පරිවර්තනය)

මෙම සැලසුම්කරුගේ ප්‍රතිඵලය පහත ප්‍රතිඵලය වනු ඇත: ((120-0)+(20-10)+(30-10))/3=50. මේ අනුව, එවැනි උපලේඛකයක් අපගේ කාර්යයන් සඳහා වඩාත් ප්රශස්ත වේ.

මෙට්රික් ප්රතිචාර කාලය

මේ අනුව, කාර්යයේ ධාවන කාලය සහ මෙම කාර්යයන් CPU පමණක් භාවිතා කරන්නේ නම්, STCF හොඳම විසඳුම වනු ඇත. ඒ වගේම මුල් කාලයේ මේ ඇල්ගොරිතම හොඳටම වැඩ කළා. කෙසේ වෙතත්, පරිශීලකයා දැන් වැඩි කාලයක් පර්යන්තයේ ගත කරන අතර ඵලදායී අන්තර්ක්‍රියාකාරී අත්දැකීමක් අපේක්ෂා කරයි. මේ අනුව නව මිනුම් දණ්ඩක් බිහි විය - ප්රතිචාර කාලය (ප්රතිචාරය).

ප්‍රතිචාර කාලය පහත පරිදි ගණනය කෙරේ:

Tresponse=Tfirstrun−Tarrival

මේ අනුව, පෙර උදාහරණය සඳහා, ප්‍රතිචාර කාලය වනුයේ: A=0, B=0, C=10 (abg=3,33).

ඒවගේම STCF algorithm එක එතරම් හොඳ නැති බව පෙනී යනවා කාර්යයන් 3ක් එකවර පැමිණෙන තත්වයක් තුළ - කුඩා කාර්යයන් සම්පූර්ණයෙන්ම අවසන් වන තෙක් බලා සිටීමට සිදුවනු ඇත. එබැවින්, හැරවුම් කාල මෙට්‍රික් සඳහා ඇල්ගොරිතම හොඳයි, නමුත් අන්තර්ක්‍රියාකාරීත්ව මෙට්‍රික් සඳහා නරකයි. ඔබ පර්යන්තයක වාඩි වී සංස්කාරකයකට අක්ෂර ටයිප් කිරීමට උත්සාහ කරමින් තත්පර 10 කට වඩා රැඳී සිටීමට සිදු වූයේ වෙනත් කාර්යයක් CPU භාර ගන්නා නිසාදැයි සිතන්න. එය ඉතා ප්රසන්න නොවේ.

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 4 වන කොටස: උපලේඛකයාට හැඳින්වීම (පරිවර්තනය)

ඉතින් අපි තවත් ගැටලුවකට මුහුණ දී සිටිමු - ප්‍රතිචාර දැක්වීමේ කාලයට සංවේදී වන කාලසටහනක් ගොඩනගන්නේ කෙසේද?

රවුන්ඩ් රොබින්

මෙම ගැටළුව විසඳීම සඳහා ඇල්ගොරිතමයක් නිර්මාණය කරන ලදී රවුන්ඩ් රොබින් (RR). මූලික අදහස තරමක් සරල ය: කාර්යයන් අවසන් වන තුරු ධාවනය කරනවා වෙනුවට, අපි යම් කාල පරිච්ඡේදයක් සඳහා කාර්යය ක්‍රියාත්මක කරන්නෙමු (කාල පෙත්තක් ලෙස හැඳින්වේ) ඉන්පසු පෝලිමේ සිට වෙනත් කාර්යයකට මාරු වන්න. සියලුම කාර්යයන් අවසන් වන තුරු ඇල්ගොරිතම එහි කාර්යය නැවත සිදු කරයි. මෙම අවස්ථාවෙහිදී, වැඩසටහනේ ධාවන කාලය ටයිමරය ක්රියාවලියට බාධා කරන කාලයෙහි ගුණාකාර විය යුතුය. උදාහරණයක් ලෙස, කාල ගණකයක් සෑම x=10ms ක්‍රියාවලියකට බාධා කරන්නේ නම්, ක්‍රියාවලි ක්‍රියාත්මක කිරීමේ කවුළුවේ විශාලත්වය 10 න් ගුණාකාර විය යුතු අතර 10,20 හෝ x*10 විය යුතුය.

අපි උදාහරණයක් බලමු: ABC කාර්යයන් එකවරම පද්ධතියට පැමිණෙන අතර ඒ සෑම එකක්ම තත්පර 5ක් ධාවනය කිරීමට අවශ්‍ය වේ. SJF ඇල්ගොරිතමය තවත් කාර්යයක් ආරම්භ කිරීමට පෙර එක් එක් කාර්යය සම්පූර්ණ කරයි. ඊට වෙනස්ව, දියත් කිරීමේ කවුළුවක් සහිත RR ඇල්ගොරිතම = 1s පහත පරිදි කාර්යයන් හරහා ගමන් කරයි (රූපය 4.3):

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 4 වන කොටස: උපලේඛකයාට හැඳින්වීම (පරිවර්තනය)
(SJF නැවතත් (ප්‍රතිචාර කාලය සඳහා නරකයි)

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 4 වන කොටස: උපලේඛකයාට හැඳින්වීම (පරිවර්තනය)
(රවුන්ඩ් රොබින් (ප්‍රතිචාර කාලය සඳහා හොඳයි)

RR ඇල්ගොරිතම සඳහා සාමාන්‍ය ප්‍රතිචාර කාලය (0+1+2)/3=1 වන අතර SJF (0+5+10)/3=5 වේ.

RR සඳහා කාල කවුළුව ඉතා වැදගත් පරාමිතියක් යැයි උපකල්පනය කිරීම තර්කානුකූල ය; එය කුඩා වන තරමට ප්‍රතිචාර කාලය වැඩි වේ. කෙසේ වෙතත්, ඔබ එය ඉතා කුඩා නොකළ යුතුය, මන්ද සන්දර්භය මාරු කිරීමේ කාලය ද සමස්ත කාර්ය සාධනය සඳහා භූමිකාවක් ඉටු කරයි. මේ අනුව, ක්‍රියාත්මක කිරීමේ කවුළු කාලය තේරීම OS ගෘහ නිර්මාණ ශිල්පියා විසින් සකසා ඇති අතර එය ක්‍රියාත්මක කිරීමට සැලසුම් කර ඇති කාර්යයන් මත රඳා පවතී. සන්දර්භය මාරු කිරීම කාලය නාස්ති කරන එකම සේවා මෙහෙයුම නොවේ - ධාවන වැඩසටහන වෙනත් බොහෝ දේ මත ක්‍රියාත්මක වේ, උදාහරණයක් ලෙස, විවිධ හැඹිලි, සහ එක් එක් ස්විචය සමඟ මෙම පරිසරය සුරැකීමට සහ ප්‍රතිස්ථාපනය කිරීමට අවශ්‍ය වන අතර එය ද බොහෝ කාලයක් ගත විය හැකිය. කාලය.

අපි කතා කරන්නේ ප්‍රතිචාර කාල මෙට්‍රික් ගැන පමණක් නම් RR යනු විශිෂ්ට උපලේඛකයකි. නමුත් මෙම ඇල්ගොරිතම සමඟ කාර්යය හැරවුම් කාල මෙට්‍රික් හැසිරෙන්නේ කෙසේද? ඉහත උදාහරණය සලකා බලන්න, A, B, C = 5s හි මෙහෙයුම් කාලය සහ එම අවස්ථාවේදීම පැමිණෙන විට. කාර්යය A 13 ට, B 14 ට, C 15 ට අවසන් වන අතර සාමාන්‍ය හැරවුම් කාලය තත්පර 14 කි. මේ අනුව, RR යනු පිරිවැටුම් මෙට්රික් සඳහා නරකම ඇල්ගොරිතමය වේ.

වඩාත් සාමාන්‍ය වචන වලින් කිවහොත්, ඕනෑම RR වර්ගයේ ඇල්ගොරිතමයක් සාධාරණ ය; එය CPU කාලය සියලු ක්‍රියාවලි අතර සමානව බෙදා දෙයි. මේ අනුව, මෙම ප්‍රමිතික නිරන්තරයෙන් එකිනෙකා සමඟ ගැටෙයි.

මේ අනුව, අපට ප්‍රතිවිරුද්ධ ඇල්ගොරිතම කිහිපයක් ඇති අතර ඒ සමඟම තවමත් උපකල්පන කිහිපයක් ඉතිරිව ඇත - කාර්ය කාලය දන්නා බව සහ කාර්යය CPU පමණක් භාවිතා කරයි.

I/O සමඟ මිශ්‍ර වීම

පළමුවෙන්ම, ක්‍රියාවලිය CPU පමණක් භාවිතා කරයි යන උපකල්පනය 4 ඉවත් කරමු; ස්වාභාවිකවම, මෙය එසේ නොවන අතර ක්‍රියාවලීන්ට වෙනත් උපකරණ වෙත ප්‍රවේශ විය හැකිය.

ඕනෑම ක්‍රියාවලියක් I/O මෙහෙයුමක් ඉල්ලා සිටින මොහොතේ, ක්‍රියාවලිය අවහිර කළ තත්වයට ඇතුල් වේ, I/O සම්පූර්ණ වන තෙක් බලා සිටී. I/O දෘඪ තැටිය වෙත යවනු ලැබුවහොත්, එවැනි මෙහෙයුමක් ms කිහිපයක් හෝ ඊට වැඩි කාලයක් ගත විය හැකි අතර, ප්‍රොසෙසරය මේ මොහොතේ අක්‍රිය වනු ඇත. මෙම කාලය තුළ, උපලේඛකයාට වෙනත් ඕනෑම ක්‍රියාවලියක් සමඟ ප්‍රොසෙසරය අල්ලා ගත හැකිය. ක්‍රියාවලිය එහි I/O සම්පූර්ණ කරන්නේ කවදාද යන්න උපලේඛකයාට ගත යුතු මීළඟ තීරණයයි. මෙය සිදු වූ විට, බාධාවක් ඇති වන අතර OS විසින් I/O ලෙස හැඳින්වූ ක්‍රියාවලිය සූදානම් තත්වයට පත් කරයි.

කාර්යයන් කිහිපයක උදාහරණයක් බලමු. ඒ සෑම එකක් සඳහාම CPU කාලය 50ms අවශ්ය වේ. කෙසේ වෙතත්, පළමුවැන්නා සෑම 10ms කට වරක් I/O වෙත පිවිසෙනු ඇත (එය ද සෑම 10ms කට වරක් ක්‍රියාත්මක වේ). තවද B ක්‍රියාවලිය I/O නොමැතිව 50ms ප්‍රොසෙසරයක් භාවිතා කරයි.

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 4 වන කොටස: උපලේඛකයාට හැඳින්වීම (පරිවර්තනය)

මෙම උදාහරණයේදී අපි STCF උපලේඛනය භාවිතා කරමු. A වැනි ක්‍රියාවලියක් එය මත දියත් කළහොත් උපලේඛකයා හැසිරෙන්නේ කෙසේද? ඔහු පහත සඳහන් දේ කරනු ඇත: පළමුව ඔහු A ක්‍රියාවලිය සම්පූර්ණයෙන්ම ක්‍රියාත්මක කරයි, පසුව B සකසයි.

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 4 වන කොටස: උපලේඛකයාට හැඳින්වීම (පරිවර්තනය)

මෙම ගැටළුව විසඳීම සඳහා සාම්ප්‍රදායික ප්‍රවේශය වන්නේ ක්‍රියාවලි A හි එක් එක් 10 ms උප කාර්යය වෙනම කාර්යයක් ලෙස සැලකීමයි. මේ අනුව, STJF ඇල්ගොරිතම සමඟ ආරම්භ කරන විට, 50 ms කාර්යයක් සහ 10 ms කාර්යයක් අතර තේරීම පැහැදිලිය. ඉන්පසුව, A උප කාර්යය අවසන් වූ විට, B සහ I/O ක්‍රියාවලිය දියත් කෙරේ. I/O සම්පූර්ණ වූ පසු, B ක්‍රියාවලිය වෙනුවට නැවත 10ms ක්‍රියාවලිය A ආරම්භ කිරීම සිරිත වනු ඇත. මේ ආකාරයෙන්, අතිච්ඡාදනය ක්‍රියාත්මක කළ හැකිය, එහිදී CPU වෙනත් ක්‍රියාවලියක් භාවිතා කරන අතර පළමු එක එනතෙක් බලා සිටින විට I/O. එහි ප්‍රතිඵලයක් වශයෙන්, පද්ධතිය වඩාත් හොඳින් භාවිතා වේ - අන්තර්ක්‍රියාකාරී ක්‍රියාවලි I/O සඳහා බලා සිටින මොහොතේදී, ප්‍රොසෙසරය මත වෙනත් ක්‍රියාවලි ක්‍රියාත්මක කළ හැක.

ඔරකල් දැන් නැත

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

ප්රතිඵලය

අපි කාර්ය කාලසටහන් කිරීමේ මූලික අදහස් දෙස බැලූ අතර උපලේඛනකරුවන්ගේ පවුල් 2 ක් දෙස බැලුවෙමු. පළමුවැන්නා කෙටිම කාර්යය මුලින්ම ආරම්භ කරන අතර එමඟින් හැරවුම් කාලය වැඩි කරයි, දෙවැන්න සියලු කාර්යයන් අතර සමානව ඉරී ගොස් ප්‍රතිචාර කාලය වැඩි කරයි. අනෙක් පවුලේ ඇල්ගොරිතම හොඳ නම් ඇල්ගොරිතම දෙකම නරක ය. CPU සහ I/O සමාන්තරව භාවිතා කිරීමෙන් කාර්ය සාධනය වැඩි දියුණු කරන්නේ කෙසේදැයි අපි සොයා බැලුවෙමු, නමුත් OS clairvoyance සමඟ ගැටළුව විසඳා නැත. ඊළඟ පාඩමේදී අපි ආසන්න අතීතය දෙස බලා අනාගතය ගැන අනාවැකි කීමට උත්සාහ කරන සැලසුම්කරුවෙකු දෙස බලමු. එය බහු මට්ටමේ ප්‍රතිපෝෂණ පෝලිම ලෙස හැඳින්වේ.

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

අදහස් එක් කරන්න