• 締切済み

リアルタイムOS

リアルタイムOSの「リアルタイム」の意味が今ひとつ分かりません。Message CueやTaskによる並列動作はリアルタイムOSの大きな利点ですが、このリアルタイムの意味自身が昔から疑問です。何かの本に「あるタスクを完了する時間が保証されている」とありましたが、タスクの負荷が重い部分や、割り込みが重なったりする最悪の事態などが生じると、このような保証をするのは難しいような気がします。このリアルタイム性について分かりやすい説明をお願いします。

  • zuntac
  • お礼率81% (307/377)

みんなの回答

  • epkakpe
  • ベストアンサー率43% (113/260)
回答No.1

はじめまして。  非リアルタイム系のOSでは、イベント・キューが発生した場合、他のタスク、たとえばファイル入出力や画面描画処理が走っていると、その処理が終わるまでイベントは待たされることがあります。  一方リアルタイムOSでは、ある決められた時間以内に(数10μsec~数10msec以内)確実にイベントハンドラが起動されることを保証するの機能があります。(タイマー割り込み処理プログラム)  また必要な処理時間の予測を行なう機能や、複数の処理要求が同時に発生した場合でも目的の時間内に完了させるための機構を備えています。  これは許容される時間内に、処理を確実に完了するのを目的にしています。 >タスクの負荷が重い部分や、割り込みが重なったりする最悪の事態などが生じると、このような保証をするのは難しいような気がします。  一般のOSを使用している場面を想定するとそういう疑問が出て当然です。しかし、リアルタイムOSは、ゲームや計測機器や工作機械の制御装置などの組み込み分野で利用されているものです。  つまり、ある程度のタスク発生の予想と処理速度がわかっている分野で使用されています。  逆にいうと、リアルタイムに(非常に高速に)イベントの処理を行なわなければならないような用途に向いているOSだといえます。

zuntac
質問者

お礼

回答ありがとうございます。(お礼が遅くなり申し訳ありません。)概念的には分かったように思います。あとは実際に使ってみて試してみたいと思ってます。 あと、この辺の技術を詳細に解説したような資料、書籍などを紹介していただくと助かります。

関連するQ&A

  • リアルタイムOSにおける「静的なタスク生成」とは?

    リアルタイムOSの特徴である「タスクの静的な生成」とはどういう意味でしょうか。 コンパイル時にタスクを生成することだそうですが、 ・「コンパイル時にタスクを生成」とは? ・汎用OSにおけるタスク生成と、どのように違うのか? ・そもそも「タスク生成」とは? 静的というと、「動かない=あらかじめ決められている」というイメージを持っていますが、正しいでしょうか。 ご教示お願いいたします。

  • Windowsのアプリ開発と、リアルタイムOSへの組込み開発、注意すべき点や特徴ってなんでしょう?

    若輩プログラマーです。 Windowsの業務アプリケーション(オープン、Web)開発と、リアルタイムOSへの組込み開発の経験があるのですが、いつも上位モジュール(アプリ層)の開発だったせいかそれぞれの特徴が良く分かりませんでした。 リアルタイムOSというと、割り込みがどうとか、タスクがどうとか、メモリがどうとか。。。でもこれって、Windowsアプリでも注意しないといけない点って同じですよね? そこでご質問です、 Windowsのアプリ開発と、リアルタイムOSへの組込み開発、注意すべき点や特徴ってなんでしょう?

  • windowsのリアルタイム処理について

    下記の不具合があり困っております。 画像入力ボードを開発し、数msごとに数kbの画像をwindowsのドライバへ取得割り込みをかけております。ドライバはそのデータを取り込みリングバッファに貯めていきます。アプリケーションはそのリングバッファのデータをリングバッファがあふれないように定期的に取り込み、画像認識しながら画面に表示します。このときパソコンに他のアプリが走ったときに画像が乱れます。このときCPU負荷率は80%程度になっておりリングバッファから抜いたデータが異常になっております。ドライバがPCIの割り込みに応答して画像データを取得しリングバッファを更新するのがまずいように思います。 アプリケーションがドライバから受け取ったデータを検証すると異常なデータが入っていることからドライバの動作がおかしいことまではわかりました。 そもそもリアルタイム処理に無理があるのでしょうか? 何か良い対策はないでしょうか?もちろんCPU負荷率が小さいときは正常に稼働しています。

  • タスクやプロセス管理について

    このカテゴリでよいか迷ったのですが質問させていただきます。 私は今までの仕事で、某セキュリティ会社の防犯監視システム開発、某携帯電話開発(UI)に携わってきました。 そこではリアルタイムOSマルチタスク環境でのプログラム開発だったのですが、マルチタスクといっても当然タスク毎に"実行可能状態"、"待ち状態"、"実行中状態"等(その他いろいろ)、各種状態を持ち、タスクプライオリティに従いOSがタスクのスケジューリングを行い順次タスクが切り替わって制御されているという感じだったのですが(何が言いたいかというと優先順位の違う複数のタスクが並列で動くことはないですよね?と言いたいのですが)、 今回LinuxOS(MontaVista)でのプログラム開発を行ってみて違いに戸惑いを感じました。(マルチ)プロセスとは何ぞや?から始まり、さらにそのプロセス内で作成されるスレッド、そのプロセス・スレッドは他のプロセス・スレッドと並列で動く等等。(正確にはあたかも同時に動作しているかのように見えるってことですよね?) 前半の"タスク"と後半の"プロセス"とはこのように別物なのですよね? 今までの経験では並列動作という概念が無かったもので、どうもしっくりこなく意見をあおぐ為投稿させていただきました。 かなり漠然としたことで恐縮なのですが、今まで述べたことでなにか勘違いしているんじゃないかとか間違えていることとかありますか? 長文となり申し訳ありません。

  • 対応OS

    よくフリーソフトをインストールする際に、「対応OS XP Vista」などと記してありますが、 これは単に、これ以外では動作を保証しない ということだけでしょうか? それとも、これ以外の使用ではPCに支障をきたす という意味も含まれているのでしょうか? 現在、対応OS XP以上のフリーソフトを、Windows 2000 で使用していて、 特に何の問題もなく動作していますが、使いつづけていいものか迷っています。 以上の点について、ご経験なども含め、よろしくご回答のほどお願いいたします。

  • irqbalance って

    Linux-OSでのマルチコア環境で割込み処理の負荷分散を行う、irqbalanceデーモンについておしえてください。 CPU00,01,02,03と4コアで動作してるシステムなんですが、なぜかソフトウェア割込みが特定のCPUにのみ割り込まれちゃいます。 /proc/interruptsを秒間でのぞいてもCPU03だけガシガシとカウントアップされ、まったくもって負荷分散してくれません。 irqbalanceデーモンってどんなロジックで割込みの負荷分散を実現してるのでしょうか? また、ネットでいろいろ調べると[irqbalanceのOneShotモード]という言葉を見かけます。 一回、分散させてあとは張り付き、みたいなことかかれてるのですが、このモードが有効になってるということでしょうか。。。 このirqbalanceデーモンがこのOneShotモードで動いてるのかどうか、を知るにはドコを確認すればよいでしょうか?? 詳しいかた、教えていただけるとうれしいです。

  • Virtual PC 2004 上でゲストOSが不安定・・・

    もしも同じような症状を経験された方がいらっしゃいましたらご教示ください。 下記のような環境を構築しています。 ホストOS:WindowsXP pro(SP2)-Pen4 3.0GHz(HT)、2048MB Virtual PC 2004(SP1適用) ゲストOS(1):WindowsXP pro(SP2) ゲストOS(2):Windows2000(SP4、IISを追加) ゲストOS(3):Windows98 ゲストOSのインストールはスムーズに完了し、初期の動作確認も特に問題ありませんでした。 その後にウィルス対策のために、XPには avast! 4 、2000には以前から持っていた Norton AntiVirus 2004 を導入しました。 すると途端にゲストOSの動作が重くなり、起動直後から限りなく固まるようになりました。 ゲストOS側はタスクマネージャーも起動しないぐらいで、辛うじて起動すると延々100%近くの 負荷が表示されます。 ホストOS側はHTの片側に延々と負荷がかかっていますが、全体では数十%の使用率で推移しています。 1)Virtual PC の設定 CPUの割当に関する設定(?)をイジってみましたが、特に変化はありません。 他に特に凝った設定は無いように見られますが、何か設定項目があるのでしょうか? 2)RAMの割当 インストール時にRAMの割当が聞かれますが、余裕を持って多めに設定しています(例:【推奨】128MB→256MB)。 ただ「何となく」ではあるのですが、推奨値でインストールした時の方がゲストOSの動作がスムーズなように 思われるのですが、影響あるのでしょうか? 3)ウィルス・セキュリティ対策 ホストOS上で動作しているとはいえ、ネットワーク上では独立したOSとして動作しているわけですから、 対策は必要ですよね?効率的な対策方法ってあるんでしょうか?

  • OSの再インストール

    WINDOWS XP SP2 のディスクを使用して OSの再インストールをしているのですが、その最中に acelpdec.axをコピーできません 再思考するには、Enterキーを押してください。 CDからインストールする場合は、Windows XP CDがCD-ROMドライブ に挿入されていることを確認してください。 ・このファイルをスキップするには、Escキーを押してください。 警告:このファイルをスキップした場合、セットアップの完了、および    Windowsの正常な動作は保証されません と表示されます。 Enterを押しても何も動作はしませんでした ESCを押すしかないのでしょうか? 無視していいものなのか他に何か方法があるのでしょうか? 教えてください、よろしくお願いします。

  • RAMメモリーの認識

    富士通のちょっと古いPCですがFMV-ME4-535にOS Win2000 で動作させています メモリーが256MBを2枚入れて512MBでPCも512MBで認識しているのですが、 タスクマネージャーで見ると、利用可能の所が約366MBと成っています。 そのためCPU負荷率が頻繁に100%となるのですが、何処を触れば良いのでしょうか。

  • opera 「開かない 読みこまない 重い」

     operaの11.64を使用していたのですが、突然不具合が出るようになりました。  具体的には、最初にoperaを開くまでは問題ないのですが、数分たつとページを「開けない」「更新できない」状態におちいります。  更新しても画面は更新されず真っ白な画面になり、画像を開こうとしても新しいタブが出るだけで開けません。  その後、動作全体が重くなり、最悪何の警告もないままoperaがダウン、再起動になります。  時たま、運良くページが開けることもありますが、その場合画像は表示されず、動画はクラッシュまたは表示されません。  operaを再起動しても、PCを再起動しても、同じことの繰り返しになってしまいます。  PC側の問題かとも思ったのですが、別のブラウザ(Firefox等)では問題なかったので、やはりoperaが原因かと思われます。  設定フォルダの削除を行っても改善されず、最終的にoperaを再インストールしました(その際、最新版の12.02を使いました)。  当初問題なく機能していたのですが、しらばくしてPC再起動、再度operaを開いたところ、また同じような事態が多発しました。  これは12.02が問題なのか(負荷のかかりやすい仕様?)、それとも根本的な解決がされていないのか、ちょっと判断がつきませんでした。  タスクマネージャを開くとCPU使用率が50~100(だいたい70%前後)で、かなり負荷がかかっているようだったので、icons、vps等のフォルダ内を削除したのですが、やはり動作は重く、回復しません。  タブは10個以上あり、それが負荷の原因なのかとも思ったのですが、以前は20個ほど開いていても問題なく機能(たとえ開き始めは重くとも、ページの読み込みが完了すれば通常の状態に戻っていました)していたので、それも直接の原因ではないのかな、と思います。  同じような症状があるかと思い、検索してみたのですが見つからず、途方にくれています。  症状の改善、回復の手段を知っている方がいれば、是非とも教えていただきたいです。  どうか、よろしくお願いいたします。