عملیاتي سیسټمونه: درې اسانه ټوټې. پنځمه برخه: پلان جوړونه: د څو سطحو فیډبیک کتار (ژباړه)

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

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

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

نورې برخې:

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

پلان جوړونه: د څو درجې فیډبیک کتار

په دې لیکچر کې به موږ د یوې خورا مشهورې طریقې د پراختیا د ستونزو په اړه خبرې وکړو
پلان جوړونه، چې ویل کیږي د څو کچې فیډبیک کتار (MLFQ). د MLFQ مهالویش لومړی ځل په 1962 کې د فرناندو جې کورباټو لخوا په یو سیسټم کې تشریح شو.
د مناسب وخت شریکولو سیسټم (CTSS). دا کارونه (د وروسته کار په شمول
ملټيکس) وروسته د تورینګ جایزې لپاره نومول شوی و. پلان جوړونکی و
وروسته ښه شوی او ظاهري بڼه یې ترلاسه کړې چې دمخه موندل کیدی شي
ځینې ​​عصري سیسټمونه.

د MLFQ الګوریتم هڅه کوي چې د 2 بنسټیزو ستونزو حل کړي.
لومړی، دا هڅه کوي د بدلون وخت غوره کړي ، کوم چې لکه څنګه چې موږ په تیرو لیکچر کې بحث وکړ ، د قطار په پیل کې د پیل کولو میتود لخوا غوره کیږي.
لنډې دندې په هرصورت، OS نه پوهیږي چې یو ځانګړی پروسه به څومره وخت پرمخ ځي، او دا
د SJF، STCF الګوریتمونو د عملیاتو لپاره اړین پوهه. دوهم، MLFQ هڅه کوي
سیسټم د کاروونکو لپاره ځواب ویونکی کړئ (د مثال په توګه، د هغو کسانو لپاره چې ناست وي او
سکرین ته وګوره چې د کار بشپړیدو ته انتظار باسي) او پدې توګه وخت کم کړئ
ځواب له بده مرغه، د RR په څیر الګوریتمونه د غبرګون وخت ښه کوي، مګر خورا
د بدلون وخت میټریک باندې ناوړه اغیزه لري. نو زموږ ستونزه: څنګه ډیزاین کړو
یو مهالویش کونکی چې زموږ اړتیاوې به پوره کړي پرته لدې چې په اړه څه پوه شي
په عمومي توګه د پروسې ماهیت؟ څنګه شیډولر کولی شي د دندو ځانګړتیاوې زده کړي،
کوم چې دا پیل کوي او په دې توګه غوره پلان جوړونې پریکړې کوي؟

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

یادونه: موږ د تیرو پیښو څخه زده کوو

د MLFQ کتار د سیسټم یوه غوره بیلګه ده چې ترې زده کوي
د راتلونکي وړاندوینې لپاره تیرې پیښې. ورته طریقې ډیری وختونه شتون لري
په OS کې موندل شوي (او د کمپیوټر ساینس ډیری نورې څانګې، په شمول د څانګو
د هارډویر وړاندوینې او کیشینګ الګوریتم). ورته سفرونه
هغه وخت رامینځته کیږي کله چې دندې د چلند مرحلې ولري او پدې توګه د وړاندوینې وړ وي.
په هرصورت، تاسو باید د دې تخنیک سره محتاط اوسئ ځکه چې وړاندوینې خورا اسانه دي
کیدای شي غلط وګرځي او سیسټم د دې په پرتله بدتر پریکړې وکړي
بې له پوهې به وي.

MLFQ: بنسټیز قواعد

راځئ چې د MLFQ الګوریتم اساسي قواعد وګورو. او که څه هم د دې الګوریتم پلي کول
ډیری شتون لري، اساسي طریقې ورته دي.
په تطبیق کې چې موږ به یې وګورو، MLFQ به څو ولري
جلا کتارونه، چې هر یو به مختلف لومړیتوب ولري. هر وخت،
د اجرا کولو لپاره چمتو شوی دنده په یوه کتار کې ده. MLFQ لومړیتوبونه کاروي،
پریکړه کول چې کوم کار د اجرا کولو لپاره پرمخ وړل کیږي، د بیلګې په توګه د لوړ کار سره
لومړیتوب (د کتار څخه کار د لوړ لومړیتوب سره) به لومړی پیل شي
کتار
البته، کیدای شي په ورکړل شوي کتار کې له یو څخه زیات دندې وي، نو
نو دوی به ورته لومړیتوب ولري. په دې حالت کې، میکانیزم کارول کیږي
RR د دې دندو په مینځ کې د منډې مهالویش لپاره.
په دې توګه موږ د MLFQ لپاره دوه اساسي قواعدو ته ورسیږو:

  • قاعده 1: که لومړیتوب (A) > لومړیتوب (B) وي، A دنده به پیل شي (B به نه وي)
  • قاعده 2: که لومړیتوب (A) = لومړیتوب (B)، A&B د RR په کارولو سره پیل شي

د پورته پر بنسټ، د MLFQ پلان کولو کلیدي عناصر
لومړیتوبونه دي. د دې پر ځای چې هر یو ته یو ثابت لومړیتوب ورکړي
دنده، MLFQ د لیدل شوي چلند پر بنسټ خپل لومړیتوب بدلوي.
د مثال په توګه، که چیرې یو کار په دوامداره توګه په CPU کې کار کوي پداسې حال کې چې د کیبورډ ان پټ ته انتظار کوي،
MLFQ به د پروسې لومړیتوب لوړ وساتي ځکه چې دا څنګه ده
یو متقابل عمل باید کار وکړي. که، برعکس، دنده په دوامداره توګه او
د اوږدې مودې لپاره CPU په پراخه کچه کاروي، MLFQ به دا ټیټ کړي
یو لومړیتوب. په دې توګه، MLFQ به د پروسو چلند مطالعه کړي پداسې حال کې چې دوی روان دي
او چلندونه وکاروئ.
راځئ چې یو مثال جوړ کړو چې کتارونه په یو وخت کې څه ډول ښکاري
وخت او بیا تاسو داسې یو څه ترلاسه کوئ:
عملیاتي سیسټمونه: درې اسانه ټوټې. پنځمه برخه: پلان جوړونه: د څو سطحو فیډبیک کتار (ژباړه)

په دې سکیم کې، 2 پروسې A او B د لومړیتوب په کتار کې دي. پروسه
C په منځ کې دی، او D پروسه د کتار په پای کې ده. د پورته په وینا
د MLFQ الګوریتم توضیحاتو سره سم ، مهالویش کونکی به یوازې د لوړې کچې سره دندې اجرا کړي
د RR مطابق لومړیتوب، او دندې C، D به د کار څخه بهر وي.
په طبیعي توګه، یو جامد سنیپ شاټ به د MLFQ د کار کولو بشپړ انځور ونه کړي.
دا مهمه ده چې په سمه توګه پوه شئ چې انځور څنګه د وخت په تیریدو سره بدلیږي.

1 هڅه: د لومړیتوب بدلولو څرنګوالی

پدې وخت کې تاسو اړتیا لرئ پریکړه وکړئ چې څنګه MLFQ به د لومړیتوب کچه بدل کړي
دندې (او په دې توګه په کتار کې د دندې موقعیت) لکه څنګه چې دا د خپل ژوند دورې له لارې پرمختګ کوي. لپاره
دا اړینه ده چې د کار جریان په پام کې ونیسئ: یو ټاکلی مقدار
متقابل کارونه د لنډ وختونو سره (او په دې توګه په مکرر ډول خوشې کول
CPU) او څو اوږدمهاله دندې چې CPU خپل ټول کاري وخت کاروي، پداسې حال کې
د داسې کارونو لپاره د ځواب وخت مهم نه دی. او پدې توګه تاسو کولی شئ خپله لومړۍ هڅه وکړئ
د لاندې قواعدو سره د MLFQ الګوریتم پلي کول:

  • قاعده 3: کله چې یو کار سیسټم ته ننوځي، دا د لوړ سره په کتار کې ځای پرځای کیږي
  • لومړیتوب.
  • قاعده 4a: که چیرې یو کار ورته ټاکل شوي ټول وخت کړکۍ کاروي، نو دا
  • لومړیتوب کم شوی دی.
  • Rule4b: که چیرې یوه دنده د وخت کړکۍ پای ته رسیدو دمخه CPU خوشې کړي، نو دا
  • په ورته لومړیتوب سره پاتې کیږي.

1 بېلګه: یوازینی اوږدمهاله دنده

لکه څنګه چې پدې مثال کې لیدل کیدی شي، د داخلې دنده د لوړ سره ټاکل شوې
لومړیتوب د 10ms د وخت کړکۍ وروسته، پروسه په لومړیتوب کې کمیږي
پلان جوړونکی د بل وخت کړکۍ وروسته، دنده په پای کې کمه شوې ده
په سیسټم کې ترټولو ټیټ لومړیتوب، چیرته چې پاتې کیږي.
عملیاتي سیسټمونه: درې اسانه ټوټې. پنځمه برخه: پلان جوړونه: د څو سطحو فیډبیک کتار (ژباړه)

2 بېلګه: لنډه دنده سپارل

اوس راځئ چې یو مثال وګورو چې څنګه MLFQ به SJF ته د رسیدو هڅه وکړي. په هغه کې
د مثال په توګه، دوه دندې: ​​الف، کوم چې په دوامداره توګه اوږدمهاله دنده ده
د CPU او B قبضه کول، کوم چې یو لنډ متقابل کار دی. فرض کړئ
دا چې A د دندې د رسیدو په وخت کې د یو څه وخت لپاره کار کاوه.
عملیاتي سیسټمونه: درې اسانه ټوټې. پنځمه برخه: پلان جوړونه: د څو سطحو فیډبیک کتار (ژباړه)

دا ګراف د سناریو پایلې ښیې. دنده A، د هرې دندې په څیر،
د CPU کارول خورا ټیټ و. دنده B به په وخت T=100 راشي او به وي
د لوړ لومړیتوب په کتار کې ځای پرځای شوي. ځکه چې د دې عملیاتي وخت لنډ دی
دا به د وروستي کتار ته رسیدو دمخه بشپړ شي.

د دې مثال څخه، د الګوریتم اصلي هدف باید پوه شي: ځکه چې الګوریتم نه کوي
پوهېږي چې یو کار اوږد دی او که لنډ، نو لومړی هغه دنده په غاړه اخلي
لنډ دی او تر ټولو لوړ لومړیتوب ورکوي. که دا واقعیا لنډ کار وي نو بیا
دا به په چټکۍ سره بشپړ شي، که نه نو که دا اوږد کار وي، دا به ورو ورو حرکت وکړي
لومړیتوب به ټیټ شي او ډیر ژر به ثابته کړي چې هغه واقعیا یو اوږد کار دی چې نه کوي
ځواب ته اړتیا لري.

3 بېلګه: د I/O په اړه څه؟

اوس راځئ چې د I/O مثال وګورو. لکه څنګه چې په 4b قاعده کې ویل شوي،
که یوه پروسه پرته له دې چې خپل ټول پروسیسر وخت وکاروي پروسیسر خوشې کوي،
بیا دا په ورته لومړیتوب کې پاتې کیږي. د دې قاعدې اراده خورا ساده ده
- که متقابل کار د I/O ډیری عملیات ترسره کړي، د بیلګې په توګه، انتظار
د کارونکي کیلي یا ماوس فشارونو څخه، دا ډول دنده به پروسیسر آزاد کړي
د ټاکل شوې کړکۍ څخه مخکې. موږ نه غواړو د داسې یو کار لومړیتوب کم کړو،
او په دې توګه به په ورته کچه پاتې شي.
عملیاتي سیسټمونه: درې اسانه ټوټې. پنځمه برخه: پلان جوړونه: د څو سطحو فیډبیک کتار (ژباړه)

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

د اوسني MLFQ الګوریتم سره ستونزې

په تیرو مثالونو کې موږ د MLFQ بنسټیز نسخه جوړه کړه. او داسې ښکاري چې هغه
خپله دنده په ښه او صادقانه توګه ترسره کوي، د CPU وخت په عادلانه توګه ویشل
اوږدې دندې او د لنډ یا لوړ حجم کارونو ته اجازه ورکول
په چټکۍ سره په I/O کار وکړئ. له بده مرغه، دا طریقه ډیری لري
جدي ستونزې.
لومړید لوږې ستونزه: که سیسټم ډیری متقابل عمل ولري
دندې ، نو دوی به د پروسیسر ټول وخت مصرف کړي او پدې توګه به د اوږدې مودې لپاره یو هم نه وي
دنده به د اجرا وړ نه وي (دوی وږي دي).

دوهمهوښیار کاروونکي کولی شي خپل پروګرامونه ولیکي
مهالویش ورکوونکی احمق کړئ. خیانت د زور لپاره یو څه کول دي
مهالویش کوونکی پروسې ته ډیر CPU وخت ورکوي. الګوریتم چې
پورته بیان شوي د داسې بریدونو لپاره خورا زیان منونکي دي: مخکې له دې چې د وخت کړکۍ په عملي توګه وي
پای ته رسیدلی، تاسو اړتیا لرئ د I/O عملیات ترسره کړئ (ځینې ته، پرته له کوم فایل)
او پدې توګه CPU خلاص کړئ. دا ډول چلند به تاسو ته اجازه درکړي چې ورته پاتې شي
قطار پخپله او بیا د CPU وخت لویه سلنه ترلاسه کوي. که تاسو وکړئ
دا سمه ده (د مثال په توګه، د CPU خوشې کولو دمخه د کړکۍ وخت 99٪ اجرا کړئ)
دا ډول دنده کولی شي په ساده ډول پروسیسر انحصار کړي.

په نهایت کې ، یو برنامه کولی شي د وخت په تیریدو سره خپل چلند بدل کړي. هغه دندې
کوم چې CPU کارول کیدی شي متقابل شي. زموږ په مثال کې، ورته
دندې به هغه درملنه ترلاسه نکړي چې دوی یې د مهالویش کونکي څخه مستحق دي لکه څنګه چې نور یې کوي
(ابتدايي) متقابلې دندې.

د لیدونکو لپاره پوښتنه: په مهالویش کې کوم بریدونه په عصري نړۍ کې ترسره کیدی شي؟

دوهمه هڅه: د لومړیتوب زیاتول

راځئ هڅه وکړو چې مقررات بدل کړو او وګورو چې ایا موږ کولی شو له ستونزو څخه مخنیوی وکړو
روژه موږ د دې اړوند ډاډ ترلاسه کولو لپاره څه کولی شو
د CPU دندې به خپل وخت ترلاسه کړي (حتی که اوږد نه وي).
د ستونزې د ساده حل په توګه، تاسو کولی شئ په دوره توګه وړاندیز وکړئ
په سیسټم کې د دا ډول ټولو کارونو لومړیتوب لوړ کړئ. ډیری لارې شتون لري
د دې د ترلاسه کولو لپاره، راځئ چې د مثال په توګه یو څه ساده پلي کولو هڅه وکړو: ژباړه
ټول کارونه سمدلاسه تر ټولو لوړ لومړیتوب ورکول کیږي، له همدې امله نوی قاعده:

  • قانون 5: د یوې ټاکلې مودې وروسته S، په سیسټم کې ټولې دندې لوړې کتار ته انتقال کړئ.

زموږ نوی قانون په یو وخت کې دوه ستونزې حل کوي. لومړی، پروسې
د لوږې نه کیدو تضمین کیږي: هغه دندې چې په لوړ لومړیتوب کې دي ویشل کیږي
د CPU وخت د RR الګوریتم مطابق او پدې توګه ټولې پروسې به ترلاسه کړي
د CPU وخت. دوهم، که ځینې پروسې چې مخکې کارول شوي وي
یوازې پروسیسر متقابل کیږي، دا به د لوړې کچې سره په کتار کې پاتې شي
لومړیتوب د یو ځل زیاتوالي له ترلاسه کولو وروسته تر ټولو لوړ لومړیتوب.
راځئ چې یو مثال وګورو. په دې سناریو کې، د یوې پروسې کارولو ته پام وکړئ
عملیاتي سیسټمونه: درې اسانه ټوټې. پنځمه برخه: پلان جوړونه: د څو سطحو فیډبیک کتار (ژباړه)

CPU او دوه متقابل، لنډ پروسې. په انځور کې کیڼ اړخ ته، ارقام د لومړیتوب ترویج پرته چلند ښیي، او پدې توګه اوږدمهاله دنده سیسټم ته د دوه متقابلو کارونو له رسیدو وروسته لوږه پیل کوي. په ښي اړخ کې، د لومړیتوب زیاتوالی په هر 50ms کې ترسره کیږي او پدې توګه ټولې پروسې د CPU وخت ترلاسه کولو تضمین کیږي او په دوره توګه به پیل شي. په دې قضیه کې 50ms د مثال په توګه اخیستل کیږي؛ په حقیقت کې دا شمیر یو څه لوړ دی.
په ښکاره ډول، د دوراني زیاتوالي وخت اضافه کول د S لامل کیږي
یوه منطقي پوښتنه: کوم ارزښت باید ټاکل شي؟ یو له ویاړونو څخه
د سیسټم انجینر جان اوسټر هوټ په سیسټمونو کې دا ډول مقدار د وو-ډو په نوم یاد کړ
ثابت، ځکه چې دوی په یو ډول د سمولو لپاره تور جادو ته اړتیا درلوده
نندارې او، له بده مرغه، S داسې بوی لري. که تاسو ارزښت هم وټاکئ
لوی - اوږدې دندې به لوږه پیل کړي. او که تاسو ارزښت خورا ټیټ وټاکئ،
متقابلې دندې به د CPU مناسب وخت ترلاسه نکړي.

دریمه هڅه: ښه محاسبه

اوس موږ د حل لپاره بله ستونزه لرو: څنګه نه
اجازه راکړئ چې زموږ مهالویش ورکوونکي احمق شي؟ د دې احتمال لپاره خلک ملامت دي
قواعد 4a، 4b، کوم چې کار ته اجازه ورکوي چې لومړیتوب وساتي، پروسیسر آزاد کړي
مخکې له دې چې ټاکل شوی وخت پای ته ورسیږي. د دې سره څنګه معامله وکړو؟
په دې حالت کې حل د هر یو د CPU وخت غوره محاسبه ګڼل کیدی شي
د MLFQ کچه. د دې پرځای چې د برنامه کارول شوي وخت هیر کړئ
د ټاکل شوې مودې لپاره پروسیسر، دا باید په پام کې ونیول شي او خوندي شي. وروسته
پروسې خپل ټاکلی وخت مصرف کړی، دا باید بل ته کم شي
د لومړیتوب کچه. اوس دا مهمه نده چې پروسه به څنګه خپل وخت وکاروي - څنګه
په دوامداره توګه پروسیسر یا د څو زنګونو په توګه کمپیوټر کول. په دې توګه،
قاعده 4 باید په لاندې فورمه کې بیا ولیکل شي:

  • قانون 4: وروسته له دې چې یو کار خپل ټاکل شوی وخت په اوسني کتار کې مصرف کړي (هیر مهم نه دی چې څو ځله یې CPU خلاص کړی) ، د دې دندې لومړیتوب ټیټ شوی (دا په قطار کې حرکت کوي).

راځئ چې یو مثال وګورو:
عملیاتي سیسټمونه: درې اسانه ټوټې. پنځمه برخه: پلان جوړونه: د څو سطحو فیډبیک کتار (ژباړه)»

ارقام ښیې چې څه پیښیږي که تاسو د مهالویش ګمراه کولو هڅه وکړئ ، لکه
که دا د پخوانیو قواعدو سره وي 4a، 4b به په کیڼ اړخ کې پایله ترلاسه شي. نوی مبارک
قاعده په ښي خوا کې پایله ده. د محافظت څخه دمخه، هره پروسه کولی شي د بشپړیدو دمخه I/O ته زنګ ووهي
په دې توګه په CPU باندې تسلط لري، د محافظت فعالولو وروسته، د چلند په پام کې نیولو پرته
I/O، هغه به لا هم په کتار کې ښکته شي او په دې توګه به د بې ایمانۍ توان ونلري
د CPU سرچینې په غاړه واخلئ.

د MLFQ او نورو ستونزو ښه کول

د پورته پرمختګونو سره نوې ستونزې راځي: یو له اصلي څخه
پوښتنې - څنګه د داسې مهالویش پیرامیټریز کول؟ هغوی. دا باید څومره وي
کتارونه؟ په کتار کې د پروګرام کړکۍ اندازه باید څومره وي؟ هغه څنګه
د پروګرام لومړیتوب باید ډیری وختونه لوړ شي ترڅو د لوږې مخنیوی وشي
د پروګرام چلند کې بدلون په پام کې ونیسئ؟ د دې پوښتنو لپاره هیڅ ساده ځواب نشته
ځواب او یوازې د بارونو او ورپسې ترتیب سره تجربې
پالن جوړونکی کیدای شي د یو څه قناعت وړ توازن لامل شي.

د مثال په توګه، د MLFQ ډیری پلي کول تاسو ته اجازه درکوي مختلف وټاکئ
د مختلفو کتارونو لپاره د وخت وقفې. د لوړ لومړیتوب کتارونه معمولا
لنډ وقفې ټاکل شوي دي. دا کتارونه د متقابلو کارونو څخه جوړ دي،
د کومو ترمنځ بدلول خورا حساس دي او باید 10 یا لږ وخت ونیسي
اغلی. په مقابل کې، د ټیټ لومړیتوب کتارونه د اوږدمهاله کارونو څخه جوړ دي چې کاروي
سی پی یو. او په دې حالت کې، د اوږدې مودې وقفې خورا ښه دي (100ms).
عملیاتي سیسټمونه: درې اسانه ټوټې. پنځمه برخه: پلان جوړونه: د څو سطحو فیډبیک کتار (ژباړه)

په دې مثال کې 2 دندې شتون لري چې د لوړ لومړیتوب کتار 20 کې کار کوي
ms، په 10ms وینډوز ویشل شوی. 40ms په منځنۍ کتار کې (20ms کړکۍ) او په ټیټ لومړیتوب کې
د قطار وخت کړکۍ 40ms شوه چیرې چې دندې خپل کار بشپړ کړ.

د MLFQ سولاریس OS پلي کول د وخت شریکولو مهالویشونو ټولګي ده.
پالن جوړونکی به د جدولونو یو سیټ چمتو کړي چې په سمه توګه تعریف کړي لکه څنګه چې باید وي
د پروسې لومړیتوب د هغه د ژوند په جریان کې بدلیږي، اندازه باید څه وي
تخصیص شوی کړکۍ او څو ځله تاسو اړتیا لرئ د دندې لومړیتوبونه لوړ کړئ. مدیر
سیسټمونه کولی شي د دې جدول سره اړیکه ونیسي او د مهالویش د چلند لامل شي
په بل ډول. په ډیفالټ، دا جدول د تدریجي زیاتوالي سره 60 کتارونه لري
د کړکۍ اندازه له 20ms (لوړ لومړیتوب) څخه څو سوه ms (ټیټ لومړیتوب) ته، او
همدارنګه په هر ثانیه کې یو ځل د ټولو دندو د ودې سره.

نور MLFQ پالن جوړونکي میز یا کوم ځانګړي نه کاروي
هغه قواعد چې په دې لیکچر کې تشریح شوي، برعکس، دوی په کارولو سره لومړیتوبونه محاسبه کوي
ریاضيکي فورمولونه د مثال په توګه ، د FreeBSD مهالویش کونکی د دې لپاره فارمول کاروي
د یو کار اوسنی لومړیتوب محاسبه کړئ د دې پراساس چې پروسه څومره اوږده ده
CPU کارول شوی. سربیره پردې ، د CPU کارول د وخت په تیریدو سره تخریب کیږي ، او داسې نور
په دې توګه، د لومړیتوب زیاتوالی د پورته ذکر شوي په پرتله یو څه توپیر لري. دا رشتېا ده
د تخریب الګوریتم په نوم یادیږي. د 7.1 نسخه راهیسې، FreeBSD د ULE مهالویش کارولی دی.

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

MLFQ: لنډیز

موږ د MLFQ په نوم د پالن کولو طریقه تشریح کړې. د هغه نوم
د عملیاتو په اصولو کې تړل شوی - دا څو کتارونه لري او فیډبیک کاروي
د کار لومړیتوب ټاکل.
د مقرراتو وروستۍ بڼه به په لاندې ډول وي:

  • قانون 1: که لومړیتوب (A) > لومړیتوب (B)، دنده A به پیل شي (B به نه وي)
  • قانون 2: که لومړیتوب (A) = لومړیتوب (B)، A&B د RR په کارولو سره پیل شي
  • قانون 3: کله چې یو کار سیسټم ته ننوځي، دا د لوړ لومړیتوب په کتار کې ځای پرځای کیږي.
  • قانون 4: وروسته له دې چې یو کار خپل ټاکل شوی وخت په اوسني کتار کې مصرف کړي (هیر مهم نه دی چې څو ځله یې CPU خلاص کړی) ، د دې دندې لومړیتوب ټیټ شوی (دا په قطار کې حرکت کوي).
  • قانون 5: د یوې ټاکلې مودې وروسته S، په سیسټم کې ټولې دندې لوړې کتار ته انتقال کړئ.

MLFQ د لاندې دلیل لپاره په زړه پوري دی - د دې پرځای چې په اړه پوهه ته اړتیا وي
د دندې طبیعت مخکې له مخکې، الګوریتم د دندې پخوانی چلند مطالعه کوي او سیټ کوي
له مخې لومړیتوبونه. په دې توګه، هغه هڅه کوي چې په یو وخت کې په دوو څوکیو کې ناست وي - د وړو کارونو (SJF، STCF) لپاره د تولید لاسته راوړلو لپاره او په صادقانه توګه اوږد مهاله،
د CPU بارولو دندې. له همدې امله، ډیری سیسټمونه، په شمول د BSD او د دوی مشتقات،
سولاریس، وینډوز، ماک د مهالویش په توګه د الګوریتم ځینې ډولونه کاروي
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