diff --git a/FCFS Scheduling Algorithm.c b/FCFS Scheduling Algorithm.c index 66e7368..3b4a923 100644 --- a/FCFS Scheduling Algorithm.c +++ b/FCFS Scheduling Algorithm.c @@ -35,8 +35,9 @@ int main() printf("\nProcessNo\tAT\tBT\tCT\tTAT\tWT\tRT\n"); for(int i=0;i ct) ct = p[i].at; ct+=p[i].bt; - p[i].ct=ct; + p[i].ct=ct; p[i].tat=p[i].ct-p[i].at; avgtat+=p[i].tat; p[i].wt=p[i].tat-p[i].bt; diff --git a/Round Robin Scheduling Algorithm.c b/Round Robin Scheduling Algorithm.c index 1c0d8fa..c2312cd 100644 --- a/Round Robin Scheduling Algorithm.c +++ b/Round Robin Scheduling Algorithm.c @@ -19,7 +19,7 @@ int main() { struct proc p[10],tmp; float avgtat=0,avgwt=0; - int n,tq,ct=0,flag=0,remaining; + int n,tq,ct=0,flag=0,remaining, iter=0; printf("<--Round Robin Scheduling Algorithm-->\n"); printf("Enter Number of Processes: "); scanf("%d",&n); @@ -37,35 +37,38 @@ int main() } remaining=n; printf("\nProcessNo\tAT\tBT\tCT\tTAT\tWT\n"); + ct = p[0].at; for(int i=0;remaining!=0;) { + iter ++; if(p[i].rt<=tq&&p[i].rt>0) { ct+=p[i].rt; p[i].rt=0; - flag=1; - } - else if(p[i].rt>0) - { - p[i].rt-=tq; - ct+=tq; - } - if(p[i].rt==0&&flag==1) - { - flag = 0; remaining--; p[i].ct=ct; p[i].tat=p[i].ct-p[i].at; avgtat+=p[i].tat; - p[i].wt=p[i].tat-p[i].bt; - avgwt+=p[i].wt; + p[i].wt=p[i].tat-p[i].bt; + avgwt+=p[i].wt; printf("P%d\t\t%d\t%d\t%d\t%d\t%d\n",p[i].no,p[i].at,p[i].bt,p[i].ct,p[i].tat,p[i].wt); + iter = 0; + } + else if(p[i].rt>0) + { + iter = 0; + p[i].rt-=tq; + ct+=tq; } if(i!=n-1&&p[i+1].at<=ct) i++; + else if(iter > n){ + i = (i+1)%n; + ct = p[i].at; + } else i=0; } avgtat/=n,avgwt/=n; printf("\nAverage TurnAroundTime=%f\nAverage WaitingTime=%f",avgtat,avgwt); -} \ No newline at end of file +}