質問: 初心者レベルでマルチタスクはどのように実装されていますか? マルチタスクはどのように基本レベルで実装されていますか?私の質問を明確にするために、たとえば、 `main()`を呼び出して、単一のコアプロセッサ上で一度に1つのタスクしか実行できないマルチタスクを実装するアプリケーションを作成するCランタイムが与えられているとします。この「mutlitasking」アプリケーションの機能。 標準のOSカーネルはこれをどのように実装していますか?これはマルチコアプロセッサでどのように変化しますか
回答: OSは割り込みタイマを設定し、プログラムを実行させます。タイマが満了すると、制御フローは、コンテキストスイッチのためにOSのコードにジャンプする。 コンテキストスイッチOSでは、現在のプロセスのレジスタおよびサポートデータを保存し、CPU内のそれをキュー内の次のプロセスのデータに置き換えます。次に、別の割り込みタイマーを設定し、割り込みが発生した場所から次のプログラムを実行させます。 また、現在のプロセスからのシステムコールは、コンテキストスイッチの時間であるかどうかを決定するためにOSに制御を与える(プロセスがIO操作を待っている) この仕組みはプログラムにとって透過的です。 実行します。スイッチ。繰り返す。 :)