Skip to content

Commit 047d742

Browse files
author
Vivek
authored
Merge pull request #2 from smit3949/forked
FCFS fixed issues
2 parents 34abb03 + ee2f3d1 commit 047d742

File tree

1 file changed

+48
-94
lines changed

1 file changed

+48
-94
lines changed

screens/fcfs.js

Lines changed: 48 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React, { Component } from "react";
22
import InputTable from "../models/table";
3-
43
export default class Fcfs extends InputTable {
54
constructor(props) {
65
super(props);
@@ -24,50 +23,41 @@ export default class Fcfs extends InputTable {
2423
// console.log(tuple);
2524
}
2625
// 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
3635
for (var i = 0; i < tuple.length; i++) {
3736
total_bt[i] = tuple[i].bt1 + tuple[i].io + tuple[i].bt2;
3837
total_btt[i] = total_bt[i] - tuple[i].io;
3938
artt[i] = tuple[i].art;
40-
// console.log(total_bt[i]);
4139
}
40+
//sort
4241
var tuple_temp = tuple;
4342
tuple.sort(function (a, b) {
4443
return a.art - b.art;
4544
});
4645
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
5951
var visited = [];
6052
for (var i = 0; i < tuple.length; i++) {
6153
visited[i] = 0;
6254
}
63-
64-
var que = [];
55+
var que = []; // ready queue
6556
var btco = [];
6657
for (var i = 0; i < n; i++) {
6758
btco[i] = 0;
6859
}
69-
70-
for (var i = 0; i < 50; i++) {
60+
for (var i = 0; i < 10000; i++) {
7161
for (var j = 0; j < n; j++) {
7262
if (total_bt[i] <= 0) {
7363
visited[i] = 1;
@@ -83,19 +73,16 @@ export default class Fcfs extends InputTable {
8373
}
8474
}
8575
}
86-
8776
if (state == -1) {
8877
final_ans.push("/");
8978
var smit = [];
9079
que.push(smit);
9180
} else {
9281
if (btco[state] === 0) {
93-
// if(i==3){console.log("fuck1");}
9482
for (var j = 0; j < tuple[state].bt1; j++) {
9583
final_ans.push(tuple[state].pid);
9684
}
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
9986
for (var g = i; g < i + tuple[state].bt1 - 1; g++) {
10087
var smit = [];
10188
for (var y = 0; y < n; y++) {
@@ -106,11 +93,9 @@ export default class Fcfs extends InputTable {
10693
que.push(smit);
10794
}
10895
i += tuple[state].bt1 - 1;
109-
11096
btco[state] = 1;
11197
total_bt[state] -= tuple[state].bt1 + tuple[state].io;
11298
} else {
113-
// if(i==3){console.log("fuck2");}
11499
for (var j = 0; j < tuple[state].bt2; j++) {
115100
final_ans.push(tuple[state].pid);
116101
}
@@ -125,41 +110,35 @@ export default class Fcfs extends InputTable {
125110
}
126111
i += tuple[state].bt2 - 1;
127112
total_bt[state] = 0;
128-
tuple[state].art = 100;
113+
tuple[state].art = 100000;
129114
}
130115
}
131116
}
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
137121
for (var i = 0; i < tuple.length; i++) {
138122
cmp_time[i] = -1;
139123
}
140124
for (var i = final_ans.length - 1; i >= 0; i--) {
141-
// console.log(final_ans[i]);
142125
if (final_ans[i] === "/") {
143126
} else {
144127
if (cmp_time[final_ans[i] - 1] == -1) {
145128
cmp_time[final_ans[i] - 1] = i + 1;
146129
}
147130
}
148131
}
149-
150-
var wt = [];
151-
152132
for (var i = 0; i < n; i++) {
153133
tat[i] = cmp_time[i] - artt[i];
154-
155134
wt[i] = tat[i] - total_btt[i];
156135
}
157136
for (var i = 0; i < n; i++) {
158137
total_wt = total_wt + wt[i];
159138
total_tat = total_tat + tat[i];
160139
}
140+
console.log(total_wt / n + " " + total_tat / n);
161141
// console.log(total_wt/n + " " + total_tat/n);
162-
163142
// Changing Pid into string in final answer array
164143
for (var i = 0; i < final_ans.length; i++) {
165144
if (final_ans[i] != "/") {
@@ -183,25 +162,25 @@ export default class Fcfs extends InputTable {
183162
newState.ganntChartArray = final_ans;
184163
newState.gotAnswer = true;
185164
newState.isChartGenerated = false;
186-
this.setState({ newState });
165+
this.setState({
166+
newState,
167+
});
187168
};
188169
getAnswer = (state) => {
189170
// console.log(state);
190171
if (state.isIoEnabled) {
191172
this.getIoEnabledAnswer(state);
192173
return;
193174
}
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 = [];
202176
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+
];*/
205184
var n = state.tableData.length;
206185
for (let i = 0; i < n; i++) {
207186
var tempPid = state.tableData[i][0].substring(1);
@@ -213,43 +192,29 @@ export default class Fcfs extends InputTable {
213192
});
214193
// console.log(tuple);
215194
}
216-
tuple_temp = tuple;
195+
var tuple_temp = tuple;
217196
tuple.sort(function (a, b) {
218197
if (a.art == b.art) {
219198
return a.bt - b.bt;
220199
}
221200
return a.art - b.art;
222201
});
223202
tuple.sort();
224-
225203
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
242209
var visited = [];
243210
for (var i = 0; i < tuple.length; i++) {
244211
visited[i] = 0;
245212
}
246-
var que = [];
213+
var que = []; // running queue
247214
var state = 0;
248215
var flag = 0;
249-
var count = 0;
250-
for (var i = 0; i < 50; i++) {
216+
for (var i = 0; i < 10000; i++) {
251217
visited[state]++;
252-
253218
if (tuple[state].art > i) {
254219
final_ans.push("/");
255220
var smit = [];
@@ -266,7 +231,6 @@ export default class Fcfs extends InputTable {
266231
}
267232
var mx = 10000;
268233
var ind = 0;
269-
270234
for (var j = 0; j < tuple.length; j++) {
271235
if (
272236
tuple[j].art <= tuple[state].art + tuple[state].bt &&
@@ -278,11 +242,8 @@ export default class Fcfs extends InputTable {
278242
}
279243
}
280244
}
281-
282-
// console.log(state + " " + visited[state] + " " + tuple[state].bt + " " );
283245
for (var k = i; k < i + tuple[state].bt; k++) {
284246
var smit = [];
285-
count++;
286247
for (var y = 0; y < n; y++) {
287248
if (tuple[y].art <= k && visited[y] <= 1) {
288249
smit.push(tuple[y].pid);
@@ -296,29 +257,20 @@ export default class Fcfs extends InputTable {
296257
}
297258
}
298259
}
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
304261
for (var i = 0; i < tuple.length; i++) {
305262
cmp_time[i] = -1;
306263
}
307264
for (var i = final_ans.length - 1; i >= 0; i--) {
308-
// console.log(final_ans[i]);
309265
if (final_ans[i] === "/") {
310266
} else {
311267
if (cmp_time[final_ans[i] - 1] == -1) {
312268
cmp_time[final_ans[i] - 1] = i + 1;
313269
}
314270
}
315271
}
316-
317-
var wt = [];
318-
319272
for (var i = 0; i < n; i++) {
320273
tat[i] = cmp_time[i] - tuple_temp[i].art;
321-
322274
wt[i] = tat[i] - tuple[i].bt;
323275
}
324276
for (var i = 0; i < n; i++) {
@@ -353,7 +305,9 @@ export default class Fcfs extends InputTable {
353305
newState.gotAnswer = true;
354306
newState.isChartGenerated = false;
355307
// console.log(state);
356-
this.setState({ newState });
308+
this.setState({
309+
newState,
310+
});
357311
};
358312
render() {
359313
if (
@@ -377,4 +331,4 @@ export default class Fcfs extends InputTable {
377331
);
378332
}
379333
}
380-
}
334+
}

0 commit comments

Comments
 (0)