Professional Documents
Culture Documents
Assignment 3
FCFS
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
int main(){
int n;
cout<<"Enter the number of processes: ";
cin>>n;
cout<<"\nEnter the sequence: ";
int pid[n];
int burst[n];
for(int i=0;i<n;i++){
cout<<"PID: ";
cin>>pid[i];
cout<<"Burst time: ";
cin>>burst[i];
}
cout<<"\nPID Waiting time"<<endl;
int sum=0,total_wait=0;
for(int i=0;i<n;i++){
cout<<pid[i]<<" "<<sum<<endl;
if(i<n-1){
sum+=burst[i];
total_wait+=sum;
}
}
cout<<"Average Waiting time: "<<(double)total_wait/(double)n<<endl;
return 0;
}
OUTPUT:
Non Preemptive SJF:
CODE:
#include<bits/stdc++.h>
using namespace std;
struct process{
int pid;
int bt;
int at;
process(){
pid=0;
bt=0;
at=0;
}
};
OUTPUT:
Preemptive SJF:
CODE:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int current=0;
struct process{
int pid,bt,at,ct,rt;
process(){
pid=0;bt=0;at=0;ct=0;rt=0;
}
};
void main(){
int n;
// cout<<"Enter the number of processes: ";
// cin>>n;
n=3;
int pid[n],bt[n],at[n],tat[n],wt[n],count=0,tot_wait=0,tot_tat=0;
process p[n];
// for(int i=0;i<n;i++){
// p[i].pid=i+1;
// cout<<"Burst time of "<<p[i].pid<<": ";
// cin>>p[i].bt;
// p[i].bt=p[i].rt;
// cout<<"Arrival time of "<<p[i].pid<<": ";
// cin>>p[i].at;
// }
p[0].pid=1;p[0].bt=5;p[0].at=1;p[0].rt=5;
p[1].pid=2;p[1].bt=2;p[1].at=2;p[1].rt=2;
p[2].pid=3;p[2].bt=5;p[2].at=3;p[2].rt=5;
sort(p,p+n,comp);
current=p[0].at;
while(true){
sort(p,p+n,comp1);
if(current>=p[0].at) p[0].rt--;
if(p[0].rt==0){
count++;
p[0].ct=current+1;
}
if(count==n) break;
current++;
}
sort(p,p+n,comp2);
for(int i=0;i<n;i++){
tat[i]=p[i].ct-p[i].at;
tot_tat+=tat[i];
wt[i]=tat[i]-p[i].bt;
tot_wait+=wt[i];
}
cout<<"PID AT BT CT TAT WT"<<endl;
for(int i=0;i<n;i++){
cout<<p[i].pid<<" "<<p[i].at<<" "<<p[i].bt<<" "<<p[i].ct<<" "<<tat[i]<<"
"<<wt[i]<<endl;
}
cout<<"Avg. Waiting time: "<<(double)tot_wait/(double)n<<endl;
cout<<"Avg. Turnaround time: "<<(double)tot_tat/(double)n<<endl;
return;
}
OUTPUT: