دو رویکرد اصلی زمانبندی که امروز تعیینکنندهاند
در سیستمعاملها دو فلسفهٔ زمانبندی رایج وجود دارد: مدل پیشگیرانه مبتنی بر اولویت که در خانوادهٔ Windows NT ریشه دارد و مدل عدالتمحور پویا که یکی از مشهورترین پیادهسازیهای آن در لینوکس با Completely Fair Scheduler (CFS) دیده میشود. در ادامه مکانیکهای کلیدی هر رویکرد، تفاوتهای عملی و سناریوهایی که هر کدام مزیت دارند، تشریح شده است.
پیشزمینهٔ تاریخی کوتاه
نسخ اولیهٔ یونیکس و سیستمهایی مانند VAX/VMS از اسلایسهای زمانی ثابت و صفهای چندگانهٔ اولویت استفاده میکردند: هر وظیفه یک بازهٔ زمانی مشخص میگرفت و پس از اتمام اسلایس، زمانبند به فرایند بعدی میرفت. ویندوز همچنان روی صفهای اولویت و تقویتهای دینامیک (priority boosting) برای حفظ پاسخپذیری کار میکند. لینوکس از معماری O(1) به سمت مدلهای مبتنی بر vruntime حرکت کرد و با معرفی CFS در هستهٔ 2.6.23، سیاست عدالتمحور را بهعنوان کلاس پیشفرض برای کارهای عادی پذیرفت.
واژگان کلیدی
- قابلاجرا در مقابل مسدود: قابلاجرا (runnable) آمادهٔ استفاده از CPU است؛ مسدود (blocked) منتظر I/O یا قفل است.
- وابسته به پردازنده در مقابل وابسته به I/O: برنامههای پردازشمحور بیشتر زمان را روی CPU مصرف میکنند؛ برنامههای تعاملی معمولاً I/O-محورند.
- رشتهها در مقابل فرایندها: در لینوکس زمانبندی در سطح رشته انجام میشود؛ هر رشته میتواند مستقل زمانبندی شود.
CFS لینوکس: عدالت مبتنی بر vruntime
مکانیزمهای کلیدی
CFS برای پیگیری سهم هر رشته از CPU از مقدار عددی vruntime استفاده میکند: هرچه vruntime یک رشته کمتر باشد، آن رشته زمان CPU کمتری دریافت کرده و اولویت اجرای بعدیاش بیشتر میشود. وظایف قابلاجرا در یک درخت قرمز-سیاه نگهداری میشوند و Scheduler گرهِ با کمترین vruntime را انتخاب میکند.
به جای تخصیص اسلایس ثابت، CFS یک target latency تعریف میکند (حدود 20 میلیثانیه بهصورت پیشفرض) و اسلایس مؤثر هر کار را بهصورت target_latency / N محاسبه میکند که N تعداد کارهای قابلاجراست. با افزایش رقابت، اسلایسها کوچکتر و با کاهش رقابت بزرگتر میشوند که تجربهٔ چندوظیفگی منصفانهتری فراهم میآورد.
مزایا
- توزیع منصفانهٔ زمان CPU بین نخها
- قابلیت وزندهی بر اساس اولویت نسبی برای کنترل سهم منابع
- پیشبینی بهتر در بارهای متشکل از چندین کار همزمان
محدودیتها و نکات عملی
- برای تحقق تأخیر سخت یا بلادرنگ طراحی نشده؛ در این موارد باید از کلاسهای بلادرنگ مانند SCHED_FIFO و SCHED_RR یا مکانیزمهای خاص استفاده شود.
- در بارهای بسیار تعاملمحور بدون تنظیم مناسب I/O و سیاستهای تعاملی ممکن است پاسخپذیری مطلوب حاصل نشود.
زمانبند ویندوز: اولویت و حفظ پاسخپذیری
مکانیزمهای کلیدی
زمانبند ویندوز بر پایهٔ صفهای اولویت طراحی شده و از تقویت دینامیک اولویت برای حفظ پاسخپذیری استفاده میکند. هر رشته یک سطح اولویت دارد و سیستم میتواند بهطور پویا اولویت را افزایش دهد، مثلاً زمانی که رشتهای پس از یک انتظار کوتاه برای I/O دوباره قابلاجرا میشود.
مزایا
- پاسخپذیری بالاتر در محیطهای دسکتاپ و تعاملی
- خروجی حسی بهتر در تعاملهای کاربری (تأخیر کمتر محسوس)
- مکانیزمهای بهینهشده برای تقویت اولویت فرآیندهای UI
محدودیتها
- در تلاش برای حفظ پاسخپذیری ممکن است سهم پردازنده از وظایف سنگین کاسته شود.
- در سیستمهای با بار سنگین تنوع اولویتها میتواند مدیریت را پیچیده و رفتار را تا حدی غیرقابلپیشبینی کند.
مقایسهٔ عملی: چه زمانی کدام بهتر است؟
- سرورهای محاسباتی و دستهای: CFS (یا پالیسیهایی مثل SCHED_BATCH) برای توزیع مناسب و افزایش کلیِ throughput مناسبتر است.
- دسکتاپ و تعامل با کاربر: سیاستهای مبتنی بر اولویت ویندوز برای حفظ پاسخپذیری لحظهای برتری دارند؛ لینوکس با تنظیم I/O و سیاستهای تعاملی میتواند به نزدیک شدن کمک کند.
- سیستمهای بلادرنگ: هر دو پلتفرم کلاسها یا سیاستهای ویژه برای کاربردهای بلادرنگ دارند و انتخاب باید بر اساس الزامات تأخیر و تضمین زمانبندی انجام شود.
راهنمای عملی برای توسعهدهندگان و اپراتورها
توصیهها:
- برای برنامهنویسان لینوکس: درک vruntime و اثر I/O بر نوبتدهی کمک میکند تا برنامههای تعاملی و محاسباتی را بهتر بهینه کنید؛ در صورت نیاز از کلاسهای بلادرنگ یا تغییر وزنها استفاده کنید.
- برای مدیران سیستم: انتخاب بین لینوکس و ویندوز باید براساس نوع بار کاری صورت گیرد؛ اگر کنترل دقیق سهم CPU و عدالت مهم است، لینوکس با CFS گزینهٔ قدرتمندی است؛ اگر اولویت اصلی تأخیر کاربر نهایی است، سیاستهای ویندوز مناسبترند.
- هرگز تنظیمهای پیشفرض را بدون آزمایش روی بار واقعی بهشکل عمومی اعمال نکنید؛ پروفایلگیری و telemetry میتواند تصمیمگیری را دقیقتر کند.
نگاه رو به جلو
با افزایش همزمانی بارها، هستههای چندپردازشی و شتابدهندههای اختصاصی، نیاز به زمانبندیهای ترکیبی که عدالت و پاسخپذیری را همزمان تأمین کنند، بیشتر میشود. آینده احتمالاً ترکیبی از سیاستها، تنظیمات دقیقتر اولویتها و استفادهٔ هوشمند از دادههای telemetry برای تخصیص منابع خواهد بود.




