490 likes | 1.47k Views
سیستم عامل 2. فصل چهارم: الگوریتمهای زمانبندی. مدرس: امیر شیبانی asheibani.ir a.sheibani86@gmail.com. زمانبندی FCFS ( FIFO ). اول آمده، اول سرویس داده شده ( First Come – First Served ) هر پردازشی که اولین درخواست CPU را صادر کند، اولین پروسسی خواهد بود که آن را به دست میآورد
E N D
سیستم عامل 2 فصل چهارم: الگوریتمهای زمانبندی مدرس: امیر شیبانی asheibani.ir a.sheibani86@gmail.com
زمانبندی FCFS (FIFO) • اول آمده، اول سرویس داده شده (First Come – First Served) • هر پردازشی که اولین درخواست CPU را صادر کند، اولین پروسسی خواهد بود که آن را به دست میآورد • انحصاری • متوسط زمان انتظار طولانی است • جهت سیستمهای اشتراک زمانی مناسب نیست • به سادگی پیاده سازی میشود • تمام پردازشهای صف Ready اجرا میشوند • باعث ایجاد اثر اسکورت میشود • اگر یک پردازش CPU Limited با پردازشهای دیگر چند برنامگی شود، برنامههای دیگر باید زمان زیادی در صف انتظار باقی بمانند تا کار پردازش CPU Limited تمام شود
زمانبندی FCFS (FIFO) • سه پردازش با زمان انفجار CPU زیر در زمان صفر وارد سیستم شدهاند: • اگر پردازشها به ترتیب P1، P2 و P3 وارد شوند بر طبق الگوریتم FCFS نمودار زمانی گانت (Gantt chart) به صورت زیر خواهد بود • زمان انتظار P1: صفر ثانیه. زمان انتظار P2: 24 ثانیه. زمان انتظار P3: 27 ثانیه P1 P2 P3 0 24 27 30 = 3 :متوسط زمان انتظار
زمانبندی نوبت گردشی (Round Robin = RR) • یکی از قدمیترین، سادهترین، عادلانهترین و رایجترین الگوریتمهای زمانبندی • غیر انحصاری • شبیه FCFS، ولی به هر پردازش حداکثر به میزان زمانی مشخصی CPU داده میشود • بر اساس برش زمانی • میانگین زمان انتظار غالبا طولانی است • زمان پاسخ غالبا کوتاه است (به همین خاطر برای سیستمهای اشتراک زمانی مناسب است) • هنگامی که پردازشی CPU را در اختیار دارد دو حالت ممکن است رخ دهد: • پردازش داوطلبانه CPU را رها میکند (انفجار محاسباتی جاری کمتر از کوانتوم زمانی است) • کوانتوم زمانی پایان یافته و CPU از پردازش پس گرفته میشود و پردازش به ته صف میرود • اگر یک فرآیند تازه وارد و یک فرآیند قدیمی هر دو در یک زمان به انتهای صف برسند، فرآیندی که تازه وارد شده، در صف، جلوتر قرار میگیرد
زمانبندی نوبت گردشی (Round Robin = RR) • سه پردازش با زمانهای انفجاری زیر در لحظه صفر وارد سیستم میشوند. متوسط زمان پاسخ، میانگین زمان انتظار و متوسط زمان اجرای آنها را در سیستم RR با کوانتوم 4 میلی ثانیه به دست آورید • حل) • متوسط زمان پاسخ (برگشت): • زمان انتظار: مجموع پریودهای صرف شده در حالت انتظار در صف است 0 20 0 16 4 12 8 0 P1 P2 P3 P1 P1 P1 P1 P1 0 4 7 10 14 18 22 26 30
چند نکته متوسط زمان انتظار + متوسط زمان اجرا = متوسط زمان پاسخ (برگشت) • عموما منظور از زمان پاسخ در مسالهها همان زمان برگشت است: زمان ورود پردازش به سیستم – زمان خروج پردازش از سیستم= زمان برگشت پردازش در فرمول بالا اگر زمان ورود پردازش به سیستم را ندهند، صفر در نظر میگیریم • زمان انتظار: طول اجرای پردازش – زمان ورود پردازش – زمان خروج پردازش = زمان انتظار
زمانبندی نوبت گردشی (Round Robin = RR) • 4 پردازش را با زمانهای انفجار محاسباتی زیر در نظر بگیرید که در زمان صفر وارد سیستم شدهاند. برای کوانتومهای 1 تا 7 میلی ثانیه میانگین زمان برگشت را محاسبه کنید (زمان برگشت = مدت زمان تحویل پردازش به سیستم تا تمام شدن آن) • حل) 0 1 4 5 0 1 3 0 2 0 P4 P4 P1 P2 P3 P4 P1 P2 P4 P1 16 17 0 2 4 5 7 9 10 12 14
زمانبندی اول کوتاهترین کار (SJF) • انحصاری • CPU به پردازشی داده میشود که کوچکترین انفجار محاسباتی بعدی را دارد • اگر دو پردازش مدت انفجار محاسباتی یکسانی داشته باشند براساس FCFS زمانبندی میشوند • در حالت کلی این زمانبندی از نظر میانگین زمان انتظار یا میانگین زمان برگشت، بهینهترین (کمترین) حالت الگوریتمهای انحصاری است. • به خصوص مناسب سیستمهای دستهای است • از قبل زمان اجرای کارها مشخص و معین است
مشکلات SJF • آگاهی از طول درخواست بعدی CPU • در صورت لزوم باید آن را پیشبینی کنیم • طول انفجار بعدی خیلی شبیه طول انفجارهای قبلی باشد • امکان گرسنگی یا قحطیزدگی (Starvation) فرایندهای طولانی در صورت ورود دائم فرایندهای کوچکتر
زمانبندی اول کوتاهترین کار (SJF) • چهار پردازش با زمانهای انفجاری زیر را در نظر بگیرید. اگر الگوریتم زمانبندی SJF باشد زمان انتظار میانگین را به دست آورید. همین زمان را در الگوریتم FCFS به دست آورید. • حل) P4 P1 P2 P3 3 9 16 24 0 P1 P2 P4 P3 6 14 21 24 0
زمانبندی کوتاهترین زمان باقیمانده (SJF) • شبیه SJF اما غیر انحصاری • ممکن است CPU از یک برنامه در حال اجرا توسط برنامه جدیدی که نیاز به زمان کمتری جهت تکمیل دارد گرفته شود • در سیستمهای اشتراک زمانی نیز استفاده میشود • به مانند SJF نیاز به تخمین آینده داریم و احتمال بروز مشکل گرسنگی نیز وجود دارد • در مقایسه با SJF زمان کل بهتری را ارائه میکند زیرا به کار کوتاه نسبت به کار بلند در حال اجرا اولویت میدهد • به خاطر همین پس گرفتنهای CPU و مقایسههای زمانی بیشتر، روش SRT از SJF پرهزینهتر است
زمانبندی کوتاهترین زمان باقیمانده (SJF) • چهار پردازش زیر را در نظر بگیرید و میانگین زمان انتظار را برای حالت SRT و SJF به دست آورید. • حل)SRT: 2 3 7 P1 P2 P1 P3 P4 P2 P2 زمان انتظار p1: 1- 10 1 2 3 5 10 17 26 0 زمان انتظار p2: 1- 1 P1 P1 P3 P4 P2 زمان انتظار p3: 2 - 17 1 5 10 17 26 0 زمان انتظار p4: 3 - 5
زمانبندی کوتاهترین زمان باقیمانده (SJF) • چهار پردازش زیر را در نظر بگیرید و میانگین زمان انتظار را برای حالت SRT و SJF به دست آورید. • حل)SJF: P1 P4 P3 P2 زمان انتظار p1: 0- 0 8 12 17 26 0 زمان انتظار p2: 1- 8 زمان انتظار p3: 2 - 17 زمان انتظار p4: 3 - 12
زمانبندی بالاترین نسبت پاسخ (HRRN) • انحصاری • بعضی از مشکلات SJF را رفع میکند • در SJF نظر افراطی خوبی نسبت به کارهای کوتاه و نظر افراطی بدی نسبت به کارهای طولانی وجود دارد به طوری که ممکن است مشکل قحطیزدگی رخ دهد. • در HRRN اولویتها دینامیک بوده و از فرمول زیر محاسبه میشود • چون زمان سرویس در مخرج است پس کارهای کوتاهتر اولویت بیشتری داشته و زودتر اجرا میشوند • چون زمان انتظار در صورت است، کارهای طولانی نیز که زمان زیادی در صف انتظار بودهاند اولویت بیشتری کسب کرده و بالاخره در یک زمان معین اجرا میشوند
زمانبندی اولویت (Priority Scheduling) • هم انحصاری و هم غیر انحصاری (اغلب به صورت انحصاری) • وقتی پردازشی وارد صف آماده میشود، اگر اولویت پروسس جدید بیشتر از پردازش در حال اجرا باشد: • در سیستم غیرانحصاری: CPU بلافاصله به پردازش جدید تعلق میگیرد • در سیستم انحصاری: پردازش جدید در جلو صف آماده قرار میگیرد • مشکل اصلی این الگوریتم قحطیزدگی (گرسنگی) است. • برای حل این مشکل میتوان از تکنیک سالخوردگی (aging) استفاده کرد. یعنی به تدریج اولویت پردازشهایی که مدت زیادی در سیستم منتظر بودهاند را افزایش دهیم. • در سیستمعاملهای Windows NT و UNIX ترکیب الگوریتمهای RR و اولویت به کار رفته است
زمانبندی اولویت (Priority Scheduling) • در یک سیستم انحصاری پردازشهای زیر موجودند. در الگوریتم اولویت میانگین زمان انتظار را به دست آورید (عدد کوچکتر نمایانگر اولویت بیشتر است). • حل) P2 P5 P3 P4 P1 زمان انتظار p1: 0- 6 1 6 16 18 19 0 زمان انتظار p2: 0- 0 زمان انتظار p3: 0 - 16 زمان انتظار p4: 0 - 18 زمان انتظار p5: 0 - 1
زمانبندی صفهای چندگانه Multiple Queues • در این الگوریتم، صف آماده به صفهای جداگانه مختلفی تجزیه میشود و هر پردازش وارد یک صف میگردد. اولویت صفها با هم فرق داشته و هر صف الگوریتم زمانبندی خود را دارد • هنگامی که بتوان فرآیندها را به سادگی به دستههای متفاوت طبقهبندی کرد • مثلا پردازشهای محاورهای اولویت بیشتری نسبت به پردازشهای دستهای دارند • هیچ فرآیندی در صف پایینتر نمیتواند اجرا شود مگر آنکه صفهای بالایی خالی شده باشند • در این دیدگاه، صفها نسبت به یکدیگر انحصاری هستند • از طرف دیگر میتوان وقت CPU را بین صفها تقسیم نمود. مثلا 80 درصد وقت CPU را به صف بالا و 20 درصد را به صف پایین اختصاص داد
زمانبندی صفهای چندگانه Multiple Queues بالاترین اولویت صف پردازشهای سیستم صفپردازشهایمحاورهای صفپردازشهایویرایشی صف پردازشهای دستهای کمترین اولویت
زمانبندی صفهای چندگانه با فیدبک (MFQ) • در روش قبلی هنگامی که پردازشی وارد صفی میشود، نمیتواند از آن صف خارج و وارد صف دیگری شود. • در این روش پردازشها میتوانند بین صفها جابهجا شوند • پردازشی که زیادی وقت CPU را گرفته به صف با اولویت پایینتری فرستاده میشود. • فرایندی که در صف با اولویت پایین، مدت زیادی منتظر باقی مانده به صف با اولویت بیشتری فرستاده میشود • الگوریتم زمانبندی هر صف عموما RR است، به همین دلیل غیر انحصاری است • کوانتوم صفهای اولیه کمتر از کوانتوم صفهای انتهایی است • سیستم، زمانی به سراغ صف پایین میرود که صف بالا تهی باشد. • یک پردازش در صف پایین توسط یک پردازش جدید در صف بالا، کنار گذاشته میشود
زمانبندی صفهای چندگانه با فیدبک (MFQ) بالاترین اولویت = 0 صف 8 = کوانتوم اولویت متوسط = 1 صف 16= کوانتوم کمترین اولویت = 2 صف FCFS
زمانبندی شانسی (Lottery Scheduling) • انحصاری • سیستم عامل به هر پردازش تعدادی عدد میدهد • تعداد اعداد نسبت داده شده به هر پردازش وابسته به اولویت آن است • هر چه اولویت پردازش بیشتر باشد، اعداد بیشتری به آن داده میشود • سپس به طور اتفاقی یک عدد تولید شده و پردازشی که آن عدد را در اختیار دارد، CPU را در اختیار میگیرد
زمانبندی LPT (Longest Processing Time) • اغلب به صورت انحصاری است و برای سیستمهای چند پردازندهای استفاده میشود • هرگاه که پردازندهای آزاد میگردد، از بین کارهای باقیمانده، طولانیترین کار برای اجرا انتخاب میشود
الگوریتمهای زمانبندی • الگوریتمهای انحصاری: • FCFS – SJF – Priority – HRRN – MLQ – Lottery و LPT • الگوریتمهای غیر انحصاری: • RR – SRT و MLFQ