ディスパッチ
読み:ディスパッチ
外語:dispatch
マルチタスクOSやマルチスレッドOSなどにおいて、あるタスクまたはスレッドに実行権を渡すこと。タスク切り替え、スレッド切り換え。
概要
CPUの一つのプロセッサーコアは、同時に一つの処理しか実行できない。
そこで、処理をタスクやスレッドという単位に分け、それらを順番に切り換えて順にCPUの計算能力を割り与え、時分割で実行していくことになる。
この時、タスクやスレッドを切り替えて(タスクスイッチ)、実行状態に遷移させCPU能力を割り当てることを、「ディスパッチ」あるいは「タスク切り替え」や「スレッド切り換え」といい、タスクを切り替える処理をする機構を(タスク)ディスパッチャーという。
逆に、実行状態から実行可能状態に戻すことをプリエンプションまたはプリエンプトという。
特徴
切り換えのタイミング
タスクやスレッドを切り換えるタイミングは、大きく二種類がある。
切り替えのためのシステムコール等を呼ぶことで切り換えるのが前者で、外部からの割り込みによって随意に切り替えが発生するのが後者である。
後者のようなマルチタスクをプリエンプティブマルチタスクといい、オペレーティングシステム(OS)とアプリケーションの双方が対応していなければならない。Microsoft Windowsであれば、95以降およびNT以降で対応している。
作成
タスクあるいはスレッドの作成方法はOSごとに様々だが、CやC++では、一つの関数をタスクやスレッドとみなし、システムコールで作成することが多い。
Microsoft Windowsの場合はCreateThread()システムコール、UNIX互換OSではpthread_create()システムコール、μITRONならcre_tsk()システムコールやCRE_TSK()静的APIが使われる。
μITRONの場合、組み込み用のOSということもあり特徴的な機能を幾つか持っている。初期優先度を設定できる、スタックサイズを設定できる、などは、リアルタイムOSであることや、組み込み環境といったニッチな需要に対応する機能と言える。
再検索