私は最近、CPU とオペレーティング システムがどのように機能するかを学び始めましたが、マルチタスクを提供するオペレーティング システムを搭載したシングル CPU マシンの操作について少し混乱しています。
私のマシンに単一の CPU があると仮定すると、これは、常に 1 つのプロセスしか実行できないことを意味します。
ここで、オペレーティング システムが貴重な CPU 時間へのアクセスを制御するために使用するスケジューラもプロセスであるとしか考えられません。
したがって、このマシンでは、任意の時点でユーザー プロセスまたはスケジューリング システム プロセスのいずれかが実行されていますが、両方は実行されていません。
だからここに質問があります:
スケジューラーが CPU の制御を別のプロセスに譲った後、スケジューリング作業を行うために再び CPU 時間を再実行するにはどうすればよいでしょうか? つまり、現在実行中の特定のプロセスが CPU を解放しない場合、スケジューラ自体を再び実行して、適切なマルチタスクを保証するにはどうすればよいでしょうか?
これまでのところ、ユーザー プロセスがシステム コールを介して I/O 操作を要求した場合、システム コールでスケジューラに CPU 時間を再度割り当てることができると考えていました。しかし、これがこのように機能するかどうかさえわかりません。
一方、問題のユーザー プロセスが本質的に CPU バウンドである場合、この観点からすると、そのユーザー プロセスは永久に実行され、他のプロセスやスケジューラーの再実行さえ許可されません。
タイム スライス スケジューリングを想定すると、別のプロセスが実行されていないときに、スケジューラが別のプロセスの実行時間をスライスする方法がわかりません。
この点に関して、あなたが提供できる洞察や参考文献を本当に感謝しています。