مقدمه
در یک سیستم عامل، معمولا تعداد زیادی فرآیند وجود دارد که برای استفاده از منابع سیستم (مانند CPU، حافظه، دستگاههای ورودی/خروجی) با یکدیگر رقابت میکنند. زمانبندی فرآیندها یکی از وظایف اصلی سیستم عامل است که تعیین میکند کدام فرآیند در چه زمانی و به چه مدتی از CPU استفاده کند. این موضوع تأثیر مستقیمی بر کارایی، پاسخگویی و عدالت سیستم عامل دارد.
اهداف یادگیری
- آشنایی با مفاهیم اساسی زمانبندی فرآیندها
- یادگیری انواع الگوریتمهای زمانبندی CPU
- توانایی مقایسه و ارزیابی الگوریتمهای مختلف
- درک تأثیر زمانبندی بر کارایی سیستم عامل
مفاهیم اساسی
- فرآیند (Process): یک برنامه در حال اجرا که شامل کد، داده و وضعیت فعلی آن است.
- زمانبند (Scheduler): ماژول سیستم عامل که مسئول انتخاب فرآیند بعدی برای اجرا است.
- صف آماده (Ready Queue): صفی از فرآیندهایی که در حافظه اصلی قرار دارند و آماده اجرا هستند.
- تعویض زمینه (Context Switch): عملیاتی که در آن CPU از اجرای یک فرآیند به فرآیند دیگر سوئیچ میکند.
انواع الگوریتمهای زمانبندی
الگوریتمهای زمانبندی را میتوان به دو دسته کلی تقسیم کرد:
-
الگوریتمهای غیرقابل انقطاع (Non-preemptive): در این الگوریتمها، پس از اینکه CPU به یک فرآیند اختصاص داده شد، آن فرآیند تا زمانی که به طور داوطلبانه CPU را رها نکند، به اجرای خود ادامه میدهد.
- اولین ورودی، اولین خروجی (FIFO): فرآیندهایی که زودتر وارد صف آماده شوند، زودتر اجرا میشوند.
- کوتاهترین زمان اجرا اول (SJF): فرآیندی که کوتاهترین زمان اجرا را دارد، اولویت اجرا دارد.
-
الگوریتمهای قابل انقطاع (Preemptive): در این الگوریتمها، سیستم عامل میتواند در هر زمانی CPU را از فرآیند در حال اجرا گرفته و به فرآیند دیگری اختصاص دهد.
- زمانبندی نوبتی (Round Robin): به هر فرآیند یک برش زمانی (time slice) اختصاص داده میشود و CPU به صورت نوبتی بین فرآیندها سوئیچ میکند.
- اولویتبندی (Priority Scheduling): به هر فرآیند یک اولویت اختصاص داده میشود و CPU به فرآیند با بالاترین اولویت اختصاص داده میشود.
معیارهای ارزیابی الگوریتمهای زمانبندی
برای مقایسه و ارزیابی الگوریتمهای زمانبندی، از معیارهای مختلفی استفاده میشود، از جمله:
- زمان پاسخ (Response Time): مدت زمانی که طول میکشد تا یک فرآیند پس از ورود به سیستم، برای اولین بار اجرا شود.
- زمان گردش (Turnaround Time): مدت زمانی که طول میکشد تا یک فرآیند از زمان ورود به سیستم تا زمان خروج از سیستم، به طور کامل اجرا شود.
- زمان انتظار (Waiting Time): مدت زمانی که یک فرآیند در صف آماده منتظر اختصاص CPU است.
- بهرهوری CPU (CPU Utilization): درصد زمانی که CPU در حال اجرای فرآیندها است.
نکات کاربردی و مشاورهای
- درک عمیق مفاهیم اساسی زمانبندی فرآیندها برای پاسخگویی به سوالات مفهومی در آزمونها ضروری است.
- به جای حفظ کردن الگوریتمها، سعی کنید منطق و نحوه عملکرد هر الگوریتم را درک کنید.
- با حل مثالهای مختلف، توانایی خود را در مقایسه و ارزیابی الگوریتمهای زمانبندی افزایش دهید.
منابع
- Scheduling (computing) - Wikipedia
- Silberschatz, A., Galvin, P. B., & Gagne, G. (2018). Operating system concepts (10th ed.). Wiley.