1

私は XV6 を初めて使用するので、しばらくお待ちください :D . 新しいスケジューラーを作成したいのですが、それはマルチレベル フィードバック キュー (MLFQ) の 2 つのスケジューラーと宝くじスケジューラーの 2 つを組み合わせたものです。

基本的な考え方は単純です。最初にジョブを優先度の高いキューに入れる 2 レベルのスケジューラを構築します。ジョブが最初のキューでタイム スライスを使用する場合は、それを優先度の低いキューに移動します。優先度の低いキューのジョブは、CPU を解放する前に 2 つのタイム スライスで実行する必要があります。キューに複数のジョブがある場合、各ジョブはチケットの数に比例して実行する必要があります。プロセスが持っているチケットが多いほど、より多くのプロセスが実行されます。タイム スライスごとに、無作為化された宝くじが宝くじの勝者を決定します。その勝利プロセスは、そのタイム スライスで実行されるプロセスです。

このスケジューラを実装するには、いくつかの新しいシステム コールが必要です。

最初は int settickets(int num) で、呼び出しプロセスのチケット数を設定します。デフォルトでは、各プロセスは 1 つのチケットを取得する必要があります。このルーチンを呼び出すと、プロセスが受け取るチケットの数を増やすことができるため、より高い割合の CPU サイクルを受け取ることができます。このルーチンは、成功した場合は 0 を返し、それ以外の場合は -1 を返します (たとえば、ユーザーが 1 未満の数値を渡した場合)。

2 つ目は int getpinfo(struct pstat *) です。このルーチンは、実行中の各プロセスに関する基本的な情報を返します。これには、実行するように選択された回数とそのプロセス ID、プロセスがどのキューにあるか (高いか低いか) が含まれます。

何か助けはありますか?助けてくれる任意のリンク。

4

0 に答える 0