ክብ ሮቢን መርሐግብር ማውጣት


የችግር ደረጃ መካከለኛ
ውስጥ በተደጋጋሚ ተጠየቀ አማዞን ፌስቡክ google የ Microsoft
አልጎሪዝም ስርዓተ ክወናዎች

የክብ ሮቢን መርሃግብር ከ FCFS ጋር በጣም ተመሳሳይ ነው። በ RR እና በ FCFS መርሐግብር መካከል ያለው ብቸኛው ልዩነት ፣ አርአር ቅድመ-ዕዳ ነው እቅድ ማውጣት ኤፍ.ኤፍ.ኤፍ.ኤስ. ግን ያለቅድመ ዝግጅት መርሃግብር ነው ፡፡ እያንዳንዱ ሂደት ይመደባል ሲፒዩ ለአንድ ጊዜ ቁራጭ በተዘጋጀው ወረፋ ውስጥ ፡፡ እዚህ ፣ ሀ ዝግጁ ወረፋ ከክብ ወረፋ ጋር ተመሳሳይ ነው። በተቆራረጠ ቁጥር ከ 10 እስከ 100 ms ነው ፡፡ በዚህ እውነታ ምክንያት የጊዜ ቁርጥራጭ የጊዜ ሰሌዳ ይባላል ፡፡

የ RR መርሃግብር አሰራር ሂደት እንደሚከተለው ነው-

  1. አዲስ ሂደት በወረፋው መጨረሻ ላይ ታክሏል።
  2. ሂደት ከወረፋው ፊት ለፊት ለማስፈፀም ተመርጧል ፡፡
  3. የሰዓት ቆጣሪው ከአንድ ጊዜ ቁራጭ በኋላ ለማቋረጥ ተዘጋጅቷል።
  4. ከአንድ ጊዜ በኋላ ከተቆረጠ በኋላ ሂደቱ ተጠናቅቋል ወይም ወደ ወረፋው መጨረሻ ተዛወረ

ስለዚህ እንደሚከተለው ሁለት ጉዳዮች ሊኖሩ ይችላሉ-

  1. በመጀመሪያው ሁኔታ የሂደቱ ሲፒዩ ፍንዳታ ጊዜ ከአንድ ጊዜ ቁራጭ ያነሰ ነው ፣ ከዚያ ሂደቱ ሙሉ በሙሉ ይፈጸማል እና ሲፒዩ ይለቀቃል እና ቀጣዩ ሂደት ይከናወናል
  2. በሁለተኛው ጉዳይ ላይ አንድ መቆራረጥ በአንድ ጊዜ ቁርጥራጭ ይከሰታል ፡፡ በአውድ መቀየሪያው እገዛ ሲፒዩ ከዚያ ለሚቀጥለው ሂደት ይመደባል እናም ይህ ሂደት ወደ ወረፋው ጅራት ይዛወራል ከዚያ የሚቀጥለው ሂደት ይከናወናል።

ለምሳሌ

ክብ ሮቢን መርሐግብር ማውጣት

የጊዜ ክፍፍሉ መጠን 4ms ይሁን ፣ P1 ለመጀመሪያዎቹ 4ms ሲፒዩ ይወስዳል። ከዚያ በኋላ መቋረጥ ይከሰታል እናም P1 በተዘጋጀው ወረፋ ጅራት ውስጥ ይቀመጣል ፡፡ P2 ለ 4ms ተገድሏል ከዚያ ወደ ተዘጋጀው ወረፋ ጅራት ውስጥ ይገባል ፡፡ ከዚያ በኋላ P3 ለ 4ms ከተገደለ በኋላ ተጠናቅቋል እና ሲፒዩ ያለማቋረጥ ይለቀቃል ፡፡ እንደገና የ P1 መዞሪያ ለ 4ms ይመጣል ፡፡ ይህ ሂደት ቀጥሏል ፡፡

ለሚቀጥለው ሂደት የጋንት ገበታ እንደዚህ ይሆናል-

ክብ ሮቢን መርሐግብር ማውጣት

ለሂደት P1 = 0 + 8 + 1 = 9ms የመጠበቅ ጊዜ

አሁን ለሂደት P2 = 4 + 8 = 12ms የመጠበቅ ጊዜ

ለሂደቱ P3 = 8ms የመጠበቅ ጊዜ

ጠቅላላ የጥበቃ ጊዜ = 29ms

አማካይ የጥበቃ ጊዜ = 29/3 = 9.67ms

የ RR መርሐግብር አፈፃፀም በጊዜ ቁርጥራጭ መጠን ላይ የተመሠረተ ነው። የጊዜ ቁራጭ በጣም ትልቅ ከሆነ አር አር ልክ እንደ FCFS ነው ፡፡ የጊዜ ቁራጭ በጣም ትንሽ ከሆነ RR ልክ እንደ ሂደት መጋራት ነው ማለትም ፣ አንድ ሂደት ለመጠበቅ ብዙ ጊዜ ይወስዳል።

የ RR መርሐግብር ጥቅሞች

  1. ጊዜን መጋራት ይደግፋል ፡፡
  2. RR ኳንተም ይጠቀማል.
  3. በርካታ ሂደቶችን ማስተናገድ ይችላል ፡፡
  4. የሂደቱ ፍንዳታ ጊዜ ከኳንተም ያነሰ ከሆነ ይህ ሂደት በመጀመሪያ ኳንተም ውስጥ ይሠራል ፡፡

የ RR መርሃግብር ጉዳቶች

  1. የፍንዳታ ጊዜው ከኳንተም የበለጠ ከሆነ የሂደቱ አፈፃፀም የበለጠ ቀርፋፋ ነው።
  2. ኳንተም ትልቅ ከሆነ እንደ FCFS ይሠራል ፡፡
  3. ትልቁ ሂደት አነስተኛውን ሂደት እስኪያበቃ ድረስ መጠበቅ አለበት ፡፡

አፈጻጸም

የ C ፕሮግራም ለ Robin Robin መርሐግብር

#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

ውስብስብነት ትንተና

የጊዜ ውስብስብነት

ኦ (ኤስ) ኤስ የሁሉም የግብዓት ሂደቶች ፍንዳታ ጊዜ ድምርን የሚያመለክት።

የቦታ ውስብስብነት

ኦ (ኤስ) ኤስ የሁሉም የግብዓት ሂደቶች ፍንዳታ ጊዜ ድምርን የሚያመለክት።

ማጣቀሻ