1 つの可能性 (おそらく良い方法ではありません) は、enqueue()
関数を変更することです。
PUBLIC void enqueue(register struct proc *rp)
{
/* Add 'rp' to one of the queues of runnable processes. This function is
* responsible for inserting a process into one of the scheduling queues.
* The mechanism is implemented here. The actual scheduling policy is
* defined in sched() and pick_proc().
*/
int q = rp->p_priority; /* scheduling queue to use */
を割り当てる代わりにrp->p_priority
、単に 0 を割り当てます。
int q = 0;
これにより、すべてのプロセスが単一のプライオリティ キュー (キュー番号 0) に入れられ、単一の FCFS システムが得られます。もちろん、それがenqueue()
プロセスをキューに追加する唯一の関数であると仮定しています。それが唯一のものである可能性は十分にありますが、確実にするには、Minix カーネルのほとんどを知っている必要があります。
その変更を行うと、複数のキューをサポートするために無駄なスペースが多すぎるかどうかを調査できます。存在する場合は、キュー宣言を適切に調整できます。キュー構造は、おそらくポインターの単なる配列です。したがって、使用可能なスペースの節約は大きくありません。
ただし、おそらく FCFS だけは必要ないことに注意してください。プライオリティ キューが存在するのには十分な理由があります。たとえば、割り込みハンドラは、SETI のために機能している数を処理するモンスターよりも迅速に処理する必要があります。つまり、何らかの優先順位を付ける必要があります。