
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
#1 です.
> (a)1回のループで全ての処理を終わらせる 方法
> と
> (b)1回でなく、複数回に分けて全ての処理を終わらせる 方法
> の呼び名のことです。
複数のアプリケーションを短時間で切り替え,同じ優先度の処理を
順繰りに実行する場合,そのスケジューリングを OS が行っている
のならば,#2 さんが書かれているようにラウンドロビンと言いますが,
アプリケーションが自分で行う場合の名前は聞いたことがありません.
(そういうプログラムを昔書いたことはありますが.)
(a) 対 (b) の図式に近いものはバッチ処理と時分割処理 (Time Sharing)
でしょうか.ただしこれも OS がスケジューリングを制御していることには
変わりありませんが.
バッチ処理 (Wikipedia)
http://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83% …
タイムシェアリングシステム (Wikipedia)
http://ja.wikipedia.org/wiki/%E3%82%BF%E3%82%A4% …
> 例えば、重たい処理を1回のループで全て順番にやっていこうとすると、
> 処理A→処理B→処理C→・・
> と処理Cを行うときには、処理Aを行ってからかなりの時間が経過して
> いる可能性がありますよね?
>
> なので、それぞれの処理を細かく分けて、
> 1回目のループ: 処理A-1→処理B-1→処理C-1→・・
> 2回目のループ: 処理A-2→処理B-2→処理C-2→・・
> 3回目のループ: 処理A-3→処理B-3→処理C-3→・・
> というように行わせたいのです。
リアルタイム性能を重視する場合,そういう処理の分け方をするのではなく,
「イベント発生から所定の時間内に終わらなければならない処理」と
そうでない処理を分け,前者を優先度の高いタスクとして実行するのが
普通だと思います.
また,リアルタイム OS では優先度を動的に変更する機能も持っています.
たとえば本来優先度の低い処理Aが終わらないと優先度の高い処理Bを開始
できない場合,Aの優先度をBの優先度まで上げて早く終わらせます (優先度継承).
リアルタイムシステム (Wikipedia)
http://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%A2% …
優先度継承 (Wikipedia)
http://ja.wikipedia.org/wiki/%E5%84%AA%E5%85%88% …
No.2
- 回答日時:
複数のタスクを短い時間で切り替えて並行に実行する。
アプリケーション自身でそういう制御を行う構造には名称はなかったと思いますが、OSで行うものではラウンドロビン・スケジューリングと言いますね。このレベルだと、イベントがあったら対応する処理を一気に実行するのはFIFOスケジューリングでしょうか。
イベントによる割り込み・再スケジューリングがないとすると、どちらも処理中には次のイベントが処理できないという問題がありますね。
FIFOの長所は単純さです。余分な処理もないのでスループットは高いです。レスポンスは最悪ですけど。
ラウンドロビンはFIFOよりレスポンスは改善します。ただしプログラムの複雑化とオーバーヘッドが必要です。
特に各タスクをタイマ割込みで強制中断切替するのではなく、各タスクを分割して自発的に切替える(疑似マルチタスク)のなら、各タスクを適切な処理規模に分割して切り替え処理を呼び出す手間が掛かります。
No.1
- 回答日時:
> メインループで待機中、イベントが発生したらそれに対応する処理をその1回の
> ループで全て終わらせてしまうようなソフト構造を何と呼びますか?
イベント駆動型 (event-driven) プログラム.
で,そのループはイベントループ.
なお Windows の GUI アプリケーションでは,ほとんどのイベントは
ウィンドウ・メッセージなので,メッセージ・ループと呼んでいます.
"イベント駆動" で検索
http://www.google.co.jp/search?q=%22%E3%82%A4%E3 …
イベント駆動とは 【イベントドリブン】 - 意味・解説 : IT用語辞典
http://e-words.jp/w/E382A4E38399E383B3E38388E9A7 …
@IT:Insider's Computer Dictionary [イベント駆動]
http://www.atmarkit.co.jp/icd/root/82/5783582.html
イベント駆動型プログラミング (Wikipedia)
http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%99% …
メインループ (Wikipedia)
http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4% …
> またそれとは逆に、イベントが発生したらそれに対応する処理を複数回のループ
> で終了させるような構造を何とよんだらいいでしょうか?
あらかじめループ回数を決めて,というのは聞いたことがないけど,
1回で全部処理するには時間がかかりすぎるから分割したいとか,
必要な条件が整わないから処理を次回に持ち越したい,ということですか?
> それぞれの長所、短所もおしえてください。
その2つを比較する趣旨がよくわからないんですが,
学校の課題か何かですか? OS の授業ですかね?
だとすれば,プリエンプティブ (前者) 対ノンプリエンプティブ (後者) ということかなぁ?
"ノンプリエンプティブ" で検索
http://www.google.co.jp/search?q=%22%E3%83%8E%E3 …
ノンプリエンプティブマルチタスクとは 【non-preemptive multitasking】 - 意味・解説 : IT用語辞典
http://e-words.jp/w/E3838EE383B3E38397E383AAE382 …
マルチタスク (Wikipedia)
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB% …
この回答への補足
ご回答ありがとうございました。
すみません、ちょっと質問のポイントがずれていたかもしれません。
お聞きしたかったのは、
(a)1回のループで全ての処理を終わらせる 方法
と
(b)1回でなく、複数回に分けて全ての処理を終わらせる 方法
の呼び名のことです。
例えば、重たい処理を1回のループで全て順番にやっていこうとすると、
処理A→処理B→処理C→・・
と処理Cを行うときには、処理Aを行ってからかなりの時間が経過して
いる可能性がありますよね?
なので、それぞれの処理を細かく分けて、
1回目のループ: 処理A-1→処理B-1→処理C-1→・・
2回目のループ: 処理A-2→処理B-2→処理C-2→・・
3回目のループ: 処理A-3→処理B-3→処理C-3→・・
というように行わせたいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DLLファイルの逆コンパイラにつ...
-
Windows Formアプリからコンソ...
-
プログラマー達は何故、プログ...
-
C言語のことです。写真(見にく...
-
c#のTLS1.2での通信について
-
visual studio 2022でのC#プロ...
-
C言語の関数のextern宣言
-
C言語について(初心者)
-
C# で 数式文字列処理を処理す...
-
C言語 関数、変数の宣言について
-
逆コンパイルと逆アセンブルの...
-
c言語
-
C言語について。
-
c言語でイベントフラグを使った...
-
大量のデータを読み込んで表示...
-
プログラミングc++を全く分か...
-
あってる
-
コンソールアプリを作成するの...
-
プログラム言語について c言語...
-
swift言語の最適化 swift最適化...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語
-
DLLファイルの逆コンパイラにつ...
-
Windows Formアプリからコンソ...
-
大量のデータを読み込んで表示...
-
C言語の関数のextern宣言
-
VisualStudioでC++クラスを追加...
-
【C言語】全角文字の配列を、全...
-
VisualStudio2022でC言語プログ...
-
C++でデスクトップGUIアプリ開...
-
gccを行ってもexeファイルが生...
-
C#でTreeViewのCheckBoxのサイ...
-
C#でログファイルにファイルパ...
-
プログラマー達は何故、プログ...
-
逆コンパイルと逆アセンブルの...
-
Notepad++の関数リスト表示の変...
-
C言語について。
-
Cのコンパイルでコメントアウト...
-
visual studio 2022でのC#プロ...
-
コンソールアプリを作成するの...
-
C言語 バッファについて。
おすすめ情報