Professional Documents
Culture Documents
Operating System Project
Operating System Project
GROUP MENBER ID
1. Natinale Telahun
2.
3. Walelign belisty 1016119
4.
SUBMITTED:MR TEMESGEN
SUBMISSION DATE:09/04/2021
#include <stdio.h>
struct Process
{
int pid;
int burst_t;
int btc;
int arival_t;
int waiting_t;
int tat;
};
int main(){
int n;
printf("Enter the number n: ");
scanf("%d", &n);
struct Process processes[n];
for(int i=0; i<n; i++){
printf("P%d\n",i+1);
printf("Arival time: ");
scanf("%d",&processes[i].arival_t);
printf("Burst time: ");
scanf("%d",&processes[i].burst_t);
processes[i].pid=i+1;
processes[i].btc=processes[i].burst_t;
processes[i].tat=0;
processes[i].waiting_t=0;
}
int check=1,min=__INT_MAX__,minpro=0,t=0;
while(check!=0){
check=0;
for(int i=0;i<n;i++){
if(processes[i].btc==0){
continue;
}
if(processes[i].arival_t<=t && processes[i].btc<min ){
minpro=i;
min=processes[i].btc;
check++;
}
}
for(int j=0;j<n;j++){
if(processes[j].btc==0){
continue;
}
if(j==minpro){
processes[j].btc--;
processes[j].tat++;
if(processes[j].btc==0)
min=__INT_MAX__;
}
else if(processes[j].arival_t<=t){
processes[j].waiting_t++;
processes[j].tat++;
}
}
t++;
}
printf("\n\n\nProcesses\tArival Time\tBurst Time\tWaiting Time\tTurn Around Time\n");
double awt=0,atat;
for(int k=0; k<n; k++){
printf("P%d\t\t", processes[k].pid);
printf("%d\t\t", processes[k].arival_t);
printf("%d\t\t", processes[k].burst_t);
printf("%d\t\t", processes[k].waiting_t);
printf("%d\t\n", processes[k].tat);
awt+=processes[k].waiting_t;
atat+=processes[k].tat;
}
awt/=n;
atat/=n;
printf("\n\nAverage Waiting Time: %.2f\n",awt);
printf("Average Turn Around Time: %.2f\n",atat);
}