番基本的には、オペレーティング・システムでマルチスレッドを実現するための2つの基本的な方法があります。
1)Preemtiveマルチタスク
preemtiveマルチタスクでは、あなたのタスクスイッチをトリガするために、割り込みソースをUSWすることができます。ほとんどの場合、長時間実行されているタスクが実行され、他のハードウェアイベントが発生していない場合に、タイマーの内部でタスクが切り替わります。他のハードウェアイベントが発生した場合、ハードウェアイベントの処理を可能にするために優先順位の高いスレッドをブロックするタスクスイッチを行うこともできます。協調マルチタスクで
2)協調マルチタスク
システムコールが実行されるたびに、オペレーティングシステムは、スレッドを切り替えます。これは、アプリケーションが明示的にタスクスイッチ(Windows 3.11、古典的なMac OSなどの初期のマルチタスクシステムで使用されていた歩留まりなど)を明示的にトリガできる特別なシステムコールです。また、ユーザーモード内で完全に協調マルチタスキングを実装することもできます。
今日ほとんどのオペレーティングシステムは、ハイブリッドアプローチを取る - 彼らはハードウェアイベントに反応する(場合には、長時間実行スレッドがシステム・ルーチンを呼び出すことはありませんし、他のI/Oが、これはタイマーだろう起こりません)しかし、彼らはでタスクをも切り替えることができアプリケーションがシステムコールを実行したり、システムが提供するライブラリを呼び出すときには、協力的な方法です。
出典
2017-05-14 10:11:18
tsp