1
1
import React , { Component } from "react" ;
2
2
import InputTable from "../models/table" ;
3
-
4
3
export default class Fcfs extends InputTable {
5
4
constructor ( props ) {
6
5
super ( props ) ;
@@ -24,50 +23,41 @@ export default class Fcfs extends InputTable {
24
23
// console.log(tuple);
25
24
}
26
25
// console.log(tuple);
27
-
28
- // var tuple = [
29
- // {pid:1 ,bt1:6 ,art:0,io:10 ,bt2:4 },
30
- // {pid:2 ,bt1:9 ,art:0,io:15 ,bt2:6 },
31
- // {pid:3,bt1:3,art:0,io:5,bt2:2},
32
- // ] ;
33
- var total_bt = [ ] ;
34
- var artt = [ ] ;
35
- var total_btt = [ ] ;
26
+ /*var tuple = [
27
+ {pid:1,bt1:6,art:0,io:10,bt2:4},
28
+ {pid:2 ,bt1:9 ,art:0,io:15 ,bt2:6 },
29
+ {pid:3 ,bt1:3 ,art:0,io:5 ,bt2:2 },
30
+ ];*/
31
+ var n = tuple . length ;
32
+ var total_bt = [ ] ; // total burst time
33
+ var artt = [ ] ; // temp. arrival time
34
+ var total_btt = [ ] ; // total burst time without io
36
35
for ( var i = 0 ; i < tuple . length ; i ++ ) {
37
36
total_bt [ i ] = tuple [ i ] . bt1 + tuple [ i ] . io + tuple [ i ] . bt2 ;
38
37
total_btt [ i ] = total_bt [ i ] - tuple [ i ] . io ;
39
38
artt [ i ] = tuple [ i ] . art ;
40
- // console.log(total_bt[i]);
41
39
}
40
+ //sort
42
41
var tuple_temp = tuple ;
43
42
tuple . sort ( function ( a , b ) {
44
43
return a . art - b . art ;
45
44
} ) ;
46
45
tuple . sort ( ) ;
47
-
48
- var n = tuple . length ;
49
- var wt = [ ] ;
50
- var tat = [ ] ;
51
- var total_wt = 0 ;
52
- var total_tat = 0 ;
53
- var rt = [ ] ;
54
- for ( var i = 0 ; i < n ; i ++ ) {
55
- rt . push ( tuple [ i ] . bt ) ;
56
- }
57
-
58
- var final_ans = [ ] ;
46
+ var wt = [ ] ; //wating time
47
+ var tat = [ ] ; //turnaround time
48
+ var total_wt = 0 ; // total wating time
49
+ var total_tat = 0 ; // total turnaround time
50
+ var final_ans = [ ] ; // grannt chart
59
51
var visited = [ ] ;
60
52
for ( var i = 0 ; i < tuple . length ; i ++ ) {
61
53
visited [ i ] = 0 ;
62
54
}
63
-
64
- var que = [ ] ;
55
+ var que = [ ] ; // ready queue
65
56
var btco = [ ] ;
66
57
for ( var i = 0 ; i < n ; i ++ ) {
67
58
btco [ i ] = 0 ;
68
59
}
69
-
70
- for ( var i = 0 ; i < 50 ; i ++ ) {
60
+ for ( var i = 0 ; i < 10000 ; i ++ ) {
71
61
for ( var j = 0 ; j < n ; j ++ ) {
72
62
if ( total_bt [ i ] <= 0 ) {
73
63
visited [ i ] = 1 ;
@@ -83,19 +73,16 @@ export default class Fcfs extends InputTable {
83
73
}
84
74
}
85
75
}
86
-
87
76
if ( state == - 1 ) {
88
77
final_ans . push ( "/" ) ;
89
78
var smit = [ ] ;
90
79
que . push ( smit ) ;
91
80
} else {
92
81
if ( btco [ state ] === 0 ) {
93
- // if(i==3){console.log("fuck1");}
94
82
for ( var j = 0 ; j < tuple [ state ] . bt1 ; j ++ ) {
95
83
final_ans . push ( tuple [ state ] . pid ) ;
96
84
}
97
- tuple [ state ] . art = i + tuple [ state ] . bt1 + tuple [ state ] . io ;
98
- // console.log(state + " " + tuple[state].art);
85
+ tuple [ state ] . art = i + tuple [ state ] . bt1 + tuple [ state ] . io ; // change arrival time
99
86
for ( var g = i ; g < i + tuple [ state ] . bt1 - 1 ; g ++ ) {
100
87
var smit = [ ] ;
101
88
for ( var y = 0 ; y < n ; y ++ ) {
@@ -106,11 +93,9 @@ export default class Fcfs extends InputTable {
106
93
que . push ( smit ) ;
107
94
}
108
95
i += tuple [ state ] . bt1 - 1 ;
109
-
110
96
btco [ state ] = 1 ;
111
97
total_bt [ state ] -= tuple [ state ] . bt1 + tuple [ state ] . io ;
112
98
} else {
113
- // if(i==3){console.log("fuck2");}
114
99
for ( var j = 0 ; j < tuple [ state ] . bt2 ; j ++ ) {
115
100
final_ans . push ( tuple [ state ] . pid ) ;
116
101
}
@@ -125,41 +110,35 @@ export default class Fcfs extends InputTable {
125
110
}
126
111
i += tuple [ state ] . bt2 - 1 ;
127
112
total_bt [ state ] = 0 ;
128
- tuple [ state ] . art = 100 ;
113
+ tuple [ state ] . art = 100000 ;
129
114
}
130
115
}
131
116
}
132
- // console.log(que.length);
133
- // for (var i = 0; i < 50; i++) {
134
- // console.log(i + " " + final_ans[i]);
135
- // }
136
- var cmp_time = [ ] ;
117
+ for ( var i = 0 ; i < 50 ; i ++ ) {
118
+ console . log ( i + " " + final_ans [ i ] ) ;
119
+ }
120
+ var cmp_time = [ ] ; //COMPLETION TIME
137
121
for ( var i = 0 ; i < tuple . length ; i ++ ) {
138
122
cmp_time [ i ] = - 1 ;
139
123
}
140
124
for ( var i = final_ans . length - 1 ; i >= 0 ; i -- ) {
141
- // console.log(final_ans[i]);
142
125
if ( final_ans [ i ] === "/" ) {
143
126
} else {
144
127
if ( cmp_time [ final_ans [ i ] - 1 ] == - 1 ) {
145
128
cmp_time [ final_ans [ i ] - 1 ] = i + 1 ;
146
129
}
147
130
}
148
131
}
149
-
150
- var wt = [ ] ;
151
-
152
132
for ( var i = 0 ; i < n ; i ++ ) {
153
133
tat [ i ] = cmp_time [ i ] - artt [ i ] ;
154
-
155
134
wt [ i ] = tat [ i ] - total_btt [ i ] ;
156
135
}
157
136
for ( var i = 0 ; i < n ; i ++ ) {
158
137
total_wt = total_wt + wt [ i ] ;
159
138
total_tat = total_tat + tat [ i ] ;
160
139
}
140
+ console . log ( total_wt / n + " " + total_tat / n ) ;
161
141
// console.log(total_wt/n + " " + total_tat/n);
162
-
163
142
// Changing Pid into string in final answer array
164
143
for ( var i = 0 ; i < final_ans . length ; i ++ ) {
165
144
if ( final_ans [ i ] != "/" ) {
@@ -183,25 +162,25 @@ export default class Fcfs extends InputTable {
183
162
newState . ganntChartArray = final_ans ;
184
163
newState . gotAnswer = true ;
185
164
newState . isChartGenerated = false ;
186
- this . setState ( { newState } ) ;
165
+ this . setState ( {
166
+ newState,
167
+ } ) ;
187
168
} ;
188
169
getAnswer = ( state ) => {
189
170
// console.log(state);
190
171
if ( state . isIoEnabled ) {
191
172
this . getIoEnabledAnswer ( state ) ;
192
173
return ;
193
174
}
194
-
195
- // var tuple = [
196
- // {pid:1,bt:6,art:2},
197
- // {pid:2,bt:3,art:5},
198
- // {pid:3,bt:8,art:1},
199
- // {pid:4,bt:3,art:0},
200
- // {pid:5,bt:4,art:4},
201
- // ];
175
+ var tuple = [ ] ;
202
176
var newState = state ;
203
- var tuple = [ ] ,
204
- tuple_temp = [ ] ;
177
+ /*var tuple = [
178
+ {pid:1,bt:6,art:2},
179
+ {pid:2,bt:3,art:5},
180
+ {pid:3,bt:8,art:1},
181
+ {pid:4,bt:3,art:0},
182
+ {pid:5,bt:4,art:4},
183
+ ];*/
205
184
var n = state . tableData . length ;
206
185
for ( let i = 0 ; i < n ; i ++ ) {
207
186
var tempPid = state . tableData [ i ] [ 0 ] . substring ( 1 ) ;
@@ -213,43 +192,29 @@ export default class Fcfs extends InputTable {
213
192
} ) ;
214
193
// console.log(tuple);
215
194
}
216
- tuple_temp = tuple ;
195
+ var tuple_temp = tuple ;
217
196
tuple . sort ( function ( a , b ) {
218
197
if ( a . art == b . art ) {
219
198
return a . bt - b . bt ;
220
199
}
221
200
return a . art - b . art ;
222
201
} ) ;
223
202
tuple . sort ( ) ;
224
-
225
203
var n = tuple . length ;
226
- var wt = [ ] ;
227
- var tat = [ ] ;
228
- var total_wt = 0 ;
229
- var total_tat = 0 ;
230
- var rt = [ ] ;
231
-
232
- for ( var i = 0 ; i < n ; i ++ ) {
233
- rt . push ( tuple [ i ] . bt ) ;
234
- }
235
- var complete = 0 ,
236
- t = 0 ,
237
- minm = 9999 ;
238
- var shortest = 0 ,
239
- finish_time ;
240
- var check = false ;
241
- var final_ans = [ ] ;
204
+ var wt = [ ] ; // waiting time
205
+ var tat = [ ] ; //turn around time
206
+ var total_wt = 0 ; //total waiting time
207
+ var total_tat = 0 ; //total turnaround time
208
+ var final_ans = [ ] ; // grannt chart
242
209
var visited = [ ] ;
243
210
for ( var i = 0 ; i < tuple . length ; i ++ ) {
244
211
visited [ i ] = 0 ;
245
212
}
246
- var que = [ ] ;
213
+ var que = [ ] ; // running queue
247
214
var state = 0 ;
248
215
var flag = 0 ;
249
- var count = 0 ;
250
- for ( var i = 0 ; i < 50 ; i ++ ) {
216
+ for ( var i = 0 ; i < 10000 ; i ++ ) {
251
217
visited [ state ] ++ ;
252
-
253
218
if ( tuple [ state ] . art > i ) {
254
219
final_ans . push ( "/" ) ;
255
220
var smit = [ ] ;
@@ -266,7 +231,6 @@ export default class Fcfs extends InputTable {
266
231
}
267
232
var mx = 10000 ;
268
233
var ind = 0 ;
269
-
270
234
for ( var j = 0 ; j < tuple . length ; j ++ ) {
271
235
if (
272
236
tuple [ j ] . art <= tuple [ state ] . art + tuple [ state ] . bt &&
@@ -278,11 +242,8 @@ export default class Fcfs extends InputTable {
278
242
}
279
243
}
280
244
}
281
-
282
- // console.log(state + " " + visited[state] + " " + tuple[state].bt + " " );
283
245
for ( var k = i ; k < i + tuple [ state ] . bt ; k ++ ) {
284
246
var smit = [ ] ;
285
- count ++ ;
286
247
for ( var y = 0 ; y < n ; y ++ ) {
287
248
if ( tuple [ y ] . art <= k && visited [ y ] <= 1 ) {
288
249
smit . push ( tuple [ y ] . pid ) ;
@@ -296,29 +257,20 @@ export default class Fcfs extends InputTable {
296
257
}
297
258
}
298
259
}
299
- // console.log(que.length);
300
- // for (var i = 0; i < 50; i++) {
301
- // console.log(final_ans[i]);
302
- // }
303
- var cmp_time = [ ] ;
260
+ var cmp_time = [ ] ; //completion time
304
261
for ( var i = 0 ; i < tuple . length ; i ++ ) {
305
262
cmp_time [ i ] = - 1 ;
306
263
}
307
264
for ( var i = final_ans . length - 1 ; i >= 0 ; i -- ) {
308
- // console.log(final_ans[i]);
309
265
if ( final_ans [ i ] === "/" ) {
310
266
} else {
311
267
if ( cmp_time [ final_ans [ i ] - 1 ] == - 1 ) {
312
268
cmp_time [ final_ans [ i ] - 1 ] = i + 1 ;
313
269
}
314
270
}
315
271
}
316
-
317
- var wt = [ ] ;
318
-
319
272
for ( var i = 0 ; i < n ; i ++ ) {
320
273
tat [ i ] = cmp_time [ i ] - tuple_temp [ i ] . art ;
321
-
322
274
wt [ i ] = tat [ i ] - tuple [ i ] . bt ;
323
275
}
324
276
for ( var i = 0 ; i < n ; i ++ ) {
@@ -353,7 +305,9 @@ export default class Fcfs extends InputTable {
353
305
newState . gotAnswer = true ;
354
306
newState . isChartGenerated = false ;
355
307
// console.log(state);
356
- this . setState ( { newState } ) ;
308
+ this . setState ( {
309
+ newState,
310
+ } ) ;
357
311
} ;
358
312
render ( ) {
359
313
if (
@@ -377,4 +331,4 @@ export default class Fcfs extends InputTable {
377
331
) ;
378
332
}
379
333
}
380
- }
334
+ }
0 commit comments