রাউন্ড রবিন শিডিউলিং


কাঠিন্য মাত্রা মধ্যম
প্রায়শই জিজ্ঞাসা করা হয় মর্দানী স্ত্রীলোক ফেসবুক গুগল মাইক্রোসফট
অ্যালগরিদম অপারেটিং সিস্টেম

রাউন্ড রবিনের শিডিউলিং এফসিএফএসের সাথে অনেকটা মিল। আরআর এবং এফসিএফএসের সময়সূচীর মধ্যে পার্থক্য কেবল হ'ল, আরআর প্রচলিত পূর্বপরিকল্পনা যদিও এফসিএফএস হ'ল প্রাক-পূর্বসূচি নির্ধারিত। প্রতিটি প্রক্রিয়া বরাদ্দ করা হয় সিপিইউ একক সময় স্লাইস জন্য প্রস্তুত সারিতে। এখানে, ক প্রস্তুত সারিতে একটি বৃত্তাকার সারির অনুরূপ। প্রতিবার স্লাইস 10 থেকে 100 এমএসের মধ্যে থাকে। এই সত্যের কারণে, এটিকে টাইম স্লাইস শিডিং বলে।

আরআর নির্ধারনের পদ্ধতিটি নিম্নরূপ:

  1. সারিটির শেষে একটি নতুন প্রক্রিয়া যুক্ত করা হয়েছে।
  2. The Olymp Trade প্লার্টফর্মে ৩ টি উপায়ে প্রবেশ করা যায়। প্রথমত রয়েছে ওয়েব ভার্শন যাতে আপনি প্রধান ওয়েবসাইটের মাধ্যমে প্রবেশ করতে পারবেন। দ্বিতয়ত রয়েছে, উইন্ডোজ এবং ম্যাক উভয়ের জন্যেই ডেস্কটপ অ্যাপলিকেশন। এই অ্যাপটিতে রয়েছে অতিরিক্ত কিছু ফিচার যা আপনি ওয়েব ভার্শনে পাবেন না। এরপরে রয়েছে Olymp Trade এর এন্ড্রয়েড এবং অ্যাপল মোবাইল অ্যাপ। প্রক্রিয়া কাতারের সামনে থেকে মৃত্যুদন্ড কার্যকর করা হয়।
  3. টাইমারটি এক-বারের স্লাইস পরে বাধা হয়ে থাকে।
  4. এক সময় স্লাইস করার পরে, প্রক্রিয়াটি হয় সম্পূর্ণ হয় বা সারিটির শেষে চলে যায়

সুতরাং নিম্নলিখিত হিসাবে দুটি মামলা হতে পারে:

  1. প্রথম ক্ষেত্রে, প্রসেসের সিপিইউ বার্সার সময়টি একক বারের চেয়ে কম হয়, তারপরে প্রক্রিয়াটি সম্পূর্ণভাবে কার্যকর হবে এবং সিপিইউ প্রকাশ করবে এবং পরবর্তী প্রক্রিয়াটি কার্যকর হবে
  2. দ্বিতীয় ক্ষেত্রে, একটি বিঘ্ন একটি একক সময় স্লাইসে ঘটে। কনটেক্সট স্যুইচের সাহায্যে, সিপিইউটি পরবর্তী প্রক্রিয়াতে বরাদ্দ করা হবে এবং এই প্রক্রিয়াটি সারির লেজের দিকে সরানো হবে তারপরে পরবর্তী প্রক্রিয়াটি কার্যকর করা হবে।

উদাহরণ

রাউন্ড রবিন শিডিউলিং

সময় স্লাইসের আকার 4 এমএস হতে দিন, পি 1 প্রথম 4 এমএসের জন্য সিপিইউ নেয়। এর পরে, একটি বাধা ঘটে এবং পি 1 প্রস্তুত সারির লেজের মধ্যে স্থাপন করা হয়। পি 2 4 এমএসের জন্য মৃত্যুদন্ড কার্যকর করা হয় তবে এটি প্রস্তুত সারিবদ্ধের লেজে রাখা হয়। এর পরে পি 3 4 এমএসের জন্য নির্বাহ করা হয়, তারপরে এটি সম্পূর্ণ হয়ে যায় এবং কোনও বাধা ছাড়াই সিপিইউ প্রকাশ করে। আবার পি 1 এর পালা 4 এস এম এর জন্য আসে। এই প্রক্রিয়া অব্যাহত।

নিম্নলিখিত প্রক্রিয়াটির জন্য গ্যান্ট চার্ট এর মতো হবে:

রাউন্ড রবিন শিডিউলিং

প্রক্রিয়াটির জন্য অপেক্ষা করার সময় P1 = 0 + 8 + 1 = 9 এস

এখন, প্রক্রিয়াটির জন্য অপেক্ষা করার সময় পি 2 = 4 + 8 = 12 মিমি

প্রক্রিয়া পি 3 = 8 এমএসের জন্য অপেক্ষা করার সময়

মোট অপেক্ষার সময় = 29 মিমি

গড় অপেক্ষার সময় = 29/3 = 9.67 মিমি

আরআর সিডিউলিংয়ের কার্যকারিতা সময় স্লাইসের আকারের উপর নির্ভর করে। যদি সময় স্লাইসটি খুব বেশি হয় তবে আরআরটি ঠিক এফসিএফএসের মতো। যদি সময় স্লাইস খুব ছোট হয়, তবে আরআর হ'ল প্রক্রিয়া ভাগ করে নেওয়ার মতো, কোনও প্রক্রিয়া অপেক্ষা করতে অনেক সময় লাগবে।

আরআর নির্ধারনের সুবিধা of

  1. এটি সময় ভাগ করে নেওয়ার সমর্থন করে।
  2. আরআর কোয়ান্টাম ব্যবহার করে।
  3. এটি একাধিক প্রক্রিয়া পরিচালনা করতে পারে।
  4. যদি প্রক্রিয়া ফাটার সময় কোয়ান্টামের চেয়ে কম হয় তবে প্রক্রিয়াটি প্রথম কোয়ান্টামে কার্যকর হয়।

আরআর নির্ধারনের অসুবিধাগুলি

  1. প্রসারণের সময়টি কোয়ান্টামের চেয়ে বড় হলে প্রক্রিয়া সম্পাদন ধীর হয়।
  2. কোয়ান্টাম বড় হলে এটি এফসিএফএস হিসাবে কাজ করে।
  3. বৃহত প্রক্রিয়াটি ছোট প্রক্রিয়াটি শেষ হওয়ার জন্য অপেক্ষা করতে হবে।

বাস্তবায়ন

রাউন্ড রবিন সময়সূচী জন্য সি প্রোগ্রাম

#include<stdio.h>
#include<conio.h>
int main()
{
    int n,i,qt,count=0,temp,sq=0,bt[10],wt[10],tat[10],rem_bt[10];
    //n signifies number of process
    //i is for using loops
    //qt denotes Quantum Time
    //count denotes when one process is completed
    //temp and sq are temproray variables
    //bt[10] denotes burst time
    //wt[10] denotes waiting time
    //tat[10] denotes turnaround time
    //rem_bt[10] denotes remaining burst time
    float awt=0,atat=0;
    //awt represents average waiting time
    //atat represents average turnaround time
    printf("Enter number of process (upto 10) = ");
    scanf("%d",&n);
    printf("Enter burst time of process\n");
    for (i=0;i<n;i++)
    {
        printf("P%d = ",i+1);
        scanf("%d",&bt[i]);
        rem_bt[i]=bt[i];
    }
    printf("Enter quantum time ");
    scanf("%d",&qt);
    while(1)
    {
        for (i=0,count=0;i<n;i++)
        {
            temp=qt;
            if(rem_bt[i]==0)
            {
                count++;
                continue;
            }
            if(rem_bt[i]>qt)//changing the value of remaining burst time
                rem_bt[i]=rem_bt[i]-qt;
            else
                if(rem_bt[i]>=0)//if process is exhausted then setting remaining burst time tozero
                {
                    temp=rem_bt[i];
                    rem_bt[i]=0;
                }
                sq=sq+temp; //calculating turnaround time
                tat[i]=sq;
        }
        if(n==count)//breaking the loop when all process are exhausted
            break;
    }
    printf("\nProcess\tBurst Time\tTurnaround Time\tWaiting Time\n");
    for(i=0;i<n;i++)
    {
        wt[i]=tat[i]-bt[i];
        awt=awt+wt[i];
        atat=atat+tat[i];
        printf("\n%d\t%d\t\t%d\t\t%d",i+1,bt[i],tat[i],wt[i]);
    }
    awt=awt/n;
    atat=atat/n;
    printf("\nAverage waiting Time = %f\n",awt);
    printf("Average turnaround time = %f",atat);
    return 0;
}
Enter number of process (upto 10) = 3
Enter burst time of process
P1 = 21
P2 = 5
P3 = 4
Enter quantum time 4
Process	Burst Time	Turnaround Time	Waiting Time

1	20		29		9
2	5		17		12
3	4		12		8
Average waiting Time = 9.666667
Average turnaround time = 19.333334

রাউন্ড রবিন শিডিউলিংয়ের জন্য জাভা প্রোগ্রাম

import java.util.Scanner;

class main
{
  public static void main(String args[])
  {
    int n,i,qt,count=0,temp,sq=0,bt[],wt[],tat[],rem_bt[];
    float awt=0,atat=0;

    bt = new int[10];
    wt = new int[10];
    tat = new int[10];
    rem_bt = new int[10];

    Scanner s=new Scanner(System.in);

    System.out.print("Enter number of process (upto 10) = ");
    n = s.nextInt();

    System.out.print("Enter burst time of process\n");
    for (i=0;i<n;i++)
    {
      System.out.print("P"+i+" = ");
      bt[i] = s.nextInt();
      rem_bt[i] = bt[i];
    }
    System.out.print("Enter quantum time = ");
    qt = s.nextInt();

    while(true)
    {
      for (i=0,count=0;i<n;i++)
      {
        temp = qt;

        if(rem_bt[i] == 0)
        {
          count++;
          continue;
        }

        if(rem_bt[i]>qt)
          rem_bt[i]= rem_bt[i] - qt;
        else
          if(rem_bt[i]>=0)
          {
            temp = rem_bt[i];
            rem_bt[i] = 0;
          }
          sq = sq + temp;
          tat[i] = sq;
      }
      if(n == count)
      break;
    }
    System.out.print("\nProcess\tBurst Time\tTurnaround Time\tWaiting Time\n");
    for(i=0;i<n;i++)
        {
            wt[i]=tat[i]-bt[i];
            awt=awt+wt[i];
            atat=atat+tat[i];
            System.out.print("\n  "+(i+1)+"\t  "+bt[i]+"\t\t   "+tat[i]+"\t\t   "+wt[i]);
        }
        awt=awt/n;
        atat=atat/n;
        System.out.println("\nAverage waiting Time = "+awt);
        System.out.println("Average turnaround time = "+atat);
  }
}
Enter number of process (upto 10) = 3 
Enter burst time of process 
P1 = 29 
P2 = 51 
P3 = 42 
Enter quantum time 6
Process	Burst Time	Turnaround Time	Waiting Time

  1	  29		   77		   48
  2	  51		   122		   71
  3	  42		   113		   71
Average waiting Time = 63.333332
Average turnaround time = 104.0

জটিলতা বিশ্লেষণ

সময় জটিলতা

ও (এস) যেখানে এস সমস্ত ইনপুট প্রক্রিয়াগুলির ফেটে যাওয়া সময়ের যোগফলকে বোঝায়।

স্পেস জটিলতা ity

ও (এস) যেখানে এস সমস্ত ইনপুট প্রক্রিয়াগুলির ফেটে যাওয়া সময়ের যোগফলকে বোঝায়।

উল্লেখ