1

簡単な質問です。シングルタスクシステムでは、OSはsmtをメモリにコピーしてから、どこかに「移動」し、プログラムは後でタスクマネージャに制御を戻します。しかし、マルチタスクOSでは、プロセス内でいくつかの手順を実行してから、タスクマネージャーに戻って自分の順番を待ちます。「goto」と「ret」を使用せずに「タスクマネージャに移動するにはどうすればよいですか?」

(頭に浮かぶ唯一のこと-CPUの奇妙な中断のような'have made one instruction'

4

1 に答える 1

3

マルチタスクシステムには2つの主要なタイプがあります。協力的で先制的。

協調システムでは、各タスクに制御が与えられ、一定期間実行されることが期待されます。次に、自発的に制御をスケジューラに戻す必要があります。これは、スケジュールされた関数の実行から完了まで、またはyield()関数を呼び出すことによって行うことができます。降伏しないタスクを実行することにより、システムを無応答にすることができます。

プリエンプティブシステムでは、スケジューラーは、タイムスライスやタスクの優先順位を適用することで、実行するタスクとその期間を完全に制御します。強制自体は通常、一定のレートで割り込みを生成するシステムクロックによってトリガーされます。この特性のため、システムを無応答にすることはより困難ですが、優先順位の逆転またはリソースのデッドロックによって可能になります。

于 2010-10-19T15:29:01.727 に答える