質問: 実時間処理の意味を教えてください。 自分の解釈では、コンピュータにデータを入力した瞬間に データの処理と計算がほぼ同時に進行すること、、、という ふうに思っていますが、曖昧でよくわかりません。 つまり、計算するまえになんらかのデータの生成という 過程があるということでしょうか? よろしくお願いします。
回答: どうも、2つの軸が混ざってる気がするんですが。 リアルタイムか否か、ということと、バッチ処理か 否かというのは、確かに無関係ではないですが、 別の軸じゃないですか? リアルタイムというのは、ぶっちゃけて言うと、 「じゅうぶんに速い」ってだけのことでしょう。 例えば、リアルタイムOSなんかでは、計測機器や 制御機器を制御するために、数10μ秒ごとに 機器からデータを取ったり機器に制御信号を 送ったりしないといけないわけで、そのために、 機器への入出力のための割り込みイベントが、必ず、 ある一定の時間ごとに実行されることを 保証します。この例では、リアルタイム(十分な 速さ)とは、「数10μ秒」であるわけです。 他の例として、私はソフトウェア関係の基礎研究を しているんですが、こういった分野でも、よく 「実時間でできる」とか言い方をします。これは、 「この技術をシステムに応用したときに、利用シーンから 考えて、なんとか待つことができる時間、現実的な時間」 といったような意味合いです。 例えば、現在ほどに検索エンジンが流行っていない時代に、 「100万件のデータベースから、1単語をキーにして 全文検索をするのに、たった3分で可能です!」というのは、 驚くべき実時間性だった、と言えるんじゃないでしょうか? 当然、現在では使い物にならない、即ち、非現実的、 実時間じゃない、ということになります。 これらの差は、上で言った、利用シーンの差であるわけです。 100万件/3分でも、例えば、研究者が過去の研究論文を検索する、 と言った利用シーンを想定すると、全く現実的な時間ですが、 現在のように、世界中の人がちょっとした調べものにも利用する、 というシーンを想定すると、到底、許容できない時間に なってしまうわけです。 実時間とは、機器制御だったり、文献調査であったり、趣味の ホームページを探すことだったり、という利用シーンに対して、 「じゅうぶんに速い」ことだ、という主張は、こういうこと だったわけです。 一方、 バッチ(オフライン)処理<->インタラクティブ(オンライン) 処理という軸は、その名の通り処理方式の差です。 たいていのプログラムは、入力→処理→出力という流れですが、 ユーザや環境からのデータ入力および結果出力が、処理と平行して (入力→処理→出力→ユーザの解釈・行動→次の入力→処理→...) 行われるのがオンライン、まず一旦、必要なデータをまとめて 入力して、処理して、最後に完全な出力を出す、というのが オフライン処理です。 前半のリアルタイム性と後半のインタラクティブ性が 無関係でない、と言ったのは、リアルタイムなバッチ処理、 というものはあり得るが、リアルタイムでない インタラクティブ処理というのは(ユーザに余程の忍耐を 強いない限り)あり得ないといったことから来ています。