Skip to content

Commit eb445fa

Browse files
Scheduling Algorithms
1 parent 65b422e commit eb445fa

14 files changed

+871
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#include<stdio.h>
2+
struct proc
3+
{
4+
int no,bt,ct,tat,wt;
5+
};
6+
struct proc read(int i)
7+
{
8+
struct proc p;
9+
printf("\nProcess No: %d\n",i);
10+
p.no=i;
11+
printf("Enter Burst Time: ");
12+
scanf("%d",&p.bt);
13+
return p;
14+
}
15+
int main()
16+
{
17+
struct proc p[10],tmp;
18+
float avgtat=0,avgwt=0;
19+
int n,ct=0;
20+
printf("<--FCFS Scheduling Algorithm Without Arrival Time (Non-Preemptive)-->\n");
21+
printf("Enter Number of Processes: ");
22+
scanf("%d",&n);
23+
for(int i=0;i<n;i++)
24+
p[i]=read(i+1);
25+
printf("\nProcessNo\tBT\tCT\tTAT\tWT\tRT\n");
26+
for(int i=0;i<n;i++)
27+
{
28+
ct+=p[i].bt;
29+
p[i].ct=p[i].tat=ct;
30+
avgtat+=p[i].tat;
31+
p[i].wt=p[i].tat-p[i].bt;
32+
avgwt+=p[i].wt;
33+
printf("P%d\t\t%d\t%d\t%d\t%d\t%d\n",p[i].no,p[i].bt,p[i].ct,p[i].tat,p[i].wt,p[i].wt);
34+
}
35+
avgtat/=n,avgwt/=n;
36+
printf("\nAverage TurnAroundTime=%f\nAverage WaitingTime=%f",avgtat,avgwt);
37+
}

FCFS Scheduling Algorithm.c

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#include<stdio.h>
2+
struct proc
3+
{
4+
int no,at,bt,ct,tat,wt;
5+
};
6+
struct proc read(int i)
7+
{
8+
struct proc p;
9+
printf("\nProcess No: %d\n",i);
10+
p.no=i;
11+
printf("Enter Arrival Time: ");
12+
scanf("%d",&p.at);
13+
printf("Enter Burst Time: ");
14+
scanf("%d",&p.bt);
15+
return p;
16+
}
17+
int main()
18+
{
19+
struct proc p[10],tmp;
20+
float avgtat=0,avgwt=0;
21+
int n,ct=0;
22+
printf("<--FCFS Scheduling Algorithm (Non-Preemptive)-->\n");
23+
printf("Enter Number of Processes: ");
24+
scanf("%d",&n);
25+
for(int i=0;i<n;i++)
26+
p[i]=read(i+1);
27+
for(int i=0;i<n-1;i++)
28+
for(int j=0;j<n-i-1;j++)
29+
if(p[j].at>p[j+1].at)
30+
{
31+
tmp=p[j];
32+
p[j]=p[j+1];
33+
p[j+1]=tmp;
34+
}
35+
printf("\nProcessNo\tAT\tBT\tCT\tTAT\tWT\tRT\n");
36+
for(int i=0;i<n;i++)
37+
{
38+
ct+=p[i].bt;
39+
p[i].ct=ct;
40+
p[i].tat=p[i].ct-p[i].at;
41+
avgtat+=p[i].tat;
42+
p[i].wt=p[i].tat-p[i].bt;
43+
avgwt+=p[i].wt;
44+
printf("P%d\t\t%d\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,p[i].wt);
45+
}
46+
avgtat/=n,avgwt/=n;
47+
printf("\nAverage TurnAroundTime=%f\nAverage WaitingTime=%f",avgtat,avgwt);
48+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#include <stdio.h>
2+
#define MIN -9999
3+
struct proc
4+
{
5+
int no,at,bt,ct,tat,wt,completed;
6+
};
7+
struct proc read(int i)
8+
{
9+
struct proc p;
10+
printf("\nProcess No: %d\n",i);
11+
p.no=i;
12+
printf("Enter Arrival Time: ");
13+
scanf("%d",&p.at);
14+
printf("Enter Burst Time: ");
15+
scanf("%d",&p.bt);
16+
p.completed=0;
17+
return p;
18+
}
19+
void main()
20+
{
21+
int n,l,t,remaining;
22+
float hrr,temp,avgtat=0,avgwt=0;
23+
struct proc p[10],tmp;
24+
printf("<--Highest Response Ratio Next Scheduling Algorithm (Non-Preemptive)-->\n");
25+
printf("Enter Number of Processes: ");
26+
scanf("%d",&n);
27+
for(int i=0;i<n;i++)
28+
p[i]=read(i+1);
29+
for(int i=0;i<n-1;i++)
30+
for(int j=0;j<n-i-1;j++)
31+
if(p[j].at>p[j+1].at)
32+
{
33+
tmp=p[j];
34+
p[j]=p[j+1];
35+
p[j+1]=tmp;
36+
}
37+
remaining=n;
38+
printf("\n\nProcess\t\tAT\tBT\tCT\tTAT\tWT\n");
39+
for (t=p[0].at;remaining!=0;)
40+
{
41+
hrr=MIN;
42+
for (int i=0;i<n;i++)
43+
if (p[i].at<=t&&p[i].completed!=1)
44+
{
45+
temp=(p[i].bt+(t-p[i].at))/p[i].bt;
46+
if (hrr<temp)
47+
hrr=temp,l=i;
48+
}
49+
t+=p[l].bt;
50+
p[l].ct=t;
51+
p[l].tat=p[l].ct-p[l].at;
52+
p[l].wt=p[l].tat-p[l].bt;
53+
p[l].completed = 1;
54+
remaining--;
55+
}
56+
for(int i=0;i<n;i++)
57+
{
58+
avgtat+=p[i].tat,avgwt+=p[i].wt;
59+
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);
60+
}
61+
avgtat/=n,avgwt/=n;
62+
printf("\nAverage TurnAroundTime=%f\nAverage WaitingTime=%f",avgtat,avgwt);
63+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#include<stdio.h>
2+
#define MIN -9999;
3+
struct proc
4+
{
5+
int no,at,bt,ct,wt,tat,pri,status;
6+
};
7+
struct proc read(int i)
8+
{
9+
struct proc p;
10+
printf("\nProcess No: %d\n",i);
11+
p.no=i;
12+
printf("Enter Arrival Time: ");
13+
scanf("%d",&p.at);
14+
printf("Enter Burst Time: ");
15+
scanf("%d",&p.bt);
16+
printf("Enter Priority: ");
17+
scanf("%d",&p.pri);
18+
p.status=0;
19+
return p;
20+
}
21+
22+
void main()
23+
{
24+
int n,l,ct=0,remaining;
25+
struct proc p[10],temp;
26+
float avgtat=0,avgwt=0;
27+
printf("<--Highest Priority First Scheduling Algorithm (Non-Preemptive)-->\n");
28+
printf("Enter Number of Processes: ");
29+
scanf("%d",&n);
30+
for(int i=0;i<n;i++)
31+
p[i]=read(i+1);
32+
for(int i=0;i<n-1;i++)
33+
for(int j=0;j<n-i-1;j++)
34+
if(p[j].at>p[j+1].at)
35+
{
36+
temp=p[j];
37+
p[j]=p[j+1];
38+
p[j+1]=temp;
39+
}
40+
p[9].pri=MIN;
41+
remaining=n;
42+
printf("\nProcessNo\tAT\tBT\tPri\tCT\tTAT\tWT\tRT\n");
43+
for(ct=p[0].at;remaining!=0;)
44+
{
45+
l=9;
46+
for(int i=0;i<n;i++)
47+
if(p[i].at<=ct && p[i].status!=1 && p[i].pri>p[l].pri)
48+
l=i;
49+
p[l].ct=ct=ct+p[l].bt;
50+
p[l].tat=p[l].ct-p[l].at;
51+
avgtat+=p[l].tat;
52+
p[l].wt=p[l].tat-p[l].bt;
53+
avgwt+=p[l].wt;
54+
p[l].status=1;
55+
remaining--;
56+
printf("P%d\t\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",p[l].no,p[l].at,p[l].bt,p[l].pri,p[l].ct,p[l].tat,p[l].wt,p[l].wt);
57+
}
58+
avgtat/=n,avgwt/=n;
59+
printf("\nAverage TurnAroundTime=%f\nAverage WaitingTime=%f",avgtat,avgwt);
60+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#include<stdio.h>
2+
struct proc
3+
{
4+
int no,bt,ct,wt,tat,pri;
5+
};
6+
struct proc read(int i)
7+
{
8+
struct proc p;
9+
printf("\nProcess No: %d\n",i);
10+
p.no=i;
11+
printf("Enter Burst Time: ");
12+
scanf("%d",&p.bt);
13+
printf("Enter Priority: ");
14+
scanf("%d",&p.pri);
15+
return p;
16+
}
17+
void main()
18+
{
19+
int n,ct=0;
20+
float avgtat=0,avgwt=0;
21+
struct proc p[10],temp;
22+
printf("<--Highest Priority First Scheduling Algorithm Without Arrival Time (Non-Preemptive)-->\n");
23+
printf("Enter Number of Processes: ");
24+
scanf("%d",&n);
25+
for(int i=0;i<n;i++)
26+
p[i]=read(i+1);
27+
for(int i=0;i<n-1;i++)
28+
for(int j=0;j<n-i-1;j++)
29+
if(p[j].pri<p[j+1].pri)
30+
{
31+
temp=p[j];
32+
p[j]=p[j+1];
33+
p[j+1]=temp;
34+
}
35+
printf("\nProcess\t\tBT\tPri\tCT\tTAT\tWT\n");
36+
for(int i=0;i<n;i++)
37+
{
38+
ct+=p[i].bt;
39+
p[i].ct=p[i].tat=ct;
40+
avgtat+=p[i].tat;
41+
p[i].wt=p[i].tat-p[i].bt;
42+
avgwt+=p[i].wt;
43+
printf("P%d\t\t%d\t%d\t%d\t%d\t%d\n",p[i].no,p[i].bt,p[i].pri,p[i].ct,p[i].tat,p[i].wt);
44+
}
45+
avgtat/=n,avgwt/=n;
46+
printf("\nAverage TurnAroundTime=%f\nAverage WaitingTime=%f",avgtat,avgwt);
47+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#include<stdio.h>
2+
#define MAX 9999;
3+
struct proc
4+
{
5+
int no,at,bt,ct,wt,tat,pri,status;
6+
};
7+
struct proc read(int i)
8+
{
9+
struct proc p;
10+
printf("\nProcess No: %d\n",i);
11+
p.no=i;
12+
printf("Enter Arrival Time: ");
13+
scanf("%d",&p.at);
14+
printf("Enter Burst Time: ");
15+
scanf("%d",&p.bt);
16+
printf("Enter Priority: ");
17+
scanf("%d",&p.pri);
18+
p.status=0;
19+
return p;
20+
}
21+
22+
void main()
23+
{
24+
int n,s,ct=0,remaining;
25+
struct proc p[10],temp;
26+
float avgtat=0,avgwt=0;
27+
printf("<--Smallest Priority First Scheduling Algorithm (Non-Preemptive)-->\n");
28+
printf("Enter Number of Processes: ");
29+
scanf("%d",&n);
30+
for(int i=0;i<n;i++)
31+
p[i]=read(i+1);
32+
for(int i=0;i<n-1;i++)
33+
for(int j=0;j<n-i-1;j++)
34+
if(p[j].at>p[j+1].at)
35+
{
36+
temp=p[j];
37+
p[j]=p[j+1];
38+
p[j+1]=temp;
39+
}
40+
p[9].pri=MAX;
41+
remaining=n;
42+
printf("\nProcessNo\tAT\tBT\tPri\tCT\tTAT\tWT\tRT\n");
43+
for(ct=p[0].at;remaining!=0;)
44+
{
45+
s=9;
46+
for(int i=0;i<n;i++)
47+
if(p[i].at<=ct && p[i].status!=1 && p[i].pri<p[s].pri)
48+
s=i;
49+
p[s].ct=ct=ct+p[s].bt;
50+
p[s].tat=p[s].ct-p[s].at;
51+
avgtat+=p[s].tat;
52+
p[s].wt=p[s].tat-p[s].bt;
53+
avgwt+=p[s].wt;
54+
p[s].status=1;
55+
remaining--;
56+
printf("P%d\t\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",p[s].no,p[s].at,p[s].bt,p[s].pri,p[s].ct,p[s].tat,p[s].wt,p[s].wt);
57+
}
58+
avgtat/=n,avgwt/=n;
59+
printf("\nAverage TurnAroundTime=%f\nAverage WaitingTime=%f",avgtat,avgwt);
60+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#include<stdio.h>
2+
struct proc
3+
{
4+
int no,bt,ct,wt,tat,pri;
5+
};
6+
struct proc read(int i)
7+
{
8+
struct proc p;
9+
printf("\nProcess No: %d\n",i);
10+
p.no=i;
11+
printf("Enter Burst Time: ");
12+
scanf("%d",&p.bt);
13+
printf("Enter Priority: ");
14+
scanf("%d",&p.pri);
15+
return p;
16+
}
17+
void main()
18+
{
19+
int n,ct=0;
20+
float avgtat=0,avgwt=0;
21+
struct proc p[10],temp;
22+
printf("<--Smaller Priority First Scheduling Algorithm Without Arrival Time (Non-Preemptive)-->\n");
23+
printf("Enter Number of Processes: ");
24+
scanf("%d",&n);
25+
for(int i=0;i<n;i++)
26+
p[i]=read(i+1);
27+
for(int i=0;i<n-1;i++)
28+
for(int j=0;j<n-i-1;j++)
29+
if(p[j].pri>p[j+1].pri)
30+
{
31+
temp=p[j];
32+
p[j]=p[j+1];
33+
p[j+1]=temp;
34+
}
35+
printf("\nProcess\t\tBT\tPri\tCT\tTAT\tWT\n");
36+
for(int i=0;i<n;i++)
37+
{
38+
ct+=p[i].bt;
39+
p[i].ct=p[i].tat=ct;
40+
avgtat+=p[i].tat;
41+
p[i].wt=p[i].tat-p[i].bt;
42+
avgwt+=p[i].wt;
43+
printf("P%d\t\t%d\t%d\t%d\t%d\t%d\n",p[i].no,p[i].bt,p[i].pri,p[i].ct,p[i].tat,p[i].wt);
44+
}
45+
avgtat/=n,avgwt/=n;
46+
printf("\nAverage TurnAroundTime=%f\nAverage WaitingTime=%f",avgtat,avgwt);
47+
}

0 commit comments

Comments
 (0)