الگوریتم زمان‌بندی LJF در سی شارپ (Longest Job First)

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

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

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

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

  • در این الگوریتم می‌تواند Starvation رخ دهد.
  • زمان اتمام فرآیندها نزدیک به یکدیگر است.
  • این روش مقدار Average time بالا است.

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

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

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

کد الگوریتم LJF در سی شارپ به صورت زیر است:

بیشتر بخوانید:  ک م م در سی شارپ (کوچکترین مضرب مشترک)

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

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

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

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

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

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

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

الگوریتم زمان‌بندی LJF در سی شارپ

    پسورد: www.codegate.ir

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

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