عملیاتي سیسټمونه: درې اسانه ټوټې. څلورمه برخه: د مهالویش پیژندنه (ژباړه)

د عملیاتي سیسټمونو پیژندنه

سلام، حبر! زه غواړم ستاسو پام ته د مقالو لړۍ وړاندې کړم - د یو ادب ژباړې چې زما په نظر په زړه پوري دي - OSTEP. دا مواد د یونیکس په څیر عملیاتي سیسټمونو کار په ژوره توګه معاینه کوي، د بیلګې په توګه، د پروسو سره کار، مختلف شیډولر، حافظه او نور ورته اجزا چې عصري OS جوړوي. تاسو کولی شئ دلته د ټولو موادو اصلي بڼه وګورئ دلته. مهرباني وکړئ په یاد ولرئ چې ژباړه په غیر مسلکي ډول (په آزاده توګه) شوې وه، مګر زه هیله لرم چې ما عمومي معنی ساتلی وي.

په دې موضوع کې د لابراتوار کار دلته موندلی شئ:

نورې برخې:

تاسو کولی شئ زما چینل هم وګورئ ټیلیګرام =)

د مهالویش پیژندنه

د ستونزې جوهر: څنګه د مهالویش پالیسي رامینځته کول
د مهال ویش بنسټیز پالیسي چوکاټونه باید څنګه ډیزاین شي؟ کلیدي انګیرنې باید څه وي؟ کوم معیارونه مهم دي؟ کوم بنسټیز تخنیکونه په لومړیو کمپیوټري سیسټمونو کې کارول شوي؟

د کاري بار انګیرنې

مخکې له دې چې د احتمالي پالیسیو په اړه بحث وکړو، راځئ چې لومړی په سیسټم کې د چلولو پروسو په اړه یو څو ساده تحلیلونه وکړو، چې په ټولیز ډول ویل کیږي. کاري بار. د کاري بار تعریف کول د پالیسیو جوړولو یوه مهمه برخه ده، او هرڅومره چې تاسو د کاري بار په اړه پوهیږئ ، هومره غوره پالیسي چې تاسو یې لیکلی شئ.

راځئ چې په سیسټم کې د پروسو په اړه لاندې انګیرنې وکړو، ځینې وختونه هم ویل کیږي دندې (دندې). تقريباً دا ټول انګېرنې واقعي نه دي، بلکې د فکر د پرمختګ لپاره اړين دي.

  1. هر کار د ورته وخت لپاره ترسره کیږي،
  2. ټولې دندې په ورته وخت کې تنظیم شوي،
  3. ټاکل شوې دنده تر بشپړیدو پورې کار کوي،
  4. ټولې دندې یوازې CPU کاروي،
  5. د هر کار د چلولو وخت معلوم دی.

د مهالویش میټریکونه

د بار په اړه د ځینو انګیرنو سربیره، د مهال ویش د مختلفو پالیسیو پرتله کولو لپاره بل وسیله ته اړتیا ده: د مهالویش میټریک. میټریک یوازې د یو څه اندازه ده. یو شمیر میټریکونه شتون لري چې د مهال ویش پرتله کولو لپاره کارول کیدی شي.

د مثال په توګه، موږ به د میټریک په نوم وکاروو د بدلون وخت (د بدلون وخت). د دندې د بدلون وخت په سیسټم کې د دندې بشپړولو وخت او د دندې رارسیدو وخت ترمینځ توپیر په توګه تعریف شوی.

دوره= بشپړېدل- دوره

څرنګه چې موږ فکر کاوه چې ټولې دندې په ورته وخت کې راځي، بیا Ta=0 او پدې توګه Tt=Tc. دا ارزښت به په طبیعي ډول بدلون ومومي کله چې موږ پورته انګیرنې بدل کړو.

بل میټریک - انصاف (انصاف، صداقت). تولید او انصاف اکثرا په پلان جوړونې کې مخالف ځانګړتیاوې دي. د مثال په توګه، مهالویش کونکی ممکن فعالیت ته وده ورکړي، مګر د نورو دندو د چلولو لپاره د انتظار په لګښت، په دې توګه عادلانه کموي.

لومړی په لومړي کې (FIFO)

ترټولو اساسي الګوریتم چې موږ یې پلي کولی شو د FIFO یا په نوم یادیږي لومړی راغلی (نور)، لومړی خدمت شوی (بهر). دا الګوریتم ډیری ګټې لري: دا پلي کول خورا اسانه دي او دا زموږ ټولو انګیرنو سره سمون لري او دنده په ښه توګه ترسره کوي.

راځئ چې یو ساده مثال وګورو. راځئ چې ووایو 3 دندې په ورته وخت کې تنظیم شوي. مګر راځئ فرض کړو چې A دنده د نورو ټولو په پرتله یو څه دمخه رسیدلې ، نو دا به د نورو په پرتله د اجرا کولو لیست کې څرګند شي ، لکه B د C په پرتله. راځئ فرض کړو چې هر یو به د 10 ثانیو لپاره اجرا شي. په دې صورت کې به د دغو کارونو د بشپړولو اوسط وخت څومره وي؟

عملیاتي سیسټمونه: درې اسانه ټوټې. څلورمه برخه: د مهالویش پیژندنه (ژباړه)

د ارزښتونو په شمیرلو سره - 10+20+30 او په 3 ویشلو سره، موږ د پروګرام اوسط اجرا کولو وخت د 20 ثانیو سره مساوي ترلاسه کوو.
اوس راځئ هڅه وکړو چې خپل انګیرنې بدل کړو. په ځانګړې توګه، انګیرنه 1 او پدې توګه موږ به نور دا فکر ونه کړو چې هر کار د اجرا کولو لپاره ورته وخت نیسي. FIFO به دا ځل څنګه ترسره کړي؟

لکه څنګه چې دا معلومه شوه، د مختلف دندې اجرا کولو وختونه د FIFO الګوریتم تولید باندې خورا منفي اغیزه لري. راځئ فرض کړو چې A دنده بشپړولو لپاره 100 ثانیې وخت نیسي، پداسې حال کې چې B او C به هر یو 10 ثانیې وخت ونیسي.

عملیاتي سیسټمونه: درې اسانه ټوټې. څلورمه برخه: د مهالویش پیژندنه (ژباړه)

لکه څنګه چې د ارقامو څخه لیدل کیدی شي، د سیسټم لپاره اوسط وخت به (100+110+120)/3=110 وي. دا اثر ویل کیږي د کاروان اغیز، کله چې د سرچینې ځینې لنډمهاله مصرف کونکي به د درنو مصرف کونکو وروسته قطار کې وي. دا د کرایې پلورنځي کې د کرښې په څیر دی کله چې یو پیرودونکی ستاسو په وړاندې د بشپړ کارټ سره وي. د ستونزې غوره حل دا دی چې د نغدو راجستر بدلولو هڅه وکړئ یا آرام او ژور تنفس وکړئ.

ترټولو لنډه دنده لومړی

ایا دا ممکنه ده چې د درنو وزن پروسو سره ورته وضعیت حل کړئ؟ یقینا. بل ډول پلان جوړونه بلل کیږيترټولو لنډه دنده لومړی (SJF). د دې الګوریتم هم خورا ابتدايي دی - لکه څنګه چې نوم معنی لري، لنډې دندې به لومړی پیل شي، یو له بل وروسته.

عملیاتي سیسټمونه: درې اسانه ټوټې. څلورمه برخه: د مهالویش پیژندنه (ژباړه)

په دې مثال کې، د ورته پروسو د چلولو پایله به د اوسط پروګرام بدلون وخت کې ښه والی وي او دا به مساوي وي. د 50 پرځای 110، کوم چې نږدې 2 ځله غوره دی.

په دې توګه، د ورکړل شوي انګیرنې لپاره چې ټولې دندې په ورته وخت کې راځي، د SJF الګوریتم ترټولو غوره الګوریتم ښکاري. په هرصورت، زموږ انګیرنې لاهم ریښتیا نه ښکاري. دا ځل موږ انګیرنه 2 بدلوو او دا ځل تصور وکړئ چې دندې په هر وخت کې شتون لري، او ټول په ورته وخت کې نه وي. دا د کومې ستونزې لامل کیدی شي؟

عملیاتي سیسټمونه: درې اسانه ټوټې. څلورمه برخه: د مهالویش پیژندنه (ژباړه)

راځئ چې تصور وکړو چې دنده A (100c) لومړی راځي او د اجرا کیدو پیل کوي. په t=10 کې، د B او C دندې راځي، چې هر یو به 10 ثانیې وخت ونیسي. نو د اوسط اجرا کولو وخت (100+(110-10)+(120-10))3 = 103 دی. مهالویش کوونکی د دې ښه کولو لپاره څه کولی شي؟

د بشپړولو تر ټولو لنډ وخت لومړی (STCF)

د وضعیت د ښه کولو لپاره، موږ 3 انګیرنه پریږدو چې برنامه پیل شوې او تر بشپړیدو پورې روانه ده. سربیره پردې ، موږ به د هارډویر ملاتړ ته اړتیا ولرو او لکه څنګه چې تاسو اټکل کولی شئ موږ به وکاروو ټایمر په روان کار کې خنډ کول او د شرایطو بدلول. په دې توګه، مهالویش کونکی کولی شي په هغه وخت کې یو څه ترسره کړي چې د B، C دندې ته ورسیږي - د A دندې اجرا کول ودروي او د B او C دندې پروسس کولو ته وسپاري او د دوی له بشپړیدو وروسته د A اجرا کولو پروسې ته دوام ورکړي. STCFاو یا مخکې له مخکې دنده.

عملیاتي سیسټمونه: درې اسانه ټوټې. څلورمه برخه: د مهالویش پیژندنه (ژباړه)

د دې پلان جوړونکي پایله به لاندې وي: ((120-0)+(20-10)+(30-10))/3=50. پدې توګه ، دا ډول مهالویش زموږ د دندو لپاره خورا غوره کیږي.

د میټریک ځواب وخت

په دې توګه، که موږ د دندو چلولو وخت پوهیږو او دا چې دا دندې یوازې CPU کاروي، STCF به غوره حل وي. او یو ځل په لومړیو وختونو کې، دا الګوریتم خورا ښه کار کاوه. په هرصورت، کاروونکي اوس خپل ډیری وخت په ټرمینل کې تیروي او د ګټور متقابل تجربې تمه لري. پدې توګه یو نوی میټریک زیږیدلی - د غبرګون وخت (ځواب)

د ځواب وخت په لاندې ډول محاسبه کیږي:

ټرسپون = ترفیرسټرون-ترریول

په دې توګه، د پخوانۍ بیلګې لپاره، د ځواب وخت به وي: A=0، B=0، C=10 (abg=3,33).

او دا معلومه شوه چې د STCF الګوریتم په داسې حالت کې دومره ښه نه دی چیرې چې 3 دندې په ورته وخت کې راځي - دا به انتظار وکړي تر هغه چې کوچني کارونه په بشپړ ډول بشپړ شي. نو الګوریتم د بدلون وخت میټریک لپاره ښه دی ، مګر د متقابل میټریک لپاره خراب دی. تصور وکړئ که تاسو په ټرمینل کې ناست یاست هڅه کوئ چې په مدیر کې کرکټرونه ټایپ کړئ او له 10 ثانیو څخه ډیر انتظار وکړئ ځکه چې یو بل کار CPU په غاړه اخیستی و. دا ډیره خوندوره نه ده.

عملیاتي سیسټمونه: درې اسانه ټوټې. څلورمه برخه: د مهالویش پیژندنه (ژباړه)

نو موږ د بلې ستونزې سره مخ یو - څنګه کولی شو یو مهال ویش جوړ کړو چې د غبرګون وخت سره حساس وي؟

پړاو روبین

د دې ستونزې د حل لپاره الګوریتم رامینځته شوی پړاو روبین (RR). اساسی نظر خورا ساده دی: د دې پرځای چې دندې بشپړې شي ، موږ به دنده د یوې ټاکلې مودې لپاره پرمخ وړو (د وخت سلائس ویل کیږي) او بیا به له کتار څخه بل کار ته لاړ شو. الګوریتم خپل کار تکراروي تر هغه چې ټولې دندې بشپړې شي. په دې حالت کې، د برنامه چلولو وخت باید د څو وختونو څخه وي چې وروسته ټیمر به پروسه مداخله وکړي. د مثال په توګه، که چیرې یو ټیمر په هر x = 10ms کې د پروسې مداخله وکړي، نو د پروسې اجرا کولو کړکۍ اندازه باید د 10 څخه څو وي او 10,20 یا x*10 وي.

راځئ چې یو مثال وګورو: د ABC دندې په سیسټم کې په ورته وخت کې راځي او هر یو غواړي د 5 ثانیو لپاره پرمخ بوځي. د SJF الګوریتم به د بل پیل کولو دمخه هر کار بشپړ کړي. په مقابل کې، د RR الګوریتم د لانچ کړکۍ = 1s سره به د لاندې کارونو څخه تیریږي (شکل 4.3):

عملیاتي سیسټمونه: درې اسانه ټوټې. څلورمه برخه: د مهالویش پیژندنه (ژباړه)
(SJF بیا (د ځواب وخت لپاره خراب)

عملیاتي سیسټمونه: درې اسانه ټوټې. څلورمه برخه: د مهالویش پیژندنه (ژباړه)
(راونډ رابین (د غبرګون وخت لپاره ښه)

د RR الګوریتم لپاره اوسط غبرګون وخت (0+1+2)/3=1 دی، پداسې حال کې چې د SJF لپاره (0+5+10)/3=5.

دا منطقي ده چې فرض کړئ چې د وخت کړکۍ د RR لپاره خورا مهم پیرامیټر دی؛ څومره چې کوچنی وي، د غبرګون وخت لوړ وي. په هرصورت، تاسو باید دا خورا کوچنی نه کړئ، ځکه چې د شرایطو بدلولو وخت به په ټولیز فعالیت کې رول ولوبوي. پدې توګه ، د اجرا کولو کړکۍ وخت انتخاب د OS معمار لخوا ټاکل شوی او په هغه دندو پورې اړه لري چې په دې کې د اجرا کولو پلان شوي. د شرایطو بدلول یوازینی خدمت عملیات ندي چې وخت ضایع کوي - د چلولو برنامه په ډیری نورو شیانو کار کوي ، د بیلګې په توګه ، مختلف کیچونه ، او د هر سویچ سره دا اړینه ده چې دا چاپیریال خوندي او بحال کړئ ، کوم چې کولی شي ډیر وخت ونیسي. وخت

RR یو عالي مهالویش دی که موږ یوازې د ځواب وخت میټریک په اړه خبرې کولې. مګر د دې الګوریتم سره د کاري بدلون وخت میټریک به څنګه چلند وکړي؟ پورته مثال ته پام وکړئ، کله چې د A، B، C = 5s عملیاتي وخت راشي او په ورته وخت کې راشي. ټاسک A به په 13 پای ته ورسیږي، B به په 14 کې، C په 15s کې او د بدلون اوسط وخت به 14s وي. په دې توګه، RR د بدلون میټریک لپاره ترټولو خراب الګوریتم دی.

په نورو عمومي شرایطو کې، د RR ډوله الګوریتم عادلانه دی؛ دا د CPU وخت د ټولو پروسو ترمنځ مساوي ویشوي. او په دې توګه، دا میترونه په دوامداره توګه د یو بل سره ټکر کوي.

پدې توګه ، موږ ډیری متضاد الګوریتمونه لرو او په ورته وخت کې لاهم ډیری انګیرنې پاتې دي - دا چې د دندې وخت پیژندل شوی او دا چې دنده یوازې CPU کاروي.

د I/O سره مخلوط کول

له هرڅه دمخه ، راځئ چې انګیرنه 4 لرې کړو چې پروسه یوازې CPU کاروي؛ په طبیعي ډول ، دا قضیه نده او پروسې کولی شي نورو تجهیزاتو ته لاسرسی ومومي.

کله چې کومه پروسه د I/O عملیاتو غوښتنه کوي، پروسه بند شوي حالت ته ننوځي، د I/O بشپړیدو ته انتظار باسي. که I/O هارډ ډرایو ته واستول شي، نو دا ډول عملیات کولی شي څو ms یا ډیر وخت ونیسي، او پروسیسر به پدې وخت کې بې کاره وي. د دې وخت په جریان کې، شیډولر کولی شي پروسیسر د کوم بل پروسې سره ونیسي. بله پریکړه چې مهالویش به یې وکړي هغه وخت دی چې پروسه به خپل I/O بشپړ کړي. کله چې دا پیښ شي، یو مداخله به واقع شي او OS به هغه پروسه چې I/O نومیږي چمتو حالت ته واړوي.

راځئ چې د څو کارونو مثال وګورو. هر یو د 50ms CPU وخت ته اړتیا لري. په هرصورت، لومړی به I/O ته په هر 10ms کې لاسرسی ومومي (کوم چې په هر 10ms کې به هم اجرا شي). او پروسس B په ساده ډول د I/O پرته د 50ms پروسیسر کاروي.

عملیاتي سیسټمونه: درې اسانه ټوټې. څلورمه برخه: د مهالویش پیژندنه (ژباړه)

په دې مثال کې به موږ د STCF مهالویش وکاروو. مهالویش به څنګه چلند وکړي که چیرې د A په څیر پروسه پیل شي؟ هغه به لاندې کار وکړي: لومړی به هغه په ​​​​بشپړ ډول د A پروسې کار وکړي ، او بیا به B پروسس کړي.

عملیاتي سیسټمونه: درې اسانه ټوټې. څلورمه برخه: د مهالویش پیژندنه (ژباړه)

د دې ستونزې د حل لپاره دودیزه تګلاره دا ده چې د پروسې A هر 10 ms فرعي ټاسک د جلا دندې په توګه چلند وکړي. په دې توګه، کله چې د STJF الګوریتم سره پیل کیږي، د 50 ms دندې او 10 ms دندې ترمنځ انتخاب څرګند دی. بیا، کله چې فرعي ټاسک A بشپړ شي، B او I/O به پیل شي. وروسته له دې چې I/O بشپړ شي، دا به دود وي چې د پروسې B پر ځای د 10ms پروسې A بیا پیل کړئ. په دې توګه، دا ممکنه ده چې اوورلیپ پلي شي، چیرته چې CPU د بلې پروسې لخوا کارول کیږي پداسې حال کې چې لومړی یې په انتظار کې وي. I/O او د پایلې په توګه، سیسټم ښه کارول کیږي - په اوس وخت کې کله چې متقابل پروسې I/O ته انتظار وي، نورې پروسې په پروسیسر کې اجرا کیدی شي.

اوریکل نور نشته

اوس راځئ هڅه وکړو چې د دې انګیرنې څخه ځان خلاص کړو چې د دندې د چلولو وخت معلوم دی. دا عموما په ټول لیست کې ترټولو بد او خورا غیر واقعیت لرونکی انګیرنه ده. په حقیقت کې ، په اوسط عادي OS کې ، OS پخپله معمولا د دندو اجرا کولو وخت په اړه خورا لږ پوهیږي ، نو بیا څنګه کولی شئ مهالویش جوړ کړئ پرته لدې چې پوه شئ چې دنده به څومره وخت ونیسي؟ شاید موږ د دې ستونزې د حل لپاره د RR ځینې اصول وکاروو؟

نتیجه

موږ د کاري مهالویش بنسټیز نظرونه وڅیړل او د مهالویش 2 کورنیو ته مو وکتل. لومړی لومړی ترټولو لنډه دنده پیل کوي او په دې توګه د بدلون وخت زیاتوي، پداسې حال کې چې دویم د ټولو دندو ترمنځ په مساوي توګه ویشل کیږي، د غبرګون وخت زیاتوي. دواړه الګوریتمونه خراب دي چیرې چې د بلې کورنۍ الګوریتمونه ښه دي. موږ دا هم وګوره چې څنګه د CPU او I/O موازي کارول کولی شي فعالیت ښه کړي، مګر د OS ادعا کولو سره ستونزه حل نه کړه. او په راتلونکي لوست کې به موږ یو پلان جوړونکي ته وګورو چې سمدستي ماضي ته ګوري او د راتلونکي وړاندوینې هڅه کوي. او دې ته د څو کچې فیډبیک قطار ویل کیږي.

سرچینه: www.habr.com

Add a comment