سیستم عاملی که تاکنون بررسی شد ، اجازه میداد تعدادی پردازش بطور اشتراکی از CPU استفاده کنند . این تکنیک چند اشکال ایجاد می کند. مهمترین مسئله ، تخصیص منابع
است. هدف اصلی درزمانبندی کردن کارها این است که وقت به گونه ای بین کارهای مختلف تقسیم شود ویکی از جهات کارایی سیستم بهینه گردد. جهاتی که مورد نظر هستند
به 4 دسته تقسیم می شوند:
1- فراهم آوردن زمان پاسخ یا گردش مناسب.
2- انجام کار در فاصله زمانی معینی که استفاده کننده ممکن است قید کرده باشد.
3- بالا بردن میزان کاربرد CPU
4- استفاده با راندمان خوب از سایر منابع سیستم.
نکات فوق تاحدی بهم مربوط هستند و بهینه کردن یکی ممکن است به قیمت پایین آوردن کارایی سیستم در رابطه با دیگران باشد.
زمانبندی عبارت است از سازش بین اهداف گوناگون
میزان تاکید بر روی هریک از اهداف فوق به طبیعت و نوع کاربرد سیستم بستگی دارد.
زمانبندی انحصاری و غیر انحصاری:
با توجه به ساختار لایه لایه ای ( پیازی شکل) سیستم عامل ، میتوان انتظار چند قشر زمانبندی در درون سیستم را داشت ، که دو لایه آن معرفی شد
1- زمانبند کار
2- هماهنگ کننده
زمانبند کار تصمیم می گیرد به کدام کار استفاده کننده گان یک پردازنده ، کار داده شود . این تصمیم به عوامل زیر بستگی دارد :
-اولویت
-اینکه برای یک کار از نوع batch تمامی مدارک ورودی اش مهیا باشد.
-ممکن است استفاده کننده در یک فاصله زمانی بیشتر از کوپنش از CPU استفاده کرده باشد.
-ممکن است استفاده کننده خودش محدودیت زمانی داشته باشد (مثلا اجرا قبل از نیمه شب)
پس از آنکه به یک پردازنده کار ، کاری نسبت داده شد ، دیگر زمانبند کار ، کاره ای نیست و تصمیمات بعدی با هماهنگ کننده است.
وظایف هماهنگ کننده در یک سیستم batch ساده عبارتند از :
-انتخاب یک برنامه جهت ورود
-بار کردن ثباتهای برای آن برنامه
از آنجا که بین برنامه ها فعل و انفعالاتی وجود دارد ، باید این امکان باشد که یک برنامه بتواند برنامه دیگری را به منظور انجام کار خود ، آزاد کند . اینکار توسط روتین free که جزء هماهنگ کننده است صورت
میگیرد و وظیفه آن خروج هر برنامه از حالت توقف (Halt) است.
بار دیگر به منظور تاکید بر روی تصمیمات زمانبندی ، بدنه اصلی هماهنگ کننده ارائه شده است. برنامه بر اساس اولویت مرتب شده اند ، یعنی (Process(0 بالاترین اولویت را دارد.
Coordinator :
REPEAT
{p = 0 {Initialize circular scan of Process
REPEAT
{IF process (p) free THEN {Find a process to run
BEGIN
current proc = p
restore registers for the Process and reenter process
{process executes … and exits by calling wait}
wait :
save registers
mark process no longer free
END
p = p + 1
UNTIL p > max process number
FOREVER
تعریف زمانبندی انحصاری و غیر انحصاری:
زمانبندی انحصاری (Preemptive):
ترتیب برنامه ها بر اساس اولویت آنها ، فقط در هنگام انتخاب یک برنامه جهت اجرا بکار می آید. هنگام اجرای برنامه ، به آن اجازه داده میشود ، تا کامل شدن ادامه یابد یعنی تا وقتی که برنامه ، روتین wait را صدا
می کند.
اگر یک برنامه با اولویت بالاتر هم آزاد شود ، باید آنقدر صبر کند که برنامه جاری متوقف شود. این روش در صورتی قابل قبول است که هر برنامه ، در مدت زمان معقولی کنترل را به هماهنگ کننده بر گرداند.
زمانبندی غیرانحصاری (Nonpreemptive):
اگر یک پردازنده ی کار در حال اجرا بود وبرنامه دیگری که اولویت بالاتر دارد آزاد شد ، آنگاه پردازنده کار معلق (Susend) شده وکنترل به هماهنگ کننده برمی گردد.
برش زمانی (Time Slicing) :
در سیستمهای اشتراک زمانی اشکالات اضافی دیگری پدیدار می شود زیرا تعدادی پردازنده ی کار در آنجا وجود دارند که هریک باید چند ثانیه ازCPU استفاده کنند. اما اگر قرار باشد برنامه ای بیش از این صبر کند تا اجرا
شود زمان پاسخ غیرقابل قبول می شود،عملا به این معناست که کاری که مقدار زیادی محاسبه انجام می هد بایستی پس از هر چند هزارم ثانیه CPU را از دست بدهد تا کارهای دیگرانجام شوند سپس کارهای ساده
سریعتروکارهای بامحاسبات پیچیده تر به تاخیرمی افتند.
جهت برطرف کردن مشکلات فوق احتیاج به وسایل زیر داریم:
1- نوعی ساعت وقفه دهنده (Interrupting Clock) جهت وادار ساختن سیستم به گرفتن تصمیماتی در مورد زمانبندی
2- تنظیم دینامیک اولویت کارها، بطوریکه وقتی کاری مقدارمعین ازCPU را در اختیار داشت، پس از آن اولویت به کارهای دیگر داده شود.
این روش سوئیچ کردن آگاهانه از برنامه ای به برنامه دیگربراساس گذشت زمان معین ، به بریدن زمان معروف است .
آن ذره (Quantum) از زمان CPU را برش زمانی گویند.
هماهنگ کننده، می تواند عمل برش زمانی را انجام دهد. اگرچه با استفاده ازیک مدول جدید که زمانبند پردازش ( زمانبند سطح میانی )می نامیم بهتراست . استفاده از مدول جدید به دو دلیل اهمیت دارد :
1- این مدول از بغرنج شدن هماهنگ کننده جلوگیری می کند و از آنجا که هماهنگ کننده در واقع، زمانبندی در پایین ترین سطح است، بهتر است کوتاه و با راندمان بالا نگهداشته شود .
2- این مدول اجازه می دهد با پردازشهای گوناگون بطرق مختلف رفتار شود. برای مثال، برخی پردازنده های کارممکن است کارهایی ازنوع Batch را پردازش وازقوانین برش زمانی معاف شوند .
سطوح زمانبندی:
1- زمانبند کار(سطح بالایی) : تصمیم می گیرد کدام کارها داخل سیستم شوند.
2- زمانبند پردازش(سطح میانی) : اولویت برنامه ها را تنظیم وعملیات برش زمانی را سازماندهی می کند.
3- هماهنگ کننده (سطح پایین) : عملیات همگام کردن منطقی برنامه ها را انجام می دهد .
تکنیک غیرانحصاری کردنCPU زمان پاسخ بهتری را فراهم می کند ولی هزینه های اضافی را در بر دارد :
1- زمان پردازنده که هنگام تعویض پردازش ها صرف می شود.(هزینه تعویض پردازش)
2- حافظه کافی جهت حفظ کل کارهای در حال اجرا لازم است. (هزینه فضای حافظه)
انتخاب تناوب برش زمان:
برش زمان N * = زمان بدترین واکنش برای یک تقاضای ساده
N عبارتست از تعدادبرنامه هایی که به CPU نیاز دارند.
برای تقاضای ساده (مثل وارد کردن یک خط) انتظار میرود که زمان پاسخ کمترازیک یا دوثانیه باشد و برای کارهای بزرگتر همچون کار کامپایل، واکنش های طولانی تر قابل قبول است . این حد بالای مقدار برش زمان
است.
حد پائینی توسط دو عامل تعیین می شود:
1- هزینه های ثابت تعویض برنامه. انتقال کارها به / از حافظه ، حفظ کردن ثباتها و سایر عملیات هماهنگ کننده همگی احتیاج به زمان دارند واین زمان نبایستی آنقدر کوچک باشد که این هزینه ها برکارایی کل سیستم غلبه
کنند.
2- مقدار زمانیکه به هر برش داده می شود باستی کمی بزرگتر از زمان لازم برای فعل وانفعال باشد وگرنه هرکاری احتیاج به حداقل دوبرش زمان دارد.
شامل 18 اسلاید POWERPOINT
دانلود پاورپوینت فصل ششم , اصول زمانبندی