- ベストアンサー
マルチタスクOSとCPUについて
マルチタスクOSとしてITRONをよく聞きます。 マルチタスクOS(ITRONに限らず)を動作させるCPUは、マルチタスクに対応した何らかの仕組みを搭載したCPUでないと動作させることができないのでしょうか。 ノンプリエンプティブ方式だったらどんなCPUでも実現可能である、とかプリエンプティブ方式はCPUにこういった仕組みが搭載されていないと実現不可能とか(その逆とか)。 どんなCPUでも実現可能だが、CPUがこういう仕組みを搭載しているとオーバーヘッドが小さい(効率がいい)等を知りたいです。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No.4で回答した者です ドライバ等の割り込みは、優先度を下げておけば良いです。 具体的には、割り込みコントローラを使って、割り込みの優先度を予め設定しておけば、タスクの切り替え処理が終わった後に、ドライバの割り込み処理を行うのでように出来ます。
その他の回答 (4)
- akr
- ベストアンサー率18% (32/173)
No.2で回答した者です > 総じて、 > タスクスケジューリング機能だけであれば、CPUに特別な機能は必要ない。 > タスクごとのメモリ保護機能も考えるのであれば、その機能を搭載したCPUでなければならない。 タスクスケジュールをタイムスライスで行うのであれば、割り込み処理が行えればよいので、CPUに特別の機能は要りません(別途タイマーは必要です)。 メモリ保護については、CPUにそういった機能があれば便利ですが、特に機能がなくても実現は可能です。 例えば、MMUでメモリバンクを切り替える等すれば、メモリの保護が出来ます。また、もっと原始的に、開発時にタスク毎に使用可能なメモリ領域を決めおけば、けっこう何とかなっちゃいますよ。 で、最初の質問に戻って、CPUに何か特別な機能が必要か否かという問いに対しては、必要ないです。
補足
たびたび、ありがとうございます。 イメージが掴めてきました。 もう一つ、質問させていただいてよろしいでしょうか。 >タスクスケジュールをタイムスライスで行うのであれば、割り込み処理が行えればよいので、CPUに特別の機能は要りません(別途タイマーは必要です)。 の部分で、割り込み時にHWドライバー等が割り込みの禁止・許可を頻繁に行う場面が多いと思うのですが、タイマー割り込みとの関係といいますか、割り込み禁止した状態でスケジューリングが崩れないようにする方法、機能等との関係はどうなりますでしょうか。
- saijyo_739
- ベストアンサー率53% (119/222)
質問を読んで行くとどんどん質問内容自体が変わって行ってますね。 > マルチタスクOS(ITRONに限らず)を動作させるCPUは、マルチタスクに対応した何らかの仕組みを搭載したCPUでないと動作させることができないのでしょうか。 マルチタスク自体はどんなCPUでも実現可能です。 > ノンプリエンプティブ方式だったらどんなCPUでも実現可能である、とかプリエンプティブ方式はCPUにこういった仕組みが搭載されていないと実現不可能とか(その逆とか)。 そういう話ではありませんが、WindowsNT(NT系のWIndows)やLinuxなどはメモリ保護,一般・特権プロセスなどの機能を使ってますのでそれらの機能を持ってなかったり機能が不十分なCPUでは動きません。 DOS/Windowsは286以前のCPUでも動きましたが、WindowsNT,2000,XP,.....はIntel CPUでいうと386以上のCPUでないと動かなくなりました。仮想記憶を使うUNIX系のOSは386以上を要求するものが多いし、そうでなくても386以上のCPUで性能が飛躍的に高まる事が多いです。 ※昔はメモリマネージメント機能を持たないCPUで外付けのメモリマネジメント回路・チップで仮想記憶を実現する事もありました。 http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%97%E3%83%AD%E3%83%86%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3 http://ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3%E8%A8%98%E6%86%B6 > どんなCPUでも実現可能だが、CPUがこういう仕組みを搭載しているとオーバーヘッドが小さい(効率がいい)等を知りたいです。 http://ja.wikipedia.org/wiki/%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%83%BB%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6 レジスタウィンドウを持っているとプロセス切り替えのオーバヘッドが非常に小さくなりマルチプロセスで効率が良い。
補足
色々とご助言、ありがとうございます。 紹介していただいたHP、大変参考になりました。 もう少し、自身の状況を書けばよかったですね。 現在、組込み関係の仕事に携わっています。 パソコン等で使用されているような高機能なCPUは使えません。 しかし「これだけの機能を実現するためにはそれなりのCPUが必要」と言う場面で、 マルチタスク、リアルタイム、を実現するためには「最低限CPUにどのような機能が備わっていないと実現できないのか」を知りたいです。 OSについてもiTRONを例に出しましたが他の選択もあります(極端な話、オリジナルのOSも)。 メモリー保護機能についても「各タスクが正しくメモリを管理する」のであれば必要ないような気もします。 しかし、プログラムを作るのは人間ですので、「もし万が一」を考えるとメモリー保護機能が「何かしらのアラート」を発する方がいいのではないかとも思います。 もっと言うと、マルチコアとかという話にもなってしまいます。 まずは、マルチタスク、リアルタイムを実現するうえで、CPUに必須の機能は何か、と言うところを知りたいと思っています。 そのような状況です。
- akr
- ベストアンサー率18% (32/173)
単にタスクの切り替えだけの話であれば、プリエンプティブ方式の場合はコンテキストスイッチをタイマー等の割り込みで行うので、割り込み制御が出来るCPUである必要があります。とはいっても、割り込み制御が出来ないCPUなんて私は知りません。 また、ノンプリエンプティブ方式の場合は、特に何が必要ってことも無いと思います。 マルチタスクのOSではタスク以外にメモリ空間を切り替える必要があるものがあります。μiTromの場合だとメモリ空間はどのタスクからでもアクセス可能なので、この機能は不要ですが、マルチプロセスのOSでは、タスク(プロセス)毎に独立したメモリ空間を持っているので、メモリを切り替える仕組みが必要です。これらの機能も今時のCPUなら持ってると思います。
補足
回答ありがとうございます。 >単にタスクの切り替えだけの話であれば、プリエンプティブ方式の場合はコンテキストスイッチをタイマー等の割り込みで行うので、割り込み制御が出来るCPUである必要があります。 と言うことは、現タスクのコンテキストの保存(退避領域)は通常のRAMでよくて、特に専用のメモリは必要ないという理解でよろしいでしょうか。 >また、ノンプリエンプティブ方式の場合は、特に何が必要ってことも無いと思います。 これは極端な話、NECのK0シリーズ等のどちらかと言うとチープなCPUでも可能と言う理解でよろしいでしょうか。 上記2点、タイマー割り込み機能さえあれば、プリエンプティブ方式のマルチタスクOSの実現が可能と言う理解でよろしいでしょうか。 >マルチタスクのOSではタスク以外にメモリ空間を切り替える必要があるものがあります。 タスク間のメモリ保護機能のことをおっしゃられていると推察します。 >μiTromの場合だとメモリ空間はどのタスクからでもアクセス可能なので、この機能は不要ですが、マルチプロセスのOSでは、タスク(プロセス)毎に独立したメモリ空間を持っているので、メモリを切り替える仕組みが必要です。 >これらの機能も今時のCPUなら持ってると思います。 総じて、 タスクスケジューリング機能だけであれば、CPUに特別な機能は必要ない。 タスクごとのメモリ保護機能も考えるのであれば、その機能を搭載したCPUでなければならない。 このような理解でよろしいでしょうか。 気づき等ございましたらフォロー頂けると助かります。
CPU自体は販売されている物より他の物は存在しません。 ただし、種類は色々有ります。どれが良いのかは解りません? 申し訳ありません、ご自分で調べましょう! Window、Linux環境において、NVIDIA Quadro SLI マルチOSサポートと言う機能があります。 Intel 5520チップセットとXeon5500シリーズor5600シリーズと2WaySLI環境が必要に成ります。 *Windows7はこれからの対応です* OSはXP Pro SP-2かVista Ultimate SP-1かエンタープライズLinux5.3全て64ビットです。 仮想OS環境で2台のQuadroそれぞれ1台ずつにそれぞれのOSを割り当てる事により それぞれ別の3Dグラフィック処理が可能と言う物に成ります。 つまりPC2台分の処理が、1台で可能に成ります! ただしこれにはParallels Workstation 4.0 Extreme英語版のみ対応、が必要です。 質問の内容とは、少々外れたかも知れませんが、ご参考までに!!!
お礼
回答ありがとうございます。 組込み系のCPUの機能的部分についての質問でした。
お礼
何度もお付き合いいただいてありがとうございました。 おかげで、考えるきっかけと言いますか、何を考えなければいけないのかが少し見えてきたような気がします。 今後、色々な文献を読んで理解を深めていきたいと思います。 ありがとうございました。