1

スケジューラは現在、ラウンド ロビンを使用してスケジュールを設定しています。各プロセスのユーザー時間とシステム時間にアクセスできます。

HEAD のユーザー時間

rdy_head[USER_Q]->user_time

HEAD のシステム時間

rdy_head[USER_Q]->user_time

IO バウンド プロセスを優先する必要がありますが、CPU バウンド プロセスを完全に枯渇させることはできません。

何か案は?

/*===========================================================================*
 *              sched                        * 
 *===========================================================================*/
PRIVATE void sched()
{
/* The current process has run too long.  If another low priority (user)
 * process is runnable, put the current process on the end of the user queue,
 * possibly promoting another user to head of the queue.
 */

  if (rdy_head[USER_Q] == NIL_PROC) return;

  /* One or more user processes queued. */
  rdy_tail[USER_Q]->p_nextready = rdy_head[USER_Q];
  rdy_tail[USER_Q] = rdy_head[USER_Q];
  rdy_head[USER_Q] = rdy_head[USER_Q]->p_nextready;
  rdy_tail[USER_Q]->p_nextready = NIL_PROC;

  pick_proc();

}
4

0 に答える 0