250 likes | 402 Views
Operating system سيستم عامل. Shahriar Pirnia http://www.pirnia.net. زمان بندی پروسسها Process Scheduling.
E N D
Operating systemسيستم عامل Shahriar Pirnia http://www.pirnia.net
زمان بندی پروسسها Process Scheduling Scheduler (زمانبند) : بخشی از سیستم عامل است که تصمیم می گیرد از بین پروسسهای آماده اجرا CPU به کدام یک داده شود . برا ی این تصمیم گیری از الگوریتمی استفاده می شود که الگوریتم زمان بندی (ُScheduling Algorithm) نامیده می شود . ملاکهایی که یک الگوریتم زمانبندی خوب باید دارا باشد عبارت است از : 1- عدالت ((Fairness : هر پروسس سهم عادلانه ای از CPU را دریافت نماید . 2- کارایی (ٍٍٍٍEfficiency) : CPU بیکار نماند و وقتی پروسس امکان جلو رفتن ندارد CPU به پروسس دیگری داده شود . 3- زمان پاسخ (Response Time) : زمان پاسخ ، زمان پاسخ به فرمانهای Interactive کاربر است . 4- حداقل بودن زمان بازگشت (Turnaround Time) : زمان بازگشت برای یک کار Batch طول زمان از لحظه ورود آن به سیستم تا لحظه پایان یافتن (کامل شدن) آن می باشد . 5- حداکثر شدنThroughput: تعداد کارهایی است که در واحد زمان انجام می شود . زمانبندی انحصاری (Nonpreemptive) (اجرا تا تکمیل) زمانبندی زمانبندی غیر انحصاری (Preemptive)
زمانبندی Round Robin : یکی از رایج ترین و ساده ترین الگوریتمهای زمانبندی است . پیاده سازی آن بسیار ساده است . کافی است یک لیستی از پروسسهای آماده اجرا نگهداری شود . به هر پروسس یک Quantum (کوانتم) یا Time-slice (برش زمانی) CPU داده می شود . اگر پروسس در پایان کوانتم هنوز خاتمه نیافته باشد ، CPU از آن گرفته می شود و به پروسس بعدی در صف داده می شود . اندازه Quantum چقدر باشد ؟ فرض کنید Context switch ، 5 میلی ثانیه طول بکشد . اگر طول کوانتم 20 میلی ثانیه باشد 20% = (20 + 5) / 5 = میزان اتلاف اگر طول کوانتم را 500 میلی ثانیه در نظر بگیریم 1% > 505/5 =( 5 + 500 )/ 5 = میزان اتلاف اغلب کوانتم برابر 100 میلی ثانیه را مناسب می دانند .
زمانبندی اولویت (Priority Scheduling Algorithm) : در زمانبندی Round Robin همه پروسسها دارای اولویت یکسان بودند . نیاز به اعمال فاکتورهای خارجی منجر به زمانبندی دارای اولویت می شود . p5 100 p2 80 p3 70 p5 p2 80 p3 70 90 پس از گذشت یک : quantum p5 80 p2 80 p3 70 پس از گذشت دو : quantum p5 70 p4 80 p3 70 p5 70 p4 70 p3 70 p5 70 p4 60 p3 70
اولویت می تواند به صورت ایستا وپویا نسبت داده شود . مثال : درکامپیوترهای نظامی مثال : درسایتهای کامپیوتری کارتهای طلایی نقره ای وبرنز و.... اولویتها میتوانند بطور پویا تعیین شوند مثلا به پروسسهای I/O limited اولویت f/ 1 نسبت دهیم که f کسری ازآخرین کوانتم است که پروسس cpu رادر دست داشته . اگر کوانتم 100میلی ثانیه باشد وپروسس p1 ، 20 میلی ثانیه ا ز cpu استفاده کرده باشد f = 20/100 5 = f/1= اولویت p1 اگرکوانتم 100میلی ثانیه باشد و پروسسp2 ، 2میلیثانیه از CPUاستفاده کرده باشد : f = 2/100 = 1/f =50 اولویت p2
میتوان از کلاسهای اولویت (priority classes) استفاده کرد : دراین روش پروسسهادرکلاسهای اولویت قرارداده میشوند . زمانبندی بین کلاسها اولویت داراست ولی زمانبندی درداخل هر کلاس Round Robin است . Runable Processes QueueHeaders Priority 4 (Highest priority) Priority 3 Priority 2 (Lowest priority) Priority 1
زمانبندی صفحه های چندگانه (multiple queues) CTSSدارای زمانبندی اولویت دار بود ولی سرعت تعویض پروسس در آن کم بود . طراحان CTSS متوجه شدند اگر به پروسسهای CPU-Limited به جای اختصاص دادن مکرر کوانتم های کوچک کوانتم های طولانی تر داده شود Throughput سیستم بالاتر می رود . از کلاسهای اولویت استفاده کردند . بالاترین اولویت صف پروسسهایی که 1 کوانتم اجرا می شوند صف پروسسهایی که 2 کوانتم اجرا می شوند صف پروسسهایی که 4 کوانتم اجرا می شوند کاهش اولویت صف پروسسهایی که 8 کوانتم اجرا می شوند صف پروسسهایی که 16 کوانتم اجرا می شوند ... ...
اگر پروسس از تمامی کوانتم های خود در یک کلاس بطور کامل استفاده کند و هنوز کامل نشده باشد در کلاس پایین تر قرار می گیرد . در سیستم XDS 940 : ازکلاسهای اولویت مطابق شکل زیر استفاده می شود . ترمینال I/O کوانتم های کوتاه کوانتم های طولانی
زمانبندی ابتدا کوتاهترین کار Shortest Job First (SJF) : این الگوریتم مخصوص کارهای دسته ای (Batch) می باشد. وقتی چند کار Batch با اولویت یکسان وجود دارد . این الگوریتم می گوید CPU باید به پروسسی داده شود که Turnaround time کوچکتر ی دارد (یعنی آن پروسسی که زودتر خاتمه می یابد.) Turnaround Time A: 8ثانیه Turnaround Time B: 12 ثانیه Turnaround Time C: 16 ثانیه Turnaround Time D: 20 ثانیه A B C D 8 4 4 4 (a) 8+12+16+20 T= = 14 ثانیه 4
Turnaround Time D : 4 ثانیه Turnaround Time C : 8 ثانیه Turnaround Time B:12 ثانیه Turnaround Time A:20 ثانیه D C B A 4 4 4 8 (b) 4+8+12+20 T= = 11 ثانیه 4
T پروسس زمان A a a B b a+b C c a+b+c D d a+b+c+d 4a+3b+2c+d T= 4 آن پروسسی که زمان بازگشت کوتاهتری دارد((Shortest Job) باید ابتدا اجرا شود (Shortest Job First)
زمانبندی تضمین شده (Guaranteed Scheduling Algorithm ) تضمین کنیم که به پروسس سهم عادلانه ای از وقت CPU را اختصاص دهیم . اگر n پروسس در حال کار باشند باید هر یک بتوانند 1/n از وقت Cpu را در اختیار گیرند . زمان نامی پروسس = n/زمان طی شده زمان واقعی استفاده شده را سیستم عامل ثبت کرده است . نسبت زمان واقعا استفاده شده به زمان نامی را برای هر پروسس محاسبه می کند : نسبت 0.5 یعنی پروسس نصف سهم واقعی خود را دریافت کرده و نسبت دو به این معنی است که پروسس دو برابر سهم واقعی خود را به دست آورده است . طبق این الگوریتم cpu باید به پروسسی داده شود که از میان پروسسهای موجود کمترین سهم را داشته باشد . • 1.5 0.80 0.75 0.5 • 1.75 1.2 0.75 0.70 0.6 • 1.45 1.05 0.72 0.65 0.7
زمانبندی بخت آزمایی (قرعه کشی ) (Lottery Scheduling ) به پروسسها بلیطهای بخت آزمایی بدهیم هر بار که الگوریتم زمانبندی اجرا می شود یک بلیط را به طور تصادفی برنده انتخاب کند . پروسسی که این بلیط را دارد cpu به آن داده شود . جورج اورول (George Orwell) می گوید “همه پروسسها مساویند ولی برخی از پروسسها مساویترند " باید به پروسسهای مهمتر بلیطهای بیشتری بدهیم تا شانس برنده شدن آنها افزایش یابد . فرض کنید 100 بلیط وجود دارد پروسس A 20 بلیط در اختیار دارد و پروسس B 80 بلیط در اختیار دارد شانس A برای برنده شدن 20% و شانسB 80% است . پروسسی که کسر f از بلیطها را در اختیار دارد در قرعه کشی کسر f از زمان CPU را نیز به دست خواهد آورد .
زمانبندی بلادرنگ : Real-time Scheduling سیستم بلادرنگ (Real time) سیستمی است که در آن زمان پاسخگویی به وقایع خیلی اهمیت دارد. به عنوان مثال یک نیروگاه اتمی را در نطر بگیرید ، برخی کمیتها باید تحت کنترل دقیق باشند مثلا در اثر پرتاپ نوترونها به اتمها ، نوترونهای جدیدی آزاد می شوند و نوترونهای آزاد شده به اتمهای دیگر برخورد می کند و نوترونهای جدید آزاد میشود و بهمین ترتیب . اگر تعداد نوترونهای آزاد شده از یک حدی بیشتر باشد انفجار نوترونی اتفاق می افتد.پس غلظت نوترونها باید تحت کنترل دقیق باشد . حتی یک ثانیه بعد یا یک دقیقه یا یک ساعت بعد از انفجار اگر پاسخ دهد ، هیچ ارزشی ندارد. سیستم مانیتورینگ بخش I.C.U یک بیمارستان یک مثال دیگر از سیستم Rea-time است. سیستمهای Real-time به دو دسته تقسیم می شوند : بلادرنگ سختHard Real-time بلادرنگ نرم Soft Real-time
بلادرنگ سخت (Hard Real-time) سیستمی است که در یک مهلت زمانی یا پاسخ میدهد یا هیچ ، مانند مثالهای فوق. سیستم بلادرنگ نرم سیستمی است که در بعضی از مواقع آماده نشدن پاسخ در مهلت زمانی تعیین شده قابل تحمل است مانند سیستم پخش یک قطعه موسیقی از روی CD یا پخش یک Video-Clip از روی یک VCD . - در یک سیستم بلادرنگ وقایعی رخ می دهد ؛ برنامه به تعدادی پروسس تقسیم می شود و هر پروسس برای پاسخگویی به یک نوع واقعه است. وقایع در یک سیستم بلادرنگ به دو دسته تقسیم می شوند: متناوبPeriodic غیر متناوب Aperiodic وقایع
وقایع متناوب با دوره تناوب مشخص تکرار می شوند . وقایع غیر متناوب به صورت تصادفی رخمی دهند ( زمان رخ داد مشخصی ندارند) از آنجا که پردارش مربوط به هر واقعه بخشی از زمان CPU را اشغال می کند ، ممکن است پاسخ کلیه وقایع در مهلت مشخص امکان پذیر نباشد . مخصوصا اگر قدرت پردازش بالا نباشد . فرض کنید وقایع متناوب عبارتند از : E1 E2 . . . Em E مخفف Event است . اگر فرض کنیم process مربوط به واقعه i ، Ciثانیه وقت CPU را اشغال می کند؛ آنگاه : CiFi = زمان اشغال شده در ثانیه از وقت CPU برای واقعه i
و کل زمان صرف شده از CPU در یک ثانیه برای پاسخگویی به وقایع عبارتست از : m CiFi = C1F1+C2F2+…..CmFm I = i=1 بدیهی است اگر مقدار I کوچکتر یا مساوی یک ثانیه باشد یعنی قدرت پردازش سیستم برای پلسخگویی به کلیه وقایع کافی است . لذا شرط اینکه سیستم قادر به پاسخگویی به کلیه وقایع باشد این است که m m Ci /Pi <=1 CiFi <=1 یا i=1 i=1 در این صورت می گویند سیستم قابل زمانبندی (Schedulable)است . )از زمان Process Switch صرفنظر شده .)
مثال : فرض کنید یک سیستم بلادرنگ از سه واقعه متناوب با دوره های تناوب 100، 200 ،500 میلی ثانیه تشکیل شده است .اگر هر واقعه به ترتیب به 50 و 30و100 میلی ثانیه زمان CPU نیاز داشته باشد، (الف) آیا سیستم فایل زمانبندی (Schedulable) است ؟ m Ci / Pi = c1/p1 + c2/P2 +C3/P3=50/100+30/200+100/500= 0.5+0.15+0.2=0.85<=1 i=1 لذا قابل زمانبندی است (ب) اگر واقعه چهارمی با دوره تناوب 1 ثانیه اضافه شود آیا سیستم هنوز قابل زمانبندی است؟ m Ci / Pi = c1/p1 +..+C4/P4=0.85 + C4/1<=1 C4<=150ms C4<=0.15ثانیه i=1 لذا فقط در صورتیکه Process مربوطه به P4 حداکثر به 150 میلی ثانیه زمان CPU نیاز داشته باشد ،سیستم قابل زمانبندی است.
برخی از الگوریتمهای زمانبندی بلادرنگ : 1- الگوریتم نرخ یکنواخت (Rate Monotonic Algorithm) : یک الگوریتم دارای اولویت است که به هر پروسس ، اولویتی متناسب با فرکانس آن رخداد اختصاص داده شود . به عنوان مثال اگر Process 1 ، دارای دوره تناوب 20 میلی ثانیه است و به آن اولویت 50 داده می شود و به Process2 ، دارای دوره تناوب 100 میلی ثانیه است اولویت 10 داده می شود
2- الگوریتم ابتدا زودترین مهلت ( Earliest Deadline First) مهلت برای یک واقعه متناوب برابر زمان رخداد واقعه بعدی خواهد بود . مثال : 450 ms 300 لحظه تصمیم گیری زمانبند این الگوریتم می گوید که لیستی آماده اجرا داشته باشیم که در آن پروسسها به ترتیبمهلتشان Sort شده اند. سپس پروسسی CPU ميگیرد که اول صف باشد یعنی پروسسی که کمترین مهلت را دارد ( فرصتش ار همه کمتر است).
الگوریتم کمترین لختی (Least Laxity): تعریف مقدار لختی یک پروسس :حداکثر مقدار زمانی که پروسس می تواند در آن مدت آماده باقی بماند و اجرا نشود .مثال : اگر یک پروسسی 200 میلی ثانیه وقت CPU نیاز داشته باشد و 250 میلی ثانیه مهلت داشته باشد و لختی آن 50 میلی ثانیه است . 250 50 200 لحظه تصمیم گیری زمانبند الگوریتم کمرین لختی (Least Laxity) می گوید پروسسی انتخاب شود که کمترین لختی را دارد برخی از مشخصات سیستمهای عامل بلادرنگ عبارتند ار : کوچکی اندازه ، وقفه زمانی سریع ، تعویض متن سریع ، کوتاه بودن فواصل زمانی از کار انداختن وقفه ها
برخی از مشخصات سیستمهای عامل بلادرنگ عبارتند ار : کوچکی اندازه ، وقفه زمانی سریع ، تعویض متن سریع ، کوتاه بودن فواصل زمانی از کار انداختن وقفه ها زمانبندی دو سطحی (Two-Level Scheduling Algorithm): تاکنون فرض کرده ایم که پروسسهاي آماده اجرا همه در حافظه اصلی قراردارند ، اما اگر حافظه اصلی به اندازه کافی نباشد برخی از پروسسهای قابل اجرا در حافطه جا نمی گیرند و باید روی دیسک نگهداری شوند . زمان تعویض پروسس برای پروسسی که در دیسک ایست بعلت مبادله ار دیسک به حافظه اصلی ، بسیار بزرگتر از حالتی است که به پروسسي Switch کنیم که در حافظه اصلی قرار دارد. از بین پروسسهای آماده اجرا ، زمانبند CPU را به کدامیک اختصاص دهد؟ یک راه استفاده از الگوریتم زمانبندی دو سطحی است : از 2 زمانبند استفاده می شود : زمانبند سطح بالا High Level Scheduler زمانبند سطح پایینLow Level Scheduler
زمانبند سطح بالا تعیین می کند که کدام پروسسها در حافظه باشند و کدامها در دیسک باشند. زمانبند سطح پایین از بین آنها که در حافظه اند ، انتخاب می کند CPU به کدامیک داده شود Processes in main memory e,f,g,h b.c.f.g a,b,c,d Processes On Disk e,f,g,h a,b,c,d a,d,e,h (A) (B) (D)
معیارهایی که زمانبند سطح بالاتر در تصمیم گیری استفاده می کند : 1- از لحظه ای که پروسس به داخل یا خارج حافظه مبادله شده ، چه مدت می گذرد؟ 2-اخیرا پروسس چه مقدار از زمان CPU استفاده کرده است ؟ 3-پروسس چقدر بزرگ است ؟ (پروسسهای کوچک ارزش مبادله ندارد) 4-پروسسس تا چه حد از اولویت برخوردار است ؟
سیاست در مقابل مکانیزم (Policy Versus Mechanism) الگوریتمهای زمانبندی که تاکنون مطرح شد ، هیچ داده ای را از پروسسهای کاربر در تصمیم گیریهای زمانبندی دخالت نمی دهند ، در نتیجه زمانبند به ندرت بهترین تصمیم را میگیرد. مثلا : الگوریتم زمانبندی اولویت است (که در هسته سیستم عامل است) ، سیاست زمانبندی (اینکه به چه پروسسی چه اولویتی تخصیص داده می شود) هم توسط خود سیستم از اولوبت آنها داشته باشد. مثلا در یک سسیستم پایگاه داده یک پروسس اصلی وجود دارد و درخواستهای عامل (هسته سیستم عامل)تعیین می شود. بعضی مواقع است که یک پروسس چندین فرزند دارد و می تواند ایده جالبی کاربران و غیره به آن داده می شود و پروسسهای جدید به عنوان فرزندان برای انجام درخواستها و امور مختلف ایجاد می شود. در این حالت پروسس اصلی می داند که کدام پروسس چه اولویتی دارد .در این موارد راه حل این است که مکانیزم زمانبندی از سیاست زمانبندی جدا باشد. مثلا : الگوریتم زمانبندی پارامتر پذیر باشد ؛ اما پارامترها توسط پروسسهای کاربر مقداردهی شود. در مورد مثال پایگاه داده ها : هسته ممکن است از الگوریتم اولویت دار استفاده کند ولی یک فراخوان سیستمی وجود داشته باشد که از طریق آن یک پروسس بتواند اولویت فرزندان خود را تعیین کند یا تغییر دهد . در اینجا مکانیزم در درون هسته است ، اما سیاست توسط کاربر تعیین می شود . پروسس پدر می تواند جزئیات چگونگی زمانبندی فرزندان خود را کنترل نماید ، اگر چه که خود او زمانبندی را انجام نمی دهد.