الگوریتم زمان‌بندی SJF در جاوا (Short Job First)

این جلسه ما را با ادامه آموزش الگوریتم‌های زمان‌بندی همراهی کنید. در این قسمت به آموزش الگوریتم زمان‌بندی SJF در جاوا می‌پردازیم. ابتدا این الگوریتم را معرفی و سپس به پیاده‌سازی آن خواهیم پرداخت. پیشنهاد می‌کنیم قبل از مطالعه این جلسه، آموزش‌های زیر را مطالعه کنید:

  1. الگوریتم Round Robin در جاوا
  2. الگوریتم FCFS در جاوا
  3. متد در جاوا
  4. Arraylist در جاوا
  5. شی گرایی در جاوا
  6. مرتب سازی حبابی در جاوا
  7. Constructor در جاوا
  8. حلقه for در جاوا
  9. حلقه while در جاوا
  10. If در جاوا

الگوریتم زمان‌بندی SJF

Shortest Job First یا به اختصار SJF یک الگوریتم زمان‌بندی در سیستم عامل است. در این الگوریتم، از بین فرایندهای منتظر در صف اجرا، فرایندی انتخاب می‌شود که به کوتاه‌ترین زمان برای اجرا شدن(burst Time) نیاز داشته باشد. این جا به چند ویژگی SJF اشاره می‌کنیم:

  • SJF پایین ترین میانگین زمان انتظار (average waiting Time) در بین الگوریتم‌های زمان‌بندی دارد.
  • SJF یک الگوریتم حریصانه است.
  • در این الگوریتم می‌تواند Starvation رخ دهد.

پیاده‌سازی الگوریتم زمان‌بندی SJF در جاوا

برای پیاده سازی الگوریتم زمان‌بندی SJF در جاوا مراحل زیر را انجام می‌دهیم:

  1. فرآیند‌های خود را تعریف می‌کنیم.
  2. بر اساس arrival Time ، فرآیند‌ها را وارد صف انتظار می‌کنیم.
  3. فرآیند‌های درون صف انتظار را بر اساس Burst Time مرتب می‌کنیم.
  4. به کوچکترین فرآیند CPU اختصاص می‌یابد.
  5. مراحل 2 تا 5 را تا زمان اتمام فرآیند‌ها ادامه می‌دهیم.

کد الگوریتم SJF در جاوا به صورت زیر است:

بیشتر بخوانید:  تبدیل اعداد هگزادسیمال به دهدهی در جاوا
بیشتر بخوانید:  abstract در جاوا (java abstraction)

ما برای پیاده‌سازی الگوریتم SJF از دو کلاس زیر استفاده کردیم:

  • Process: این کلاس برای تعریف یک فرآیند استفاده می‌شود و مواردی همچون Burst Time، arrival Time و waiting time و …. در آن تعریف شده است.
  • SJF: در این کلاس الگوریتم SJF پیاده سازی شده است.

متدهای کد فوق شامل موارد زیر است:

  • CheckArrivalTime: این متد زمان ورود فرآیندها را به صف انتظار بررسی می‌کند.
  • Sort: این متد صف انتظار ما را با روش مرتب سازی حبابی، مرتب می‌کند.
  • CalWaitingTime: محاسبه waiting time فرآیندها در این متد انجام می‌شود.
  • SJF: با کمک متدهای موارد بالا، الگوریتم SJF در این متد به اجرا در می‌آید.
  • Display: جهت نمایش فرآیند ها در خروجی از display استفاده می‌شود.

متغیرهای کد فوق:

  •  AllProcess یا p یا process: تمامی فرآیندها در Arraylist به نام AllProcess (p یا process) ذخیره می‌شوند.
  • waitingProcess: منظور صف انتظار ما است.
  • Bt: منظور burst time فرآیند است.
  • Art: منظور arrival Time است.
  • Tat: منظور turn around time است.

خروجی کد فوق به صورت زیر است:

الگوریتم زمان‌بندی SJF در جاوا

پسورد: www.codegate.ir

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *