Open 2bitpng opened 3 months ago
Processクラスに必要な要素 プロセスID 投入時間 残りの処理時間 投入時間順でソートするCompair関数 残りの処理時間順でソートするCompair関数
preemptionの時間 現在処理しているプロセス 時間を進める関数(現在処理しているプロセスが終了するか、プリエンプションの時間が終了するまで プロセスを入れ替える関数(経過時間を0にすることに注意)現在持っているプロセスを返すのが良さそう ->最初nullじゃないか? ->すでに前の処理を使い切っている場合もあるのでnullを返して呼び出し元で処理するのが良さそう.
これはアルゴリズムごとに異なるのでいらないですね。 一つのQueueクラスを作成してそれを継承したら良いですね。 必要なメソッドプロセスをpushする処理 Queueの先頭からプロセスを取ってくる処理 Queueが空かどうかを判定する処理
これまで作成したクラスを集めてスケジューラーを作る ReadyQueueを用いて処理してやる 処理の流れ 初期化 プロセス一覧を受け取る(この時intimeでソートする) 処理 intimeが現在時刻の間プロセス一覧からReadyQueueに入れる同じ時間のものがあったらプロセスidが小さい順に入れていく 現在CPUで処理しているプロセスを一つ進める(CPUのプロセスが空の場合は新しいプロセスを入れる) CPUで処理中のプロセスがプリエンプションを使い切ったまたは、プロセスの処理が終わった時は現在のプロセスとReadyQeueの最初のプロセスを入れ替える処理を行う。 最初の処理に戻る。
そろそろテストを書きたいですね。 一旦テスト書きます。 FCFSのテストを書きたいです。 いくつかのテストケースを作って実際に動いているかどうかを確かめます。
SJFの作成をします。 SJFを普通に間違って覚えていそうなので頑張ります。
内部の処理であるスケジューリングアルゴリズムを実装する