簡単な質問です。シングルタスクシステムでは、OSはsmtをメモリにコピーしてから、どこかに「移動」し、プログラムは後でタスクマネージャに制御を戻します。しかし、マルチタスクOSでは、プロセス内でいくつかの手順を実行してから、タスクマネージャーに戻って自分の順番を待ちます。「goto」と「ret」を使用せずに「タスクマネージャに移動するにはどうすればよいですか?」
(頭に浮かぶ唯一のこと-CPUの奇妙な中断のような'have made one instruction'
)
簡単な質問です。シングルタスクシステムでは、OSはsmtをメモリにコピーしてから、どこかに「移動」し、プログラムは後でタスクマネージャに制御を戻します。しかし、マルチタスクOSでは、プロセス内でいくつかの手順を実行してから、タスクマネージャーに戻って自分の順番を待ちます。「goto」と「ret」を使用せずに「タスクマネージャに移動するにはどうすればよいですか?」
(頭に浮かぶ唯一のこと-CPUの奇妙な中断のような'have made one instruction'
)
マルチタスクシステムには2つの主要なタイプがあります。協力的で先制的。
協調システムでは、各タスクに制御が与えられ、一定期間実行されることが期待されます。次に、自発的に制御をスケジューラに戻す必要があります。これは、スケジュールされた関数の実行から完了まで、またはyield()関数を呼び出すことによって行うことができます。降伏しないタスクを実行することにより、システムを無応答にすることができます。
プリエンプティブシステムでは、スケジューラーは、タイムスライスやタスクの優先順位を適用することで、実行するタスクとその期間を完全に制御します。強制自体は通常、一定のレートで割り込みを生成するシステムクロックによってトリガーされます。この特性のため、システムを無応答にすることはより困難ですが、優先順位の逆転またはリソースのデッドロックによって可能になります。