1
- #include <stdio.h>
2
- #include <stdlib.h>
3
-
4
- #define N 100
5
- struct process {
6
- int waiting_time ;
7
- int turn_around_time ;
8
- int pid ;
9
- int arrival_time ;
10
- int burst_time ;
11
- };
12
-
13
- struct process p [N ];
14
- int n ;
15
- void sort ()
16
- {
17
- //Sort according to arrival time
18
- int i ,j ;
19
- for (i = 0 ;i < n ;i ++ )
20
- {
21
- for (j = i + 1 ;j < n ;j ++ )
22
- {
23
- if (p [i ].arrival_time > p [j ].arrival_time )
24
- {
25
- int temp_pid = p [i ].pid ;
26
- int temp_arrival_time = p [i ].arrival_time ;
27
- int temp_burst_time = p [i ].burst_time ;
28
- p [i ].pid = p [j ].pid ;
29
- p [i ].arrival_time = p [j ].arrival_time ;
30
- p [i ].burst_time = p [j ].burst_time ;
31
- p [j ].pid = temp_pid ;
32
- p [j ].arrival_time = temp_arrival_time ;
33
- p [j ].burst_time = temp_burst_time ;
34
- }
35
- }
36
- }
37
- }
38
- void FCFS ()
39
- {
40
- int i ,j ;
41
- //First assign waiting_time[p0] = 0
42
- p [0 ].waiting_time = 0 ;
43
- //Next, lets calculate wt[i] = summation of bt[0...i-1] - at[i]
44
- for (i = 1 ;i < n ;i ++ )
45
- { int temp_summation = 0 ;
46
- for (j = 0 ;j < i ;j ++ )
47
- {
48
- temp_summation += p [j ].burst_time ;
49
- }
50
- p [i ].waiting_time = temp_summation - p [i ].arrival_time ;
51
- }
52
- //Next, TAT = WT + BT for each process
53
- for (i = 0 ;i < n ;i ++ )
54
- {
55
- p [i ].turn_around_time = p [i ].waiting_time + p [i ].burst_time ;
56
- }
57
-
58
- }
1
+ #include <stdio.h>
59
2
int main ()
60
3
{
61
- int i ,j ;
62
- printf ("Enter the number of Processes\n" );
63
- scanf ("%d" , & n );
64
- printf ("Enter the arrival time of all the processes:\n" );
65
- for (i = 0 ;i < n ;i ++ )
66
- {
67
- scanf ("%d" , & p [i ].arrival_time );
68
- p [i ].pid = i + 1 ;
69
- }
70
- printf ("Enter the burst time of all the processes:\n" );
71
- for (i = 0 ;i < n ;i ++ )
72
- {
73
- scanf ("%d" , & p [i ].burst_time );
74
- //p[i].pid = i+1;
75
- }
76
- sort ();
77
- FCFS ();
78
- printf ("\n" );
79
- printf ("\n Process \t Arrival Time \t Burst Time \t Waiting Time \t Turn Around Time\n" );
80
- for (i = 0 ;i < n ;i ++ )
81
- {
82
- printf ("\n %d \t\t %d \t\t %d \t\t %d \t\t %d\n" , p [i ].pid ,p [i ].arrival_time , p [i ].burst_time , p [i ].waiting_time , p [i ].turn_around_time );
83
- }
84
- printf ("\nNumber of Context switches is %d\n" , n - 1 );
85
- int total_end_time = p [n - 1 ].waiting_time + p [n - 1 ].burst_time + p [n - 1 ].arrival_time ;
86
- int total_burst_time = 0 ;
87
- for (i = 0 ;i < n ;i ++ )
88
- {
89
- total_burst_time += p [i ].burst_time ;
90
- }
91
- int cpu_idle_time = total_end_time - total_burst_time ;
92
- printf ("Total CPU Idle Time is %d\n" , cpu_idle_time );
4
+ int n ,at [10 ],bt [10 ],rt [10 ],wt [10 ],tat [10 ];
5
+ printf ("Enter no. of processes\n" );
6
+ scanf ("%d" ,& n );
7
+ for (int i = 0 ;i < n ;i ++ )
8
+ {
9
+ printf ("Enter arrival time process %d:" ,i + 1 );
10
+ scanf ("%d" ,& at [i ]);
11
+ printf ("Enter burst time process %d:" ,i + 1 );
12
+ scanf ("%d" ,& bt [i ]);
13
+ //rt[i]=bt[i];
14
+ }
15
+ int time = 0 ;
16
+ int idt = 0 ;
17
+ int endtime = 0 ;
18
+ int remain = 0 ;
19
+ int finished [10 ]= {0 };
20
+ while (remain != n )
21
+ {
22
+ int smallarr = 99999 ;
23
+ int smallest ;
24
+ for (int i = 0 ;i < n ;i ++ )
25
+ {
26
+ if (at [i ]<=smallarr && finished [i ]== 0 )
27
+ {
28
+ smallarr = at [i ];
29
+ smallest = i ;
30
+ }
31
+ }
32
+ if (smallarr > time )
33
+ {
34
+ idt ++ ;
35
+ time += 1 ;
36
+ }
37
+ else
38
+ {
39
+ printf ("Process %d from %d to %d\n" ,smallest + 1 ,time ,time + bt [smallest ]);
40
+ remain ++ ;
41
+ finished [smallest ]= 1 ;
42
+ endtime = time + bt [smallest ];
43
+ tat [smallest ]= endtime - at [smallest ];
44
+ wt [smallest ]= endtime - at [smallest ]- bt [smallest ];
45
+ time += bt [smallest ];
46
+ }
93
47
94
- }
48
+ }
49
+ printf ("\n\nProcess\tTurnaround Time\tWaiting Time\n\n" );
50
+ for (int i = 0 ;i < n ;i ++ )
51
+ {
52
+ printf ("%d\t%d\t%d\n" ,i + 1 ,tat [i ],wt [i ]);
53
+ }
54
+ printf ("CPU Idle Time is %d\n" ,idt );
55
+ printf ("Number of Context Swiches is %d\n" ,n - 1 );
56
+ }
0 commit comments