• ベストアンサー

マルチタスクOSとCPUについて

マルチタスクOSとしてITRONをよく聞きます。 マルチタスクOS(ITRONに限らず)を動作させるCPUは、マルチタスクに対応した何らかの仕組みを搭載したCPUでないと動作させることができないのでしょうか。 ノンプリエンプティブ方式だったらどんなCPUでも実現可能である、とかプリエンプティブ方式はCPUにこういった仕組みが搭載されていないと実現不可能とか(その逆とか)。 どんなCPUでも実現可能だが、CPUがこういう仕組みを搭載しているとオーバーヘッドが小さい(効率がいい)等を知りたいです。 よろしくお願いします。

  • elec2
  • お礼率61% (105/171)

質問者が選んだベストアンサー

  • ベストアンサー
  • akr
  • ベストアンサー率18% (32/173)
回答No.5

No.4で回答した者です ドライバ等の割り込みは、優先度を下げておけば良いです。 具体的には、割り込みコントローラを使って、割り込みの優先度を予め設定しておけば、タスクの切り替え処理が終わった後に、ドライバの割り込み処理を行うのでように出来ます。

elec2
質問者

お礼

何度もお付き合いいただいてありがとうございました。 おかげで、考えるきっかけと言いますか、何を考えなければいけないのかが少し見えてきたような気がします。 今後、色々な文献を読んで理解を深めていきたいと思います。 ありがとうございました。

その他の回答 (4)

  • akr
  • ベストアンサー率18% (32/173)
回答No.4

No.2で回答した者です > 総じて、 > タスクスケジューリング機能だけであれば、CPUに特別な機能は必要ない。 > タスクごとのメモリ保護機能も考えるのであれば、その機能を搭載したCPUでなければならない。 タスクスケジュールをタイムスライスで行うのであれば、割り込み処理が行えればよいので、CPUに特別の機能は要りません(別途タイマーは必要です)。 メモリ保護については、CPUにそういった機能があれば便利ですが、特に機能がなくても実現は可能です。 例えば、MMUでメモリバンクを切り替える等すれば、メモリの保護が出来ます。また、もっと原始的に、開発時にタスク毎に使用可能なメモリ領域を決めおけば、けっこう何とかなっちゃいますよ。 で、最初の質問に戻って、CPUに何か特別な機能が必要か否かという問いに対しては、必要ないです。

elec2
質問者

補足

たびたび、ありがとうございます。 イメージが掴めてきました。 もう一つ、質問させていただいてよろしいでしょうか。 >タスクスケジュールをタイムスライスで行うのであれば、割り込み処理が行えればよいので、CPUに特別の機能は要りません(別途タイマーは必要です)。 の部分で、割り込み時にHWドライバー等が割り込みの禁止・許可を頻繁に行う場面が多いと思うのですが、タイマー割り込みとの関係といいますか、割り込み禁止した状態でスケジューリングが崩れないようにする方法、機能等との関係はどうなりますでしょうか。

回答No.3

質問を読んで行くとどんどん質問内容自体が変わって行ってますね。 > マルチタスク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 レジスタウィンドウを持っているとプロセス切り替えのオーバヘッドが非常に小さくなりマルチプロセスで効率が良い。

elec2
質問者

補足

色々とご助言、ありがとうございます。 紹介していただいたHP、大変参考になりました。 もう少し、自身の状況を書けばよかったですね。 現在、組込み関係の仕事に携わっています。 パソコン等で使用されているような高機能なCPUは使えません。 しかし「これだけの機能を実現するためにはそれなりのCPUが必要」と言う場面で、 マルチタスク、リアルタイム、を実現するためには「最低限CPUにどのような機能が備わっていないと実現できないのか」を知りたいです。 OSについてもiTRONを例に出しましたが他の選択もあります(極端な話、オリジナルのOSも)。 メモリー保護機能についても「各タスクが正しくメモリを管理する」のであれば必要ないような気もします。 しかし、プログラムを作るのは人間ですので、「もし万が一」を考えるとメモリー保護機能が「何かしらのアラート」を発する方がいいのではないかとも思います。 もっと言うと、マルチコアとかという話にもなってしまいます。 まずは、マルチタスク、リアルタイムを実現するうえで、CPUに必須の機能は何か、と言うところを知りたいと思っています。 そのような状況です。

  • akr
  • ベストアンサー率18% (32/173)
回答No.2

単にタスクの切り替えだけの話であれば、プリエンプティブ方式の場合はコンテキストスイッチをタイマー等の割り込みで行うので、割り込み制御が出来るCPUである必要があります。とはいっても、割り込み制御が出来ないCPUなんて私は知りません。 また、ノンプリエンプティブ方式の場合は、特に何が必要ってことも無いと思います。 マルチタスクのOSではタスク以外にメモリ空間を切り替える必要があるものがあります。μiTromの場合だとメモリ空間はどのタスクからでもアクセス可能なので、この機能は不要ですが、マルチプロセスのOSでは、タスク(プロセス)毎に独立したメモリ空間を持っているので、メモリを切り替える仕組みが必要です。これらの機能も今時のCPUなら持ってると思います。

elec2
質問者

補足

回答ありがとうございます。 >単にタスクの切り替えだけの話であれば、プリエンプティブ方式の場合はコンテキストスイッチをタイマー等の割り込みで行うので、割り込み制御が出来るCPUである必要があります。 と言うことは、現タスクのコンテキストの保存(退避領域)は通常のRAMでよくて、特に専用のメモリは必要ないという理解でよろしいでしょうか。 >また、ノンプリエンプティブ方式の場合は、特に何が必要ってことも無いと思います。 これは極端な話、NECのK0シリーズ等のどちらかと言うとチープなCPUでも可能と言う理解でよろしいでしょうか。 上記2点、タイマー割り込み機能さえあれば、プリエンプティブ方式のマルチタスクOSの実現が可能と言う理解でよろしいでしょうか。 >マルチタスクのOSではタスク以外にメモリ空間を切り替える必要があるものがあります。 タスク間のメモリ保護機能のことをおっしゃられていると推察します。 >μiTromの場合だとメモリ空間はどのタスクからでもアクセス可能なので、この機能は不要ですが、マルチプロセスのOSでは、タスク(プロセス)毎に独立したメモリ空間を持っているので、メモリを切り替える仕組みが必要です。 >これらの機能も今時のCPUなら持ってると思います。 総じて、 タスクスケジューリング機能だけであれば、CPUに特別な機能は必要ない。 タスクごとのメモリ保護機能も考えるのであれば、その機能を搭載したCPUでなければならない。 このような理解でよろしいでしょうか。 気づき等ございましたらフォロー頂けると助かります。

noname#158832
noname#158832
回答No.1

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英語版のみ対応、が必要です。 質問の内容とは、少々外れたかも知れませんが、ご参考までに!!!

elec2
質問者

お礼

回答ありがとうございます。 組込み系のCPUの機能的部分についての質問でした。

関連するQ&A

  • CPUで動作しているOSについての質問です。

    CPUで動作しているOSについての質問です。 OSの仕組みについてですが,CPUはメモリにアクセスをしてパソコン全体制御するパーツだと思っていました。 ですが,CPU上で動くOSという文章を見る機会が何回かあり,CPU上でもソフトウェアが動く?という疑問が生まれています。 CPUはメモリにアクセスしてメモリ上のソフトウェアを制御するだけではないのでしょうか?CPU上にも何らかのソフトウェアが存在しているのですか?

  • NT4.0へのCPU増設とOSでの認識について

    NT4.0SP6をP2-400シングルで動作させています。Dual対応マザーだったので、もう一つ同じCPUを入手し増設し、CPU-IDが2つ発行されている状態までは持っていったのですが、OSレベル(最初の青画面)ではマルチプロセッサを認識していません。 当然、OSの再インストール(または2000へのアップデート)が最善の道とはわかっているのですが、動作しているアプリケーションの関係上、できるならばOSの書き換えをさけたいと考えています。 OSの上から増設したCPUを認識させる手法がありましたらお教えください。

  • 64bitのOSとCPUについて

    こんにちは。 OSは現在、64bit版のWindows7を使っています。 よくx64という言葉を見かけますが、これはCPUのタイプが64bitであることを意味すると思うのですが、PCに最初からインストールされていたWindowsが64bit版だと、 PCに搭載されているCPUのタイプも64bitなのでしょうか?

  • CPUの交換について

    パソコンのCPUを交換したいと思っているのですが、このパソコンに対応する動作が快適になるようないいCPUがあったら教えてください。 IntelでもAMDでも結構です。 ちなみに、パソコンは、富士通FMV-BIBLO NF40Tです。 もともとの、搭載CPUはintel celeronM 410 1.46GHzです。 価格的には、intelとAMDではどちらが低価格なのでしょうか? それもよろしくお願いします。

  • CPUのビット数とOSのビット数の関係について

    本当に聞きたい事を整理するために基本的な事を確認させて下さい。 (1)32bitのCPUで32ビットOSは動作しますか?  (するとおもいますが敢えて聞きます。) (2)32bitのCPUで64ビットOSは動作しますか? (3)64bitのCPUで32ビットOSは動作しますか? (4)64bitのCPUで64ビットOSは動作しますか?  (するとおもいますが敢えて聞きます。) 因みにXeonプロセッサー E5506は何ビットのCPUですか?

  • デュアルコアCPU-PCとデュアルCPUマザーPCの違いは?

    デュアルコアCPU-PCとデュアルCPUマザーPCの違いは? 最近、デュアルコアCPUを1個搭載したPCと、CPUが2個搭載したPCと販売されてますが、どう違うのでしょうか? 後者は、ウイルスバスターなど、シングルプロセッサー用ウイルス対策ソフトが、動作不良となるので、CANON-NOD32とか、デュアルCPUや64ビット対応型ウイルス対策ソフトの導入が、不可欠ですが、前者は、普通のシングルプロセッサー用のアプリケーションで、動作するのでしょうか、シングル、デュアルの切り替え時期は、どう違うのでしょうか? いまいち、動作構造が、理解できません。CPUの役割分担について、詳しく書かれたURLを教えてください。

  • マルチコアCPUのコア割り当て

    マルチコアCPUのコア割り当て 基本的な質問ですが教えてください。 マルチコアCPUで実行コアの割り当てはどのように 振り分けているのでしょうか? (ハードは正常に動作している条件で) 勝手な想定では、 1)OS(ドライバ)が効率よく、振り分けを行う。 2)APLのコーディングにより明示的に振り分ける。 3)OSもAPLも特に意識なく、CPUが自立的に振り分ける。 のいずれかと思っていますが、実際はどのような動作を しているのでしょうか?

  • CPUの割込みについて

    CPUの割込みの仕組みと、周辺機器がCPUに対して割込みを発行した場合のCPUの動作の流れについてどうなるのか教えてください。

  • ビスタに必要なCPUは?

    OSのビスタが快適に動作するためにはCPUが最低でも1GB以上、理想は2GBが必要とのことですが、売っているパソコンはOSがビスタなのに1Gどころか500MB搭載の物まであります。メモリ増設すれば費用もかかりますし、悩んでいます。実際のところどうなのでしょうか、、。OSがビスタ搭載のパソコンを購入することは間違いないのですが、詳しい方からのアドバイスをお願いします。

  • CPUを2つ搭載するといいのですか??

    友達がサーバ(OSはWindows2000Serverらしい)を購入しようとしているのですが「CPUを2つ搭載しようかな・・」などと言っていました。CPUを複数搭載するとどんないいことがあるのでしょうか? 基本的かもしれませんが教えて下さい。