ジョブ/プロセス、到着時間、バースト時間を指定して、javascriptを使用してosの最短ジョブファーストテクニックをシミュレートしようとしています:
このリンクをチェックしてください: Shortest Job First - Concept . 今、私は配列を持っています:
var arr = [
{
"job": "j4",
"at": 0,
"bt": 8
},
{
"job": "j2",
"at": 2,
"bt": 4
},
{
"job": "j3",
"at": 2,
"bt": 5
},
{
"job": "j5",
"at": 6,
"bt": 4
},
{
"job": "j1",
"at": 8,
"bt": 3
}
];
そして、プロセスのオブジェクトを含む新しい配列を作成したかったのです。.
例えば
[
{"job": "j4", "range" : "0-2"},
{"job": "j2", "range" : "2-6"},
{"job": "j5", "range" : "6-10"},
{"job": "j1", "range" : "10-13"},
{"job": "j3", "range" : "13-18"},
{"job": "j4", "range" : "18-24"}
]
だから私はそれをやろうとしましたが、私は非常に立ち往生しており、達成したいものにはほど遠いです。
for(i = 0; i < arr.length; i++) {
var temp = [];
for(j = arr[i].at; j < arr[i].bt; j++) {
var clone = arr.slice(0);
var arrived = clone.splice(0, i).filter(function( obj ) {
return obj.at == j;
});
var shorter = arr[i];
for(k = 0; k < arrived.length; k++) {
if(arrived[k].bt < arr[i].bt) {
shorter = arrived[k];
arr[i].bt - (j - arr[i].at);
}
}
if(shorter != arr[i]) {
j = arr[i].bt;
}
}
}
解決された場合、 EDIT は新しい配列値を実際の値に置き換えました
Time Process
0 j4(8)
1
2 j4(6), j2`(4), j3(5)
...
6 j4(6), j3(5), j5(4) ::: j2 done
7
8 j5`(2), j4(6), j3(5), j1(3)
9
10 ::: j5 done
...
13 ::: j1 done
...
18 ::: j3 done
...
24 ::: j4 done
so the new array will be
[
{"job": "j4", "range" : "0-2"},
{"job": "j2", "range" : "2-6"},
{"job": "j5", "range" : "6-10"},
{"job": "j1", "range" : "10-13"},
{"job": "j3", "range" : "13-18"},
{"job": "j4", "range" : "18-24"}
]