Professional Documents
Culture Documents
#include<iostream>
#define MAX_PROCESS 10
class process
public:
int process_num;
int burst_time;
int arrival_time;
int response_time;
int waiting_time;
int turnaround_time;
void input_process(int);
int get_at()
return arrival_time;
};
void process::input_process(int count)
process_num=count+1;
cin>>burst_time;
cin>>arrival_time;
void calc_wait_tat(process*,int);
void average(process*,int);
void display(process*,int);
int main()
process p[MAX_PROCESS],temp;
int num,i,j;
cin>>num;
for(i=0;i<num;++i)
p[i].input_process(i);
for(i=0;i<num;++i)
for(j=i+1;j<num;++j)
if(p[i].get_at()>p[j].get_at())
temp=p[i];
p[i]=p[j];
p[j]=temp;
calc_wait_tat(p,num);
display(p,num);
return 0;
int i;
p[0].response_time=0;
for(i=1;i<n;++i)
p[i].response_time=p[i-1].burst_time+p[i-1].response_time;
if(p[i].response_time<p[i].arrival_time)
p[i].response_time=p[i].arrival_time;
p[0].waiting_time=0;
for(i=1;i<n;++i)
p[i].waiting_time=p[i].response_time-p[i].arrival_time;
for(i=0;i<n;++i)
p[i].turnaround_time=p[i].waiting_time+p[i].burst_time;
float avg_wt=0,avg_tat=0;
for(int i=0;i<n;++i)
avg_wt+=(float)p[i].waiting_time;
avg_tat+=(float)p[i].turnaround_time;
avg_wt/=n;
avg_tat/=n;
cout<<"Processes "<<" Burst time "<<" Waiting time "<<" Turn around time\n";
average(p,n);
#include<iostream>
#include<iomanip>
class sjf_alg
{
int exe[10],id[10];
int n;
public:
void getdata();
void display();
void cal_wt_tt();
};
void sjf_alg::getdata()
cin>>n;
for(int i=0;i<n;i++)
cin>>exe[i];
id[i]=i+1;
void sjf_alg::display()
for(int i=0;i<n;i++)
cout<<setw(5)<<i+1<<setw(15)<<exe[i]<<setw(15)<<"0"<<endl;
}
void sjf_alg::sort(int *f,int *l)
int temp;
for(int y=0;y<n-1;y++)
for(int z=0;z<n-1;z++)
if(f[z]>f[z+1])
temp=f[z];
f[z]=f[z+1];
f[z+1]=temp;
temp=l[z];
l[z]=l[z+1];
l[z+1]=temp;
void sjf_alg::cal_wt_tt()
int wt=0,tnt=0;
float avg=0,avtnt=0;
sort(exe,id);
for(int i=0;i<n;i++)
tnt+=exe[i];
avtnt+=tnt;
avg+=wt;
cout<<setw(5)<<id[i]<<setw(15)<<wt<<setw(15)<<tnt<<endl;
wt+=exe[i];
avg=avg/(float)n;
avtnt/=(float)n;
int main()
sjf_alg sjf;
sjf.getdata();
sjf.display();
sjf.cal_wt_tt();
return 0;
int main()
int bt[20],p[20],wt[20],tat[20],pr[20],i,j,n,total=0,pos,temp,avg_wt,avg_tat;
cin>>n;
cout<<"\nEnter Burst Time and Priority\n";
for(i=0;i<n;i++)
cout<<"\nP["<<i+1<<"]\n";
cout<<"Burst Time:";
cin>>bt[i];
cout<<"Priority:";
cin>>pr[i];
//sorting burst time, priori\ty and process number in ascending order using selection sort
for(i=0;i<n;i++)
pos=i;
for(j=i+1;j<n;j++)
if(pr[j]<pr[pos])
pos=j;
temp=pr[i];
pr[i]=pr[pos];
pr[pos]=temp;
temp=bt[i];
bt[i]=bt[pos];
bt[pos]=temp;
temp=p[i];
p[i]=p[pos];
p[pos]=temp;
for(i=1;i<n;i++)
wt[i]=0;
for(j=0;j<i;j++)
wt[i]+=bt[j];
total+=wt[i];
total=0;
for(i=0;i<n;i++)
total+=tat[i];
return 0;
#include<cstdlib>
#include<queue>
#include<cstdio>
int id,at,bt,st,ft,pr;
float wt,tat;
}process;
process p[10],p1[10],temp;
queue<int> q1;
int i,n,ts,ch,j,x;
p[0].tat=0;
p[0].wt=0;
n=accept(ch);
ganttrr(n);
turnwait(n);
display(n);
return 0;
int i,n;
scanf("%d",&n);
if(n==0)
{
printf("Invalid");
exit(1);
cout<<endl;
for(i=1;i<=n;i++)
scanf("%d",&p[i].at);
p[i].id=i;
cout<<endl;
for(i=1;i<=n;i++)
scanf("%d",&p[i].bt);
for(i=1;i<=n;i++)
p1[i]=p[i];
return n;
}
void ganttrr(int n)
int i,ts,m,nextval,nextarr;
nextval=p1[1].at;
i=1;
cin>>ts;
q1.push(p1[i].id);
while(!q1.empty())
m=q1.front();
q1.pop();
if(p1[m].bt>=ts)
nextval=nextval+ts;
}
else
nextval=nextval+p1[m].bt;
if(p1[m].bt>=ts)
p1[m].bt=p1[m].bt-ts;
else
p1[m].bt=0;
while(i<=n&&p1[i].at<=nextval)
q1.push(p1[i].id);
i++;
if(p1[m].bt>0)
q1.push(m);
if(p1[m].bt<=0)
p[m].ft=nextval;
}
void turnwait(int n)
int i;
for(i=1;i<=n;i++)
p[i].tat=p[i].ft-p[i].at;
p[i].wt=p[i].tat-p[i].bt;
p[0].tat=p[0].tat+p[i].tat;
p[0].wt=p[0].wt+p[i].wt;
p[0].tat=p[0].tat/n;
p[0].wt=p[0].wt/n;
void display(int n)
int i;
/*
Here
at = Arrival time,
bt = Burst time,
wt = Waiting time
*/
cout<<"\n=====================================================\n";
cout<<"\n===================TABLE==============================\n";
printf("\nProcess\tAT\tBT\tFT\tTAT\t\tWT");
for(i=1;i<=n;i++)
printf("\nP%d\t%d\t%d\t%d\t%f\t%f",p[i].id,p[i].at,p[i].bt,p[i].ft,p[i].tat,p[i].wt);
cout<<"\n=====================================================\n";
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <string.h>
using namespace std;
struct process {
int pid;
int arrival_time;
int burst_time;
int start_time;
int completion_time;
int turnaround_time;
int waiting_time;
int response_time;
};
int main() {
int x;
struct process p[100];
float avg_turnaround_time;
float avg_waiting_time;
float avg_response_time;
float cpu_utilization;
int total_turnaround_time = 0;
int total_waiting_time = 0;
int total_response_time = 0;
int total_idle_time = 0;
float throughput;
int burst_remaining[100];
int is_completed[100];
memset(is_completed,0,sizeof(is_completed));
int current_time = 0;
int completed = 0;
int prev = 0;
while(completed != x) {
int idx = -1;
int mn = 10000000;
for(int i = 0; i < x; i++) {
if(p[i].arrival_time <= current_time && is_completed[i] == 0) {
if(burst_remaining[i] < mn) {
mn = burst_remaining[i];
idx = i;
}
if(burst_remaining[i] == mn) {
if(p[i].arrival_time < p[idx].arrival_time) {
mn = burst_remaining[i];
idx = i;
}
}
}
}
if(idx != -1) {
if(burst_remaining[idx] == p[idx].burst_time) {
p[idx].start_time = current_time;
total_idle_time += p[idx].start_time - prev;
}
burst_remaining[idx] -= 1;
current_time++;
prev = current_time;
if(burst_remaining[idx] == 0) {
p[idx].completion_time = current_time;
p[idx].turnaround_time = p[idx].completion_time - p[idx].arrival_time;
p[idx].waiting_time = p[idx].turnaround_time - p[idx].burst_time;
p[idx].response_time = p[idx].start_time - p[idx].arrival_time;
total_turnaround_time += p[idx].turnaround_time;
total_waiting_time += p[idx].waiting_time;
total_response_time += p[idx].response_time;
is_completed[idx] = 1;
completed++;
}
}
else {
current_time++;
}
}
cout<<endl<<endl;