協調的マルチタスク(ノンプリエンプティブマルチタスク)とは、一つのCPUで並行して複数の処理を進めるマルチタスクであり、オペレーティングシステム(OS)がタイマー割り込みなどでCPUの管理を行わず、実行されているプログラムが任意で実行権限を別プログラムに渡すことで処理が行われる方式のマルチタスクである。

動作原理 プリエンプティブマルチタスクではOSがCPUの割り込み機能を使い、一定時間ごとにプログラムを強制的に停止し、別のプログラムの実行を進めるのに対し、協調的マルチタスクではタイマー割り込みなどによる強制的な実行権限の譲渡などが行われず、実行されているプログラムが自主的に実行権限を返し、OSがまた別プログラムへの実行権限を渡すことによって処理が行われる。

利点と欠点

メリット プリエンプティブマルチタスクのようにOSからの強制的な割り込みが発生しないためタスク切り替え時に発生するオーバーヘッドが非常に小さく、安定した処理をすることが可能であり、一つのプログラムの処理が完了するまで別プログラムに実行権限が譲渡されないため、プログラムの実行順序の制御をすることが可能である。また、協調的マルチタスクを採用しているOSはCPUの制御が単純な方法で行われるため、OS自体の構造が簡素なものとなるに伴ってメモリ使用量や処理負荷を抑えることが可能である。これらの利点により、リアルタイム組み込み分野や、明確にタスクが管理されなければならない環境では重要な選択肢である。

デメリット 各プログラムの協調が前提として設計されているため、プログラムが正確なタイミングで制御を返すことができなかった場合、他プログラムの処理に遅延や停止などといったことが発生する。また、適切に作られていないプログラムなどが無限ループに陥った場合、そのプログラムはOSに処理権限を返すことができなくなるため、OS全体がフリーズして制御ができなくなる可能性がある。それに加えて、OSが各プログラムの処理を監視・強制停止などができないため、システム全体の安定性にも課題がある。

出典