PROGRAM TO UNDERSTAND ROUND ROBIN SCHEDULING ALGORITHM

 /*

 * Round Robin Scheduling Program in C

 */

 

#include<stdio.h>

 

int main()

{

    //Input no of processed

    int  n;

    printf("Enter Total Number of Processes:");

    scanf("%d", &n);

    int wait_time = 0, ta_time = 0, arr_time[n], burst_time[n], temp_burst_time[n];

    int x = n;

 

    //Input details of processes

    for(int i = 0; i < n; i++)

    {

        printf("Enter Details of Process %d \n", i + 1);

        printf("Arrival Time:  ");

        scanf("%d", &arr_time[i]);

        printf("Burst Time:   ");

        scanf("%d", &burst_time[i]);

        temp_burst_time[i] = burst_time[i];

    }

 

    //Input time slot

    int time_slot;

    printf("Enter Time Slot:");

    scanf("%d", &time_slot);

 

    //Total indicates total time

    //counter indicates which process is executed

    int total = 0,  counter = 0,i;

    printf("Process ID       Burst Time       Turnaround Time      Waiting Time\n");

    for(total=0, i = 0; x!=0; )  

    {  

        // define the conditions

        if(temp_burst_time[i] <= time_slot && temp_burst_time[i] > 0)    

        {  

            total = total + temp_burst_time[i];  

            temp_burst_time[i] = 0;  

            counter=1;  

        }     

        else if(temp_burst_time[i] > 0)  

        {  

            temp_burst_time[i] = temp_burst_time[i] - time_slot;  

            total  += time_slot;    

        }  

        if(temp_burst_time[i]==0 && counter==1)  

        {  

            x--; //decrement the process no.  

            printf("\nProcess No %d  \t\t %d\t\t\t\t %d\t\t\t %d", i+1, burst_time[i],

                   total-arr_time[i], total-arr_time[i]-burst_time[i]);  

            wait_time = wait_time+total-arr_time[i]-burst_time[i];  

            ta_time += total -arr_time[i];  

            counter =0;     

        }  

        if(i==n-1)  

        {  

            i=0;  

        }  

        else if(arr_time[i+1]<=total)  

        {  

            i++;  

        }  

        else  

        {  

            i=0;  

        }  

    }  

    float average_wait_time = wait_time * 1.0 / n;

    float average_turnaround_time = ta_time * 1.0 / n;

    printf("\nAverage Waiting Time:%f", average_wait_time);

    printf("\nAvg Turnaround Time:%f", average_turnaround_time);

    return 0;

}


Output:

Enter Total Number of Processes:3

Enter Details of Process 1 

Arrival Time:  0

Burst Time:   10

Enter Details of Process 2 

Arrival Time:  1

Burst Time:   8

Enter Details of Process 3 

Arrival Time:  2

Burst Time:   7

Enter Time Slot:5

 

Process ID       Burst Time       Turnaround Time      Waiting Time

 

Process No 1       10         20          10

Process No 2       8         22     14

Process No 3       7         23     16

 

Average Waiting Time: 13.333333

Avg Turnaround Time: 21.666666

Comments

Popular posts from this blog

JAVA RECORD PROGRAM FOR AREA AND PERIMETER OF RECTANGLE

JAVA RECORD PROGRAM FOR FIBBONACCI SERIES

JAVA RECORD PROGRAM FOR MATRIX MULTIPLICATION