زمان بندی پردازش ها (Process Scheduling) در سیستم عامل – راهنمای جامع


منظور از زمانبندی پردازش، فعالیت یک نرمافزار مدیریت پردازش است که فرایند حذف پردازشهای در حال اجرا از CPU و انتخاب پردازشهای دیگر بر مبنای یک راهبرد خاص را مدیریت میکند. زمانبندی پردازش جزئی ضروری از سیستمهای عامل چندبرنامگی است. چنین سیستمهای عاملی امکان بارگذاری همزمان بیش از یک پردازش در حافظه اجرایی را فراهم میسازند و این پردازشهای بارگذاری شده با استفاده از فرایندی به نام time multiplexing، پردازنده را بین خود به اشتراک میگذارند.
صفهای زمانبندی پردازش
سیستم عامل همه PCB ها را در صفهای زمانبندی پردازش نگهداری میکند. سیستم عامل یک صف مجزا از هر یک از حالتهای پردازش نگهداری میکند و PCB های همه پردازشها را نیز در همان پشته اجرایی و همان صف ذخیره میسازد. زمانی که حالت یک پردازش تغییر یابد، PCB آن از صف جاری جدا میشود و به صف حالت جدید میرود.
سیستم عامل صفهای مهم زمانبندی پردازش زیر را نگهداری میکند:
- صف Job – این صف همه پردازشهای سیستم را شامل میشود.
- صف Ready – این صف مجموعهای از پردازشهای مقیم در حافظه اصلی را نگهداری میکند که آماده یا در انتظار اجرا هستند. یک پردازش جدید همواره در این صف قرار میگیرد.
- صف دستگاهها (Devices) – پردازشهایی که به دلیل عدم دسترسی به یک دستگاه ورودی/خروجی قفل شدهاند در این صف قرار میگیرند.
سیستم عامل میتواند از تدابیر مختلفی برای مدیریت هر صف بهره بگیرد که شامل رویههای FIFO, Round Robin، اولویتبندی و غیره است. ابزار زمانبندی سیستم عامل در مورد چگونگی جابجایی پردازشها بین صفهای آماده و اجرایی که هر زمان برای هر هسته پردازنده تنها یک پردازش جای دارد تصمیمگیری میکند. در نمودار فوق همه هستهها در پردازنده (CPU) ادغام شدهاند.
مدل پردازش دو حالتی
منظور از مدل دو حالتی، حالتهای اجرایی و غیر اجرایی برای پردازش است که به شرح زیر است:
حالت | توضیح |
---|---|
اجرایی | زمانی که یک پردازش ایجاد میشود به حالت اجرایی وارد سیستم میشود. |
غیر اجرایی | پردازشهایی که در حالت اجرایی نیستد در این صف نگهداری میشوند و منتظر هستند تا دوباره اجرایی شوند. هر مدخل در این صف یک اشارهگر به پردازش خاص است. این صف با استفاده از لیست پیوندی پیادهسازی میشود. زمانی که یک پردازش متوقف میشود در این هنگام پردازش به صف انتظار میرود. اگر پردازش به پایان برسد و یا از حافظه خارج شود، در هر صورت پردازش خاتمه یافته تلقی میشود و بنابراین ابزار زمانبندی پردازش دیگری را از صف اجرایی برای اجرا کردن انتخاب میکند. |
ابزارهای زمانبندی
ابزارهای زمانبندی نرمافزارهای خاص سیستمی هستند که زمانبندی پردازشها را به روشهای مختلفی مدیریت میکنند. وظیفه اصلی آنها انتخاب وظایف تحویلی به سیستم و تصمیمگیری در مورد این نکته است که کدام پردازش باید اجرا شود. ابزارهای زمانبندی به صورتهای زیر هستند:
- زمانبندی بلندمدت
- زمانبندی کوتاهمدت
- زمانبندی میانمدت
زمانبندی بلندمدت
این نوع زمانبندی که به نام زمانبندی job نیز شناخته میشود و در مورد این که کدام برنامه ارائه شده به سیستم باید مورد پردازش قرار گیرد تصمیمگیری میکند. این ابزار پردازشها را از صف مربوطه انتخاب کرده و آنها را برای اجرا در حافظه بارگیری میکند. پردازشها برای زمانبندی CPU وارد حافظه میشوند.
هدف اصلی زمانبندی job ارائه ترکیب متعادلی از وظایف مثلاً وظایف مرتبط با ورودی/خروجی و وظایف مرتبط با پردازنده است. این ابزار همچنین میزان چند برنامگی را کنترل میکند. اگر میزان چندبرنامگی پایدار باشد، در این صورت نرخ میانگین ایجاد پردازش باید متناسب با نرخ میانگین خروج پردازشها از سیستم باشد.
روی برخی سیستمها، ابزارهای زمانبندی بلندمدت ممکن است وجود نداشته باشد یا بسیار کوچک باشد. برای نمونه سیستمهای عامل اشتراک زمانی ابزارهای زمانبندی بلندمدت برای پردازشها ندارند. زمانی که یک پردازش حالت خود را از آغاز به آماده تبدیل میکند، این پردازش از ابزار زمانبندی بلندمدت بهره میگیرد.
زمانبندی کوتاهمدت
این ابزار به نام زمانبندی CPU نیز نامیده میشود. هدف اصلی این ابزار، افزایش عملکرد سیستم در هماهنگی با مجموعه معیارهای منتخب است. این ابزار مسئول تغییر حالت پردازش از آماده به حالت اجرایی است. ابزار زمانبندی CPU یک پردازش را از میان پردازشهایی که آماده اجرا هستند، انتخاب کرده و آن را به CPU تخصیص میدهد.
ابزارهای زمانبندی کوتاهمدت به نام dispatcher نیز شناخته میشوند، چون در مورد این که کدام پردازش باید در مرحله بعد اجرا شود تصمیمگیری میکنند. ابزارهای زمانبندی کوتاهمدت سریعتر از زمانبندی بلندمدت هستند.
زمانبندی میانمدت
ابزارهای زمانبندی میانمدت بخشی از swapping هستند. این ابزارها پردازشها را از حافظه خارج میکنند. این امر موجب کاهش چندبرنامگی میشود. زمانبندی میانمدت مسئول مدیریت جایگزینی پردازشهای پایان یافته است.
یک پردازش اجرایی در صورتی که تقاضای I/O داشته باشد معلق میشود. پردازش معلق شده نمیتواند حرکتی به سمت کامل شدن بردارد. در این شرایط، برای حذف پردازش از حافظه و ایجاد فضا برای پردازشهای دیگر، پردازش معلق شده باید به حافظه ثانویه منتقل شود. این فرایند به نام swapping نامیده میشود و به این پردازش نیز یک پردازش سواپ شده یا rolled out گفته میشود. فرایند سواپ کردن برای بهبود ترکیب پردازشها امری ضروری است.
مقایسه زمانبندیهای مختلف
ردیف | زمانبندی بلندمدت | زمانبندی کوتاهمدت | زمانبندی میانمدت |
---|---|---|---|
1 | زمانبندی job است | زمانبندی CPU است | زمانبندی سواپ کردن است |
2 | سرعت کمتر از زمانبندی کوتاهمدت است | سرعت سریعتر از دو مورد دیگر است | سرعت بین زمانبندی کوتاهمدت و بلندمدت است |
3 | میزان چند برنامگی را کنترل میکند | کنترل کمتری روی چندبرنامگی ارائه میکند | میزان چندبرنامگی را کاهش میدهد |
4 | در سیستمهای عامل اشتراک زمانی، وجود ندارد یا کمرنگ است | در سیستم عامل اشتراک زمانی، کمرنگ است | جزوی از سیستمهای عامل اشتراک زمانی است |
5 | پردازشها را از یک pool انتخاب میکند و آنها را در حافظه اجرایی بارگذاری میکند. | پردازشهایی که آماده اجرا هستند را انتخاب میکند | پردازشها را میتواند مجدداً وارد حافظه کرده و اجرای آنها را تداوم بخشد. |
سوئیچ زمینه (Context Switch)
سوئیچ زمینه سازوکاری است که حالت زمینه یک CPU در بلوک کنترل پردازش را ذخیرهسازی و بازیابی میکند به طوری که اجرای یک پردازش را میتوان از همان نقطه در مدتی بعد از سر گرفت. سویچر زمینه با استفاده از این تکنیک امکان استفاده چندین پردازش از یک CPU را ایجاد میکند. سویچ کردن زمینه جزئی ضروری از سیستمهای عامل چندوظیفگی است.
زمانی که ابزار زمانبندی CPU را از اجرای یک پردازش به اجرای پردازش دیگری سوئیچ میکند، حالت پردازش اجرایی حاضر در بلوک کنترل پردازش ذخیره میشود. سپس این حالت برای سوئیچ اجرای بعدی از PCB خودش بارگذاری میشود و از آن برای تعیین PC، رجیسترها و موارد غیره استفاده میشود. در این زمان پردازش دوم میتواند شروع به اجرا کند.
سوئیچهای زمینه به طور نسبی سنگین هستند، زیرا رجیسترها و حالت حافظه باید ذخیره و بازیابی شود. برای جلوگیری از هدر رفت زمان در هنگام سوئیچ کردن، برخی سیستمهای سختافزاری از دو یا چند رجیستر پردازنده بهره میگیرند. وقتی یک پردازش سوئیچ میشود، اطلاعات زیر برای کاربردهای بعدی ذخیره میشود:
شمارنده برنامه
- اطلاعات زمانبندی
- مقدار رجیستر پایه و محدودیت آن
- رجیستر مورد استفاده کنونی
- حالت تغییر یافته
- اطلاعات حالت I/O
- اطلاعات Accounting
اگر این مطلب برایتان مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای علوم کامپیوتر
- آموزش سیستم های عامل
- مجموعه آموزشهای مهندسی نرمافزار
- مجموعه آموزشهای نسخههای مختلف ویندوز
- آموزش آشنایی با سیستم عامل میکروتیک MikroTik
- انواع سیستم عامل — راهنمای جامع
==