[解決済み] スタティック・スケジューリングとダイナミック・スケジューリングの長所と短所
質問
を見つけることができないので、この質問を開いています。 わかりやすい このトピックに関する要約された情報。このトピックについて説明した良いユーチューブビデオさえありません。
私は現在リアルタイムプログラミングを勉強しており、静的・動的スケジューリングはその一部です。ただ、どうしても理解できないのです。
静的・動的スケジューリングのメリット・デメリットを教育的に説明してくれる人がいたら、本当に助かります。
今までのところ、以下のような感じです。
-
静的なスケジューリング。 スケジュールを手動で生成するオフラインのアプローチです。実行中に修正することも可能だが、スレッドの納期を守るため、あまり推奨されない。実装や解析が容易である。分析が簡単なので、システムがすべての締め切りを守れるかどうかを確認するのも簡単です。
-
ダイナミック・スケジューリング。 スケジュールが自動的に生成されるオンラインアプローチである。実行中にシステム側で変更可能であり、スレッドの納期が遅れることは(ほとんどの場合)ないはずである。システムが変更されても、スケジュールは自動的に生成されるので、新しいスケジュールを生成することは容易である。システムがすべての締め切りを守るという保証はない。
どなたか、この2つを私よりもう少し上手に説明できる方はいらっしゃいませんか?あるいは、この2つについてもっと情報を追加してください。また、画像で説明すると、より理解しやすいと思います。
解決方法は?
わかりやすく言うと
静的スケジューリング は、私たちのコード(コンパイル時)でスレッドやプロセスが実行される順序や方法をすでに制御しているメカニズムです。もし、あなたがプログラムの中でスレッドに対して何らかの制御(ロック、セマフォ、ジョイン、スリープ)を行っているならば、あなたは静的(コンパイル時)スケジューリングを使用することを意図していることになります。
ダイナミック・スケジューリング は、スレッドのスケジューリングがオペレーティングシステムによって行われるメカニズムです。 スケジューリングアルゴリズム OSレベルで実装されています。そのため、スレッドの実行順序は、何らかの制御を行わない限り、完全にそのアルゴリズムに依存することになります(静的スケジューリングによる)。
利点」という言葉は、ここでは最適な言葉ではないでしょう。単に、あるタスクを達成するためにスレッドに対する何らかの制御をコードで実装する場合、最小限の制御と最も最適化された方法で使用したことを確認する必要があります))
追加です。
スタティック・スケジューリングとダイナミック・スケジューリングの比較
一般的に、私たちは 決して に完全に依存するようなコンピュータ・プログラムは存在しない。 スタティック・スケジューリングとダイナミック・スケジューリングのどちらか一方のみ .
その代わり、コード自体からかなり制御できるプログラムもあります(強力な静的プログラム)。 これは は、その良い例でしょう。
また、プログラムによっては、強動的(弱静的)なものもあるでしょう。 これは はその良い例でしょう。そこでは、2つのスレッドが開始する以外、プログラムの実行の残りはフリーフライヤーであることがわかるかもしれません。
プログラムを静的、動的のどちらかに封印するような免責基準を見つけようとはしないでください :))
肯定的な意見と否定的な意見
-
ダイナミック・スケジューリング スケジューリングは より速く 静的スケジューリングに比べ、基本的に意図的な待ち時間や結合などがなく、フリーフライヤーであるため、実行時に (スレッド間の同期や保護が一切ない)。
-
ダイナミック・スケジューリング は 気付かない どのような スレッド依存性 (安全性、同期性など)。上記のソースに従えば、おそらく見当がつくと思います。
-
つまり、一般的に、あなたがどれだけ優れたマルチスレッドプログラマーであるかは、あなたのタスクを成功させるためにスレッドにどれだけ制限、依存、ボトルネックを実装したかに依存することになります。)
かなり多くのことをカバーできたと思います。何か質問があれば言ってください。)
関連
-
[解決済み] JavaでFileFilterを作るには?
-
[解決済み] java.lang.IncompatibleClassChangeError: Mongo クラスを実装しています。
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] JDBC タイプの方言マッピングがありません。1111
-
[解決済み] Java: getInstanceとStaticの比較
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Androidでファイルをダウンロードし、ProgressDialogで進捗を表示する。
-
[解決済み] Mockitoで静的メソッドをモックする
-
[解決済み】静的初期化コードブロックと非静的初期化コードブロックの違いは何ですか?
-
[解決済み] 同期化された静的メソッドはJavaでどのように動作し、Hibernateエンティティの読み込みに使用できますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JVMフラグCMSClassUnloadingEnabledは、実際に何をするのですか?
-
[解決済み] JavaでFileFilterを作るには?
-
[解決済み] Java Genericメソッドをstaticにするには?
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] double 型を Int 型に変換、切り捨て
-
[解決済み] 型の不一致:ArrayListからListへの変換ができない
-
[解決済み] javaでAnnotation Inheritanceのようなものはあるのでしょうか?
-
[解決済み] アニメーションGIFの表示
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] init-paramとcontext-param