マルチタスクOSとしてITRONをよく聞きます。
マルチタスクOS(ITRONに限らず)を動作させるCPUは、マルチタスクに対応した何らかの仕組みを搭載したCPUでないと動作させることができないのでしょうか。
ノンプリエンプティブ方式だったらどんなCPUでも実現可能である、とかプリエンプティブ方式はCPUにこういった仕組みが搭載されていないと実現不可能とか(その逆とか)。
どんなCPUでも実現可能だが、CPUがこういう仕組みを搭載しているとオーバーヘッドが小さい(効率がいい)等を知りたいです。
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
No.4で回答した者です
ドライバ等の割り込みは、優先度を下げておけば良いです。
具体的には、割り込みコントローラを使って、割り込みの優先度を予め設定しておけば、タスクの切り替え処理が終わった後に、ドライバの割り込み処理を行うのでように出来ます。
何度もお付き合いいただいてありがとうございました。
おかげで、考えるきっかけと言いますか、何を考えなければいけないのかが少し見えてきたような気がします。
今後、色々な文献を読んで理解を深めていきたいと思います。
ありがとうございました。
No.4
- 回答日時:
No.2で回答した者です
> 総じて、
> タスクスケジューリング機能だけであれば、CPUに特別な機能は必要ない。
> タスクごとのメモリ保護機能も考えるのであれば、その機能を搭載したCPUでなければならない。
タスクスケジュールをタイムスライスで行うのであれば、割り込み処理が行えればよいので、CPUに特別の機能は要りません(別途タイマーは必要です)。
メモリ保護については、CPUにそういった機能があれば便利ですが、特に機能がなくても実現は可能です。
例えば、MMUでメモリバンクを切り替える等すれば、メモリの保護が出来ます。また、もっと原始的に、開発時にタスク毎に使用可能なメモリ領域を決めおけば、けっこう何とかなっちゃいますよ。
で、最初の質問に戻って、CPUに何か特別な機能が必要か否かという問いに対しては、必要ないです。
この回答への補足
たびたび、ありがとうございます。
イメージが掴めてきました。
もう一つ、質問させていただいてよろしいでしょうか。
>タスクスケジュールをタイムスライスで行うのであれば、割り込み処理が行えればよいので、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% …
http://ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3% …
> どんなCPUでも実現可能だが、CPUがこういう仕組みを搭載しているとオーバーヘッドが小さい(効率がいい)等を知りたいです。
http://ja.wikipedia.org/wiki/%E3%83%AC%E3%82%B8% …
レジスタウィンドウを持っているとプロセス切り替えのオーバヘッドが非常に小さくなりマルチプロセスで効率が良い。
この回答への補足
色々とご助言、ありがとうございます。
紹介していただいたHP、大変参考になりました。
もう少し、自身の状況を書けばよかったですね。
現在、組込み関係の仕事に携わっています。
パソコン等で使用されているような高機能なCPUは使えません。
しかし「これだけの機能を実現するためにはそれなりのCPUが必要」と言う場面で、
マルチタスク、リアルタイム、を実現するためには「最低限CPUにどのような機能が備わっていないと実現できないのか」を知りたいです。
OSについてもiTRONを例に出しましたが他の選択もあります(極端な話、オリジナルのOSも)。
メモリー保護機能についても「各タスクが正しくメモリを管理する」のであれば必要ないような気もします。
しかし、プログラムを作るのは人間ですので、「もし万が一」を考えるとメモリー保護機能が「何かしらのアラート」を発する方がいいのではないかとも思います。
もっと言うと、マルチコアとかという話にもなってしまいます。
まずは、マルチタスク、リアルタイムを実現するうえで、CPUに必須の機能は何か、と言うところを知りたいと思っています。
そのような状況です。
No.2
- 回答日時:
単にタスクの切り替えだけの話であれば、プリエンプティブ方式の場合はコンテキストスイッチをタイマー等の割り込みで行うので、割り込み制御が出来るCPUである必要があります。
とはいっても、割り込み制御が出来ないCPUなんて私は知りません。また、ノンプリエンプティブ方式の場合は、特に何が必要ってことも無いと思います。
マルチタスクのOSではタスク以外にメモリ空間を切り替える必要があるものがあります。μiTromの場合だとメモリ空間はどのタスクからでもアクセス可能なので、この機能は不要ですが、マルチプロセスのOSでは、タスク(プロセス)毎に独立したメモリ空間を持っているので、メモリを切り替える仕組みが必要です。これらの機能も今時のCPUなら持ってると思います。
この回答への補足
回答ありがとうございます。
>単にタスクの切り替えだけの話であれば、プリエンプティブ方式の場合はコンテキストスイッチをタイマー等の割り込みで行うので、割り込み制御が出来るCPUである必要があります。
と言うことは、現タスクのコンテキストの保存(退避領域)は通常のRAMでよくて、特に専用のメモリは必要ないという理解でよろしいでしょうか。
>また、ノンプリエンプティブ方式の場合は、特に何が必要ってことも無いと思います。
これは極端な話、NECのK0シリーズ等のどちらかと言うとチープなCPUでも可能と言う理解でよろしいでしょうか。
上記2点、タイマー割り込み機能さえあれば、プリエンプティブ方式のマルチタスクOSの実現が可能と言う理解でよろしいでしょうか。
>マルチタスクのOSではタスク以外にメモリ空間を切り替える必要があるものがあります。
タスク間のメモリ保護機能のことをおっしゃられていると推察します。
>μiTromの場合だとメモリ空間はどのタスクからでもアクセス可能なので、この機能は不要ですが、マルチプロセスのOSでは、タスク(プロセス)毎に独立したメモリ空間を持っているので、メモリを切り替える仕組みが必要です。
>これらの機能も今時のCPUなら持ってると思います。
総じて、
タスクスケジューリング機能だけであれば、CPUに特別な機能は必要ない。
タスクごとのメモリ保護機能も考えるのであれば、その機能を搭載したCPUでなければならない。
このような理解でよろしいでしょうか。
気づき等ございましたらフォロー頂けると助かります。
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英語版のみ対応、が必要です。
質問の内容とは、少々外れたかも知れませんが、ご参考までに!!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メモリの「コミット済み」の意...
-
MacとWinのメモリの違いについて
-
vmstatで、メモリ使用率を計算する
-
Windows98SE ・Meの動作「上限...
-
win10 仮想メモリ
-
VirtualPC for Mac 7 は PowerM...
-
WindowsアップデートでExcelが...
-
backing storeって何ですか?
-
CPU使用率がいつも100%なの...
-
0xで始まる番号(?)
-
32ビットOSのメモリ空間認識
-
WinAPIのGetLocalTimeの分解能は?
-
iMac G5及びeMac G4のモニタ性...
-
windows-仮想メモリ最小値が低...
-
最先端のCPUを詰んだAndroidス...
-
mac book proにアプリケーショ...
-
ubuntuで、ブラウザが黒画面
-
ノートPCの処理速度が遅くなる...
-
メモリ増設を考えてます。
-
Linux系OSのメモリの解放について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メモリの「コミット済み」の意...
-
win10 仮想メモリ
-
Windows98SE ・Meの動作「上限...
-
vmstatで、メモリ使用率を計算する
-
MacとWinのメモリの違いについて
-
最先端のCPUを詰んだAndroidス...
-
backing storeって何ですか?
-
「タスクマネージャ」で「イメ...
-
会計ソフトJDL macで使いたい W...
-
Windows XPの32ビット版と6...
-
実装メモリとタスクマネージャ...
-
皆様に聞きたいです。
-
WindowsアップデートでExcelが...
-
メモリ割り当ての増やし方
-
Windows NT 4.0 のシステム要件
-
仮想メモリ
-
仮想メモリとページファイルの...
-
WinAPIのGetLocalTimeの分解能は?
-
低スペックPCで軽量Linuxを動か...
-
ubuntuで、ブラウザが黒画面
おすすめ情報