リアルタイムオペレーティングシステム
マルチタスクシステムでは、複数のタスク間でデータやハードウェアリソースを共有するという問題に対処しなければならない。一般に2つのタスクが同時に同じデータや同じハードウェアリソースにアクセスすることは危険である(ここで「危険」と言うのは、タスクが複数のデータの集合体を更新中だった場合などに、結果の一貫性が保てず、予期しない結果を生じることを意味する。他のタスクがそのデータ集合体にアクセスするのは、更新が始まる前か更新を完了した後でなければならない)。これを解決する一般的方法として以下の3種類があげられる。
割り込みを一時的に不可(マスク)とする。
2値セマフォ。ロックあるいはミューテックスとも呼ぶ。
メッセージ渡し (Message Passing)
汎用OSではユーザープログラムが割り込みをマスクすることはできないのが一般的である。というのもCPUモードによってユーザーができることは限られているためである。最近のCPUは割り込みマスクのレジスタや命令をユーザーモードでアクセスできないようにしている。しかし、組み込みシステムやRTOSの多くはアプリケーションをカーネルモードで実行可能であり、システムコールを効率化したり、OSの介入なしで動作環境の制御ができるようになっている。
小規模のものは独自に実装されることが多いため、仕様もそれぞれ独自であることも多い。共通規格としては、主に日本を中心として普及しているITRON、欧州を中心とする車載用を主としたOSEKがある。
リアルタイムUNIXの標準として、POSIXのリアルタイム拡張POSIX 1003.1bがある。