Ҷадвалбандии мудаввар Робин


Сатҳи душворӣ миёна
Аксар вақт пурсида мешавад Amazon Facebook Google Microsoft
Алгоритм системаҳои оператсионӣ

Ҷадвали Робин мудаввар ба FCFS хеле монанд аст. Ягона фарқияти банақшагирии RR ва FCFS дар он аст, ки RR афзалиятнок аст ҷадвалбандӣ дар ҳоле ки FCFS банақшагирии ғайриманқул аст. Ҳар як раванд ба он тақсим карда мешавад ВПМ - Воҳиди Пардозиши Марказӣ дар навбати омода барои як буридаи яквақта. Дар ин ҷо, а навбати омода ба навбати даврӣ монанд аст. Ҳар дафъа буриш аз 10 то 100 мс аст. Аз ин сабаб, онро банақшагирии буридаи вақт меноманд.

Тартиби банақшагирии RR чунин аст:

  1. Раванди нав ба охири навбат илова карда мешавад.
  2. Дар раванди барои иҷро аз пеши саф интихоб карда мешавад.
  3. Вақтсанҷ барои қатъ кардани пас аз буридаи яквақтӣ таъин шудааст.
  4. Пас аз буридани яквақта, раванд ё ба итмом мерасад ё ба охири навбат ҳаракат мекунад

Пас, мумкин аст ду ҳолат чунин бошад:

  1. Дар ҳолати аввал, вақти таркиши протсессори CPU аз буридаи яквақта камтар аст, пас ин раванд комилан иҷро мешавад ва CPU-ро озод мекунад ва раванди оянда иҷро мешавад
  2. Дар ҳолати дуюм, қатъкунӣ дар як буридаи ягона ба амал меояд. Пас аз он, бо ёрии гузариши контекстӣ, CPU ба раванди оянда тақсим карда мешавад ва ин раванд ба думи навбати интиқол дода мешавад Пас раванди оянда иҷро карда мешавад.

мисол

Ҷадвалбандии мудаввар Робин

Бигзор андозаи буридаи вақт 4ms бошад, P1 CPU-ро барои 4ms аввал мегирад. Пас аз ин, халал ба амал меояд ва P1 ба думи навбати омода гузошта мешавад. P2 барои 4ms иҷро карда мешавад ва пас аз он ба думи навбати омода гузошта мешавад. Пас аз он, P3 барои 4ms иҷро карда мешавад, пас он ба анҷом мерасад ва CPU-ро бидуни танаффус озод мекунад. Боз гардиши P1 барои 4ms меояд. Ин раванд идома дорад.

Диаграммаи Гант барои раванди зерин чунин хоҳад буд:

Ҷадвалбандии мудаввар Робин

Вақти интизорӣ барои раванди P1 = 0 + 8 + 1 = 9ms

Ҳоло, вақти интизорӣ барои раванди P2 = 4 + 8 = 12ms

Вақти интизории раванди P3 = 8ms

Вақти интизорӣ = 29 мил

Вақти миёнаи интизорӣ = 29/3 = 9.67ms

Иҷрои банақшагирии RR аз андозаи буридаи вақт вобаста аст. Агар буридаи вақт хеле калон бошад, пас RR ба монанди FCFS аст. Агар буридаи вақт хеле хурд бошад, пас RR монанди мубодилаи раванд аст, яъне раванд интизор шудан вақти зиёдро талаб мекунад.

Афзалиятҳои банақшагирии RR

  1. Он тақсимоти вақтро дастгирӣ мекунад.
  2. RR квантро истифода мебарад.
  3. Он метавонад якчанд равандҳоро идора кунад.
  4. Агар вақти даридани раванд нисбат ба квант хурдтар бошад, пас раванд дар кванти якум иҷро мешавад.

Нуқсонҳои банақшагирии RR

  1. Агар иҷрои раванд аз квант калонтар бошад, иҷрои раванд сусттар мешавад.
  2. Агар квант калон бошад, он ҳамчун FCFS кор мекунад.
  3. Раванди калон бояд интизор шудани раванди хурдро интизор шавад.

татбиќи

Барномаи C барои банақшагирии мудаввар Робин

#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

Барномаи Java барои банақшагирии мудаввар Робин

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

Таҳлили мураккабӣ

Мураккабии вақт

О (С) ки дар он S ҷамъи вақти таркиши тамоми равандҳои воридшударо нишон медиҳад.

Мураккабии фазо

О (С) ки дар он S ҷамъи вақти таркиши тамоми равандҳои воридшударо нишон медиҳад.

ишора