リアルタイム性について坂井さんの以下に示したサイトをみれば理解が深まるわけですが、リンクはるだけでこのページ終わらすのもなんなんで内容を引用しつつ情報を整理したいと思います。
http://kozos.jp/kozos/kozos26.html


■応答時間を見積もる手段
エアバッグ制御などは、衝突センサが衝突を検地してから、必ず一定時間内で処理を開始する必要があります。このような時間保証が行えるかどうかを、OSのリアルタイム性といいます。

また、「ある入力を与えたときに,応答までにかかる時間が見積もれる」という言い換えもできるようです。


(坂井さんサイトの記述引用)
まあまずよく言われることなのだけど,「リアルタイム = 軽くて速い」 ということではない.まあたいていのリアルタイムOSは軽くて速いのだけど, 軽くて速いOSをリアルタイムOSというわけではない. たとえ高速でもリアルタイム性の無いOSもあれば, 低速だがリアルタイム性のあるOSもある.
リアルタイム性というのは,正確には, 応答時間を見積もるための手段をOSが提供していて, アプリを気をつけて書くならば,応答時間を*必ず*確保できる, ということだ.




■OSにどんな見積もる手段があるんだ?
またOSの上で動作するサービス(スレッド)にリアルタイム性を提供するOSをリアルタイムOSと呼びます。

それでOSとしてはどんな工夫するのというところですが、リアルタイム性を考えるとき、スレッドに優先度というパラメータを設けて複数のスレッドが動作可能になっているときに、どちらが優先して動作するのかの選択を実施するロジックを設けたいからだということで本章の実装テーマになっています。

優先度の高いスレッドは優先度の低いスレッドに割り込んで動作することが可能になり、リアルタイム性が確保できますとある。

逆にいえば、自身の優先度よりも優先度の高いスレッドが動作可能になっている際には、そのスレッドのリアルタイム性は保証できないということだ。

CPUは1つの場合、同時に実施できるスレッドは常に1つであるのも「優先度」をもうける背景として認識しておいたほうがよさそうだ。

(★感想★)
本当に優先度設けるだけでリアルタイム性確保できるの?というとそうではないとおもうが強力な観点には違いない。

今もっている情報の範囲だけからいうと、僕的にはリアルタイムOSは、リアルタイム性を実現するための処理の1つの工夫としてスレッドに優先度を設けて先に処理を実施させるスレッドを決める仕組みを提供しているに過ぎないのではないのかなぁと思ってしまう。

たしかスレッドのサービスをある一定時間以内に収めるように記述するとか聞いたことあるが、あれもあんまりあてにならんのだよなぁ。

だってCPUが処理する速度が遅ければそれである一定時間以内に収めるなんていう保証なんてできないし。

だから当たり前だけどOSがどうのこうので議論するのと一緒に前提となるハード条件やアプリ記載の条件も認識した上でリアルタイム性を話さなくてはいけないのではないのかなぁ。(当たり前すぎてハード条件は持ち出さないのかなぁ)

また、リアルタイム性を求めるスレッド(サービス)が一気に何個も出てくる可能性があるなら、本当に時間保証できるの?というところだよなぁ。処理できるCPUは同時に1つしか処理できないわけだし。



■汎用OSのリアルタイム性?(マッピング切替は時間が食うよを坂井さんコメント引用しました)
また組み込み機器では,メモリを保護する必要はさほど無い. というよりリアルタイム性が求められることも多いため, むしろ仮想メモリを使うべきではない,ということも多い (仮想メモリを実装せずに,局所的にメモリ保護を行う場合は多いが, この場合はタスク単位でメモリが保護されるわけではない). これは仮想メモリのマッピング切替えに時間がかかるということもあるが, ページングによりリアルタイム性がまったく確保できなくなる,という理由が大きい.
本と同様こちらもかなり読み応えあります。
http://kozos.jp/kozos/kozos25.html

#「。」で文章が終わっているのが私の記述で、「.」で終わっているのが坂井さんの引用記述です。

OSはOSでも汎用OSと組み込みOSと分類されているが、その分類のよりどころとは一体なんなのか?
その理解がスケジューリングの意味と密接に結びついてきます。

■汎用OS

汎用OSに求められる動作や前提は以下で、「アプリを信用しない」という性悪説を採用しています。

①アプリが重い処理に入ってCPUを食い続けたとしても,適当なタイミングで OSが他のアプリに処理を渡す. (でないとその1アプリのせいで,他のアプリ全体が固まることになる)
②アプリがバグでNULLポインタアクセスとかゼロ除算とかしても, そのアプリだけが落ちて,他のアプリは動作を継続する.
③アプリは別のアプリが使っているメモリ領域を読み書きできない.

この場合,アプリは優先度なしに,全部が同じ優先度で公平に(時分割で)動いてほしい.そしてメモリの保護は,仮想メモリという考えになり, 各タスクはプロセス単位でそれぞれの独立した仮想メモリ上で動作する, という思想につながるとのことです。
ユーザがアプリを好きにインストールして使う
→誰が何をインストールするかわからないので,どんなおかしな アプリやモラルのないアプリをインストールされても,OSがうまく 資源配分して,全てがそこそこ動いてほしい.


■組み込みOS

組み込みOSに求められている動作や前提は以下で、「アプリを信用する」という性善説を採用しています。

①ユーザがアプリをインストールすることはなく何をインストールするかは開発元できちんと管理できるので, システム全体を通してのチューニングが可能.
②全アプリをインストール済みの状態で出荷され,追加インストール されることはない. おかしな動作をするアプリがあった場合には, そのアプリのバグを開発元で修正してから出荷するべきなので, バグがあってもOSがそこそこうまく動かしてくれるような必要は無い.

紹介サイトありました。
http://monoist.atmarkit.co.jp/mn/articles/1103/31/news004.html