You are on page 1of 3

BAHIR DAR UNIVERSITY

BAHIR DAR INSTITUTE OF TECHNOLOGY


FACULTY OF ELECTRICAL AND COMPUTER
ENGINEEING
DEPARTMENT OF COMPUTER ENGINEEING

OPERATING SYSTEM GROUP 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);
}

You might also like