මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 2 කොටස: වියුක්ත කිරීම: ක්‍රියාවලිය (පරිවර්තනය)

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

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

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

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

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

මෙහෙයුම් පද්ධතිය පරිශීලකයින්ට ලබා දෙන මූලික සාරාංශය දෙස බලමු: ක්‍රියාවලිය. ක්රියාවලියේ අර්ථ දැක්වීම තරමක් සරලයි - එයයි ධාවන වැඩසටහන. වැඩසටහනම තැටියේ පිහිටා ඇති පණ නැති දෙයකි - එය උපදෙස් මාලාවක් සහ සමහර විට දියත් කිරීමට බලා සිටින ස්ථිතික දත්ත වේ. OS එක තමයි ඔය බයිට් අරන් දුවන්නේ, program එක ප්‍රයෝජනවත් දෙයක් බවට පරිවර්තනය කරන්නේ.
බොහෝ විට, පරිශීලකයින්ට එකවර වැඩසටහන් එකකට වඩා ධාවනය කිරීමට අවශ්ය වේ, උදාහරණයක් ලෙස, ඔබට ඔබගේ ලැප්ටොප් පරිගණකයේ බ්රවුසරයක්, ක්රීඩාවක්, මාධ්ය වාදකයක්, පෙළ සංස්කාරකයක් සහ එවැනි දේ ධාවනය කළ හැකිය. ඇත්ත වශයෙන්ම, සාමාන්‍ය පද්ධතියකට එකවර ක්‍රියාවලි දහයක් හෝ සිය ගණනක් ක්‍රියාත්මක කළ හැකිය. මෙම කරුණ මඟින් පද්ධතිය භාවිතා කිරීම පහසු කරයි, CPU නොමිලේද යන්න ගැන ඔබ කිසිවිටක කරදර විය යුතු නැත, ඔබ වැඩසටහන් ක්‍රියාත්මක කරයි.

මෙය ගැටළුව මතු කරයි: බොහෝ CPU වල මිත්‍යාව ලබා දෙන්නේ කෙසේද? ඔබ සතුව ඇත්තේ එක් භෞතික CPU එකක් පමණක් වුවද, OS මඟින් අසීමිත CPU ගණනක මිත්‍යාව නිර්මාණය කරන්නේ කෙසේද?

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

සාරාංශය: ක්රියාවලිය

මෙහෙයුම් පද්ධතිය මඟින් ක්‍රියාත්මක වන ක්‍රියාත්මක වන වැඩසටහනක සාරාංශය අප හඳුන්වන්නේ එයයි ක්රියාවලිය. කලින් සඳහන් කළ පරිදි, ක්‍රියාවලියක් යනු ඕනෑම ක්‍ෂණික කාල පරිච්ඡේදයකදී සරලව ක්‍රියාත්මක වන වැඩසටහනකි. මෙම වැඩසටහන ක්‍රියාත්මක කිරීමේදී ප්‍රවේශ වන හෝ බලපාන විවිධ පද්ධති සම්පත් වලින් අපට සාරාංශ තොරතුරු ලබා ගත හැකි වැඩසටහනකි.
ක්රියාවලියෙහි සංරචක තේරුම් ගැනීම සඳහා, ඔබ පද්ධතියේ තත්වයන් තේරුම් ගත යුතුය: එහි ක්රියාකාරිත්වය තුළ වැඩසටහන කියවිය හැකි හෝ වෙනස් කළ හැකි දේ. ඕනෑම අවස්ථාවක, වැඩසටහන ක්රියාත්මක කිරීම සඳහා වැදගත් වන්නේ පද්ධතියේ කුමන අංගයන්දැයි ඔබ තේරුම් ගත යුතුය.
ක්‍රියාවලියට ඇතුළත් වන බව පද්ධතියේ ප්‍රකාශයේ පැහැදිලි අංගවලින් එකකි මතකය. උපදෙස් මතකයේ පිහිටා ඇත. වැඩසටහන කියවන හෝ ලියන දත්ත ද මතකයේ පිහිටා ඇත. මේ අනුව, ක්‍රියාවලියකට ආමන්ත්‍රණය කළ හැකි මතකය (ලිපින අවකාශය ලෙස හැඳින්වේ) ක්‍රියාවලියේ කොටසකි.
පද්ධති තත්වයේ කොටසක් ද රෙජිස්ටර් වේ. බොහෝ උපදෙස් රෙජිස්ටර් වල අගය වෙනස් කිරීම හෝ ඒවායේ අගය කියවීම අරමුණු කර ගෙන ඇති අතර, එබැවින් රෙජිස්ටර් ක්‍රියාවලියේ ක්‍රියාකාරිත්වයේ වැදගත් කොටසක් බවට පත්වේ.
යන්ත්‍ර රාජ්‍යය ද සෑදී ඇත්තේ සමහර විශේෂ රෙජිස්ටර් වලින් බව සැලකිය යුතුය. උදාහරණ වශයෙන්, IP - උපදෙස් දර්ශකය - වැඩසටහන දැනට ක්‍රියාත්මක වන උපදෙස් සඳහා දර්ශකයක්. ද ඇත ස්ටැක් පොයින්ටරය සහ ඊට සම්බන්ධයි රාමු දර්ශකය, කළමනාකරණය කිරීමට භාවිතා කරන: ශ්‍රිත පරාමිති, දේශීය විචල්‍ය සහ ආපසු ලිපින.
අවසාන වශයෙන්, වැඩසටහන් බොහෝ විට ROM (කියවීමට පමණක් මතකය) වෙත ප්රවේශ වේ. මෙම "I/O" (ආදාන/ප්‍රතිදානය) තොරතුරු ක්‍රියාවලිය මගින් දැනට විවෘත කර ඇති ගොනු ලැයිස්තුවක් ඇතුළත් විය යුතුය.

ක්‍රියාවලි API

ක්‍රියාවලිය ක්‍රියාත්මක වන ආකාරය පිළිබඳ අපගේ අවබෝධය වැඩිදියුණු කිරීම සඳහා, ඕනෑම මෙහෙයුම් පද්ධති අතුරුමුහුණතකට ඇතුළත් කළ යුතු පද්ධති ඇමතුම් පිළිබඳ උදාහරණ අධ්‍යයනය කරමු. මෙම API ඕනෑම OS එකක එක් ආකාරයකින් හෝ වෙනත් ආකාරයකින් ලබා ගත හැකිය.

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

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 2 කොටස: වියුක්ත කිරීම: ක්‍රියාවලිය (පරිවර්තනය)

ක්‍රියාවලි නිර්මාණය: විස්තර

සිත්ගන්නා කරුණක් නම්, වැඩසටහන් හරියටම ක්‍රියාවලි බවට පරිවර්තනය වන්නේ කෙසේද යන්නයි. විශේෂයෙන්ම OS එක ප්‍රොග්‍රෑම් එක අරගෙන දුවන හැටි. ක්රියාවලිය හරියටම නිර්මාණය කර ඇති ආකාරය.
පළමුවෙන්ම, OS මඟින් වැඩසටහන් කේතය සහ ස්ථිතික දත්ත මතකයට (ක්‍රියාවලි ලිපින අවකාශයට) පැටවිය යුතුය. වැඩසටහන් සාමාන්‍යයෙන් යම් ක්‍රියාත්මක කළ හැකි ආකෘතියකින් තැටියක හෝ ඝන-තත්ව ධාවකයක පිහිටා ඇත. මේ අනුව, වැඩසටහන සහ ස්ථිතික දත්ත මතකයට පැටවීමේ ක්‍රියාවලියට OS හට එම බයිට් තැටියෙන් කියවා ඒවා මතකයේ කොතැනක හෝ තැබීමට හැකි විය යුතුය.

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

කේතය සහ ස්ථිතික දත්ත OS මතකයට පැටවූ පසු, ක්‍රියාවලිය ක්‍රියාත්මක වීමට පෙර කළ යුතු තවත් දේවල් කිහිපයක් තිබේ. ස්ටැක් සඳහා යම් මතක ප්‍රමාණයක් වෙන් කළ යුතුය. වැඩසටහන් දේශීය විචල්‍යයන්, ක්‍රියාකාරී පරාමිති සහ ආපසු ලිපින සඳහා තොගය භාවිතා කරයි. මෙහෙයුම් පද්ධතිය මෙම මතකය වෙන් කර එය ක්‍රියාවලියට ලබා දෙයි. තොගය සමහර තර්ක සමඟද වෙන් කළ හැක, විශේෂයෙන් එය ප්‍රධාන () ශ්‍රිතයේ පරාමිතීන් පුරවයි, උදාහරණයක් ලෙස argc සහ argv අරාවක් සමඟ.

මෙහෙයුම් පද්ධතිය මඟින් වැඩසටහන් ගොඩට යම් මතකයක් ද වෙන් කළ හැක. ගතිකව වෙන් කරන ලද දත්ත පැහැදිලිව ඉල්ලීමට වැඩසටහන් මගින් ගොඩ භාවිතා කරයි. ශ්‍රිතය ඇමතීමෙන් වැඩසටහන් මෙම ඉඩ ඉල්ලා සිටී malloc () සහ ශ්‍රිතය ඇමතීමෙන් එය පැහැදිලිව ඉවත් කරයි නිදහස්(). සම්බන්ධිත පත්‍ර, හැෂ් වගු, ගස් සහ වෙනත් දත්ත ව්‍යුහයන් සඳහා ගොඩ අවශ්‍ය වේ. මුලදී, ගොඩට කුඩා මතක ප්‍රමාණයක් වෙන් කරනු ලැබේ, නමුත් කාලයත් සමඟ, වැඩසටහන ක්‍රියාත්මක වන විට, ගොඩට library API ඇමතුම malloc() හරහා වැඩි මතකයක් ඉල්ලා සිටිය හැක. මෙම ඇමතුම් තෘප්තිමත් කිරීමට උපකාර කිරීම සඳහා වැඩි මතකයක් වෙන් කිරීමේ ක්‍රියාවලියේ මෙහෙයුම් පද්ධතිය සම්බන්ධ වේ.

මෙහෙයුම් පද්ධතිය ආරම්භක කාර්යයන් ද සිදු කරනු ඇත, විශේෂයෙන් I/O සම්බන්ධ ඒවා. උදාහරණයක් ලෙස, UNIX පද්ධති මත, එක් එක් ක්‍රියාවලියට පෙරනිමියෙන් සම්මත ආදානය, ප්‍රතිදානය සහ දෝෂය සඳහා විවෘත ගොනු විස්තර 3ක් ඇත. මෙම හැන්ඩ්ල් මඟින් වැඩසටහන් වලට ටර්මිනලයෙන් ආදාන කියවීමට මෙන්ම තිරයේ තොරතුරු පෙන්වීමටද ඉඩ සලසයි.

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

ක්‍රියාවලි තත්ත්වය

ක්‍රියාවලියක් යනු කුමක්ද සහ එය නිර්මාණය කරන්නේ කෙසේද යන්න පිළිබඳව අපට දැන් යම් අවබෝධයක් ඇති බැවින්, එය තුළ තිබිය හැකි ක්‍රියාවලි තත්ත්වයන් ලැයිස්තුගත කරමු. එහි සරලම ආකාරයෙන්, ක්‍රියාවලියක් මෙම ප්‍රාන්තවලින් එකකින් විය හැකිය:
ධාවන. ක්රියාත්මක වන විට, ක්රියාවලිය ප්රොසෙසරය මත ක්රියාත්මක වේ. මෙයින් අදහස් කරන්නේ උපදෙස් ක්‍රියාත්මක වන බවයි.
සූදානම්. සූදානම් තත්වයේදී, ක්රියාවලිය ක්රියාත්මක කිරීමට සූදානම්ව ඇත, නමුත් කිසියම් හේතුවක් නිසා OS එය නියමිත වේලාවට ක්රියාත්මක නොවේ.
බ්ලොක් වී ඇත. අවහිර කරන ලද තත්වයේදී, යම් ක්‍රියාවලියක් යම් සිදුවීමක් සිදු වන තෙක් එය ක්‍රියාත්මක කිරීමට සූදානම් වීම වළක්වන යම් යම් මෙහෙයුම් සිදු කරයි. එක් පොදු උදාහරණයක් නම්, ක්‍රියාවලියක් IO මෙහෙයුමක් ආරම්භ කරන විට, වෙනත් ක්‍රියාවලියකට ප්‍රොසෙසරය භාවිතා කළ හැකි වන පරිදි එය අවහිර වේ.

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 2 කොටස: වියුක්ත කිරීම: ක්‍රියාවලිය (පරිවර්තනය)

ඔබට මෙම තත්වයන් ප්‍රස්ථාරයක ආකාරයෙන් සිතාගත හැකිය. පින්තූරයේ අපට පෙනෙන පරිදි, OS හි අභිමතය පරිදි ක්‍රියාවලියේ තත්වය RUNNING සහ READY අතර වෙනස් විය හැකිය. ක්‍රියාවලියක තත්ත්වය READY සිට RUNNING දක්වා වෙනස් වූ විට, එයින් අදහස් වන්නේ ක්‍රියාවලිය කාලසටහන් කර ඇති බවයි. ප්රතිවිරුද්ධ දිශාවට - පිරිසැලසුමෙන් ඉවත් කර ඇත. ක්‍රියාවලියක් අවහිර වන මොහොතේදී, උදාහරණයක් ලෙස, මම IO මෙහෙයුමක් ආරම්භ කරන විට, යම් සිදුවීමක් සිදු වන තෙක් OS එය මෙම තත්වයේ තබා ගනී, උදාහරණයක් ලෙස IO සම්පූර්ණ කිරීම. මේ මොහොතේ READY තත්වයට සංක්‍රමණය වන අතර මෙහෙයුම් පද්ධතිය එසේ තීරණය කරන්නේ නම් වහාම ක්‍රියාත්මක වන තත්වයට.
මෙම අවස්ථා හරහා ක්‍රියාවලි දෙකක් ගමන් කරන ආකාරය පිළිබඳ උදාහරණයක් බලමු. ආරම්භ කිරීම සඳහා, ක්‍රියාවලි දෙකම ක්‍රියාත්මක වන අතර, ඒ සෑම එකක්ම CPU පමණක් භාවිතා කරන බව සිතමු. මෙම අවස්ථාවේ දී, ඔවුන්ගේ රාජ්යයන් මේ ආකාරයෙන් පෙනෙනු ඇත.

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 2 කොටස: වියුක්ත කිරීම: ක්‍රියාවලිය (පරිවර්තනය)

පහත උදාහරණයේ දී, පළමු ක්‍රියාවලිය, යම් කාලයක් ක්‍රියාත්මක වූ පසු, IO ඉල්ලා සිටින අතර, වෙනත් ක්‍රියාවලියක් ක්‍රියාත්මක වීමට ඉඩ සලසමින් BLOCKED තත්ත්වයට ඇතුළු වේ (FIG 1.4). 0 ක්‍රියාවලිය CPU භාවිතා නොකරන බව OS විසින් දකින අතර ක්‍රියාවලිය 1 ආරම්භ කරයි. ක්‍රියාවලිය 1 ක්‍රියාත්මක වන අතරතුර, IO සම්පූර්ණ වී ඇති අතර ක්‍රියාවලිය 0 හි තත්ත්වය READY ලෙස වෙනස් වේ. අවසාන වශයෙන්, ක්‍රියාවලිය 1 සම්පූර්ණ කර ඇති අතර, සම්පූර්ණ වූ පසු, ක්‍රියාවලිය 0 ආරම්භ කර, ක්‍රියාත්මක කර, එහි වැඩ අවසන් කරයි.

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 2 කොටස: වියුක්ත කිරීම: ක්‍රියාවලිය (පරිවර්තනය)

දත්ත ව්යුහය

OS යනු වැඩසටහනක් වන අතර, වෙනත් ඕනෑම වැඩසටහනක් මෙන්, එය විවිධ අදාළ තොරතුරු කොටස් නිරීක්ෂණය කරන ප්රධාන දත්ත ව්යුහයන් ඇත. එක් එක් ක්‍රියාවලියේ තත්ත්වය නිරීක්ෂණය කිරීමට, OS එක සමහරක් සඳහා සහය දක්වයි ක්රියාවලි ලැයිස්තුව READY තත්වයේ ඇති සියලුම ක්‍රියාවලි සඳහා සහ දැනට ක්‍රියාත්මක වන ක්‍රියාවලි නිරීක්ෂණය කිරීමට අමතර තොරතුරු කිහිපයක්. එසේම, OS විසින් අවහිර කරන ලද ක්රියාවලීන් නිරීක්ෂණය කළ යුතුය. IO සම්පුර්ණ වූ පසු, OS විසින් අවශ්‍ය ක්‍රියාවලිය අවදි කර එය ක්‍රියාත්මක වීමට සූදානම් තත්වයක තැබිය යුතුය.

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

සූදානම්, අවහිර වූ, ධාවන තත්ත්වයන්ට අමතරව තවත් සමහර ප්‍රාන්ත තිබේ. සමහර විට, නිර්මාණය කරන අවස්ථාවේ දී, ක්රියාවලියක් INIT තත්වයේ තිබිය හැක. අවසාන වශයෙන්, ක්‍රියාවලියක් දැනටමත් සම්පූර්ණ කර ඇති විට අවසාන තත්වයට පත් කළ හැකි නමුත් එහි තොරතුරු තවමත් නිෂ්කාශනය කර නොමැත. UNIX පද්ධතිවල මෙම තත්වය හඳුන්වනු ලැබේ zombie ක්රියාවලිය. මාපිය ක්‍රියාවලියකට දරුවෙකුගේ ප්‍රතිලාභ කේතය දැන ගැනීමට අවශ්‍ය අවස්ථාවන් සඳහා මෙම තත්වය ප්‍රයෝජනවත් වේ, උදාහරණයක් ලෙස, සාමාන්‍යයෙන් 0 සංඥාවක් සාර්ථකත්වයක් සහ 1 දෝෂයක් සංඥා කරයි, නමුත් ක්‍රමලේඛකයින්ට විවිධ ගැටළු සංඥා කිරීමට අමතර ප්‍රතිදාන කේත නිකුත් කළ හැක. මාපිය ක්‍රියාවලිය අවසන් වූ විට, එය ළමා ක්‍රියාවලිය අවසන් වන තෙක් බලා සිටීම සඳහා රැඳී සිටීම () වැනි අවසාන පද්ධති ඇමතුමක් ලබා දෙන අතර එය අවසන් කළ ක්‍රියාවලියට සම්බන්ධ ඕනෑම දත්තයක් හිස් කළ හැකි බව OS වෙත සංඥා කරයි.

මෙහෙයුම් පද්ධති: පහසු කෑලි තුනක්. 2 කොටස: වියුක්ත කිරීම: ක්‍රියාවලිය (පරිවර්තනය)

දේශනයේ ප්‍රධාන කරුණු:

ක්රියාවලිය - OS හි ක්රියාත්මක වන වැඩසටහනක ප්රධාන සාරාංශය. ඕනෑම අවස්ථාවක, ක්‍රියාවලියක් එහි තත්වයෙන් විස්තර කළ හැක: එහි ලිපින අවකාශයේ ඇති මතකයේ අන්තර්ගතය, උපදෙස් දර්ශක සහ ස්ටැක් පොයින්ටරය ඇතුළුව ප්‍රොසෙසර රෙජිස්ටර්වල අන්තර්ගතය සහ විවෘත ගොනු කියවීම හෝ ලිවීම වැනි IO තොරතුරු.
ක්‍රියාවලි API වැඩසටහන් ක්‍රියාවලි සඳහා කළ හැකි ඇමතුම් වලින් සමන්විත වේ. සාමාන්‍යයෙන් මේවා නිර්මාණය කිරීම, මකා දැමීම හෝ වෙනත් ඇමතුම් වේ.
● ක්‍රියාවලිය ධාවනය, සුදානම්, අවහිර කිරීම ඇතුළුව බොහෝ ප්‍රාන්තවලින් එකකි. කාලසටහන්ගත කිරීම, උපලේඛනගත කිරීමෙන් ව්‍යතිරේක හෝ රැඳී සිටීම වැනි විවිධ සිදුවීම් ක්‍රියාවලියක තත්ත්වය එකින් එක වෙනස් කළ හැක.
ක්රියාවලි ලැයිස්තුව පද්ධතියේ සියලුම ක්රියාවලීන් පිළිබඳ තොරතුරු අඩංගු වේ. එහි ඇති සෑම ප්‍රවේශයක්ම ක්‍රියාවලි පාලන බ්ලොක් එකක් ලෙස හැඳින්වේ, එය යථාර්ථයේ දී නිශ්චිත ක්‍රියාවලියක් පිළිබඳ අවශ්‍ය සියලු තොරතුරු අඩංගු ව්‍යුහයකි. 

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

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