オペレーティング システムのプロセス スケジューリング アルゴリズムとは何ですか?

オペレーティング システムのプロセス スケジューリング アルゴリズムとは何ですか?

スケジューラは、次に実行するプロセスを選択する役割を担うオペレーティング システム カーネルの一部です。したがって、スケジューリング戦略によって、オペレーティング システムが非リアルタイム オペレーティング システムかリアルタイム オペレーティング システムかが決まります。現在、オペレーティング システムには多くの種類がありますが、プロセス スケジューリング アルゴリズムは次の種類にまとめることができます。

先着順(FCFS)スケジューリングアルゴリズム

先着順のスケジュール戦略は非常にシンプルです。レディキューを維持します。各スケジューリングは、レディキューから最初にキューに入るプロセスを選択し、それにプロセッサを割り当てて、動作させます。プロセスは完了するかイベントによってブロックされるまで実行され、その後プロセッサを放棄します。

ショートプロセスファースト(SPF)スケジューリングアルゴリズム

Short Process First (SPF) スケジューリング アルゴリズムは、実行時間の推定値が最も短いプロセスを準備キューから選択し、そのプロセスにプロセッサを割り当てて、そのプロセスが完了するまで直ちに実行するか、イベントが発生してプロセッサがブロックされて放棄されたときに再スケジュールします。

高優先度スケジューリングアルゴリズム

緊急のプロセスに対処し、優先的に実行できるようにするために、優先スケジューリング アルゴリズムが導入されています。このスケジューリング アルゴリズムは、リアルタイム オペレーティング システムで使用できます。プロセスのスケジューリングが発生すると、アルゴリズムは準備完了キュー内で優先度が最も高いプロセスにプロセッサを割り当てます。

アルゴリズムには 2 つの種類があります。

非プリエンプティブ優先度アルゴリズム: このモードでは、システムが準備キュー内の最も優先度の高いプロセスにプロセッサを割り当てると、プロセスは終了するまで実行を継続するか、プロセッサを積極的に放棄し、システムがプロセッサを最も優先度の高い別のプロセスに割り当てます。このアルゴリズムは、リアルタイム要件が高くない一部のオペレーティング システムで使用できます。

プリエンプティブ優先度スケジューリング アルゴリズム: このモードでは、システムはプロセッサを最も優先度の高いプロセスに割り当てて実行します。ただし、操作中に優先度の高いプロセスが準備キューに出現した場合、システムは現在実行中のプロセスを直ちに停止し、新しく追加された優先度の高いプロセスにプロセッサを再割り当てします。したがって、このモードではリアルタイム要件をより適切に満たすことができるため、リアルタイム要件が高いシステムでよく使用されます。

優先度の高いプロセスがリソース不足のためにブロックされ、優先度の低いプロセスがリソースを解放するまで待機していると想像してください。優先度の低いプロセスは、CPU 時間が少なくなります。優先度が 2 つのプロセスの間にあり、共有リソースを必要としないタスクがある場合、優先度が中程度のプロセスがこれら 2 つのプロセスよりも優先され、CPU 時間が割り当てられます。優先度の高いプロセスがリソースを待機している間にブロックせず、ビジー ループする場合、優先度の低いプロセスは CPU 時間に関して優先度の高いプロセスと競合できず、実行できず、リソースを解放できないため、リソースを取得できない可能性があります。その結果、優先度の高いプロセスはリソースを取得できず、前進し続けることになります。この現象を「優先順位の逆転」と呼びます。

上記の問題をどのように解決すればよいでしょうか?

方法は3つあります。

優先度の上限を設定し、クリティカル セクションに高い優先度を与えます。クリティカル セクションに入るすべてのプロセスは、この高い優先度を取得します。クリティカル セクションに入ろうとする他のプロセスの優先度がこの高い優先度よりも低い場合、優先度の逆転は発生しません。

優先度の継承: 優先度の高いプロセスが優先度の低いプロセスが保持しているリソースを待機している場合、優先度の低いプロセスは、優先度の高いプロセスの優先度レベルを一時的に取得します。共有リソースを解放した後、優先度の低いプロセスは元の優先度レベルに戻ります。組み込みシステム VxWorks はこの戦略を採用しています。

3 番目の方法は、クリティカル セクションを保護するために、クリティカル セクションの割り込みを無効にすることです。この戦略を使用するシステムには、プリエンプティブ優先度と割り込み無効優先度の 2 つの優先度しかありません。前者は実行中の一般的なプロセスの優先度であり、後者はクリティカル セクションで実行されているプロセスの優先度です。マーズ・パスファインダーの失敗は、クリティカル・セクションで実行されていた気象ミッションが、中断された通信ミッションによって優先されたために発生しました。クリティカル・セクションに割り込み禁止保護が設けられていれば、この問題は発生しなかったでしょう。

高応答率優先スケジューリングアルゴリズム

CPU を集中的に使用するシステムでは、短いプロセス優先度アルゴリズムの方が適しています。ただし、長いプロセスの実行時間は保証されません。この問題を解決するにはどうすればよいでしょうか? 動的な優先順位を導入することはできますか? 簡単に言えば、待機時間が長くなるほど、優先順位が高くなります。それで、しばらく待てば、必ず走る番が来るでしょう。ただし、優先度を動的に計算するアルゴリズムには CPU リソースが必要です。

タイムスライスの回転

早期タイムスライス ラウンドロビン方式では、システムはすべての準備完了プロセスを先着順にキューに配置します。スケジュールが行われるたびに、キューの最初のプロセスに CPU が割り当てられ、1 つのタイムスライスで実行するように命令されます。タイムスライスのサイズは、数ミリ秒から数百ミリ秒の範囲です。実行タイムスライスが使い果たされると、タイマーがクロック割り込み要求を送信し、スケジューラはこの信号を使用してプロセスの実行を停止し、それを準備キューの最後に送信します。その後、プロセッサは準備キューの新しい先頭プロセスに割り当てられ、タイムスライスを実行できるようになります。これにより、準備完了キュー内のすべてのプロセスが、指定された時間内にプロセッサ実行時間のタイムスライスを取得できるようになります。つまり、システムは指定された時間内にすべてのユーザー要求に応答できます。

マルチレベルフィードバックキュースケジューリングアルゴリズム

これまで説明したスケジューリング アルゴリズムにはすべて一定の制限があります。たとえば、短いプロセス優先スケジューリング アルゴリズムは、短いプロセスのみを処理し、長いプロセスは無視します。マルチレベル フィードバック キュー スケジューリング アルゴリズムは、さまざまなプロセスのニーズを満たすことができるバランスの取れたアルゴリズムです。したがって、これは現時点ではより優れたプロセス スケジューリング アルゴリズムです。

複数の準備完了キューを設定し、各キューに異なる優先順位を設定します。最初のキューの優先度が最も高く、2 番目のキューの優先度が 2 番目に高くなります。キューの優先度が高いほど、タイムスライスは短くなります。

新しいプロセスがメモリに入ると、まず最初のキューの最後尾に配置され、FCFS 原則に従ってスケジュールのためにキューに入れられます。プロセスの実行順番が来たら、タイムスライス内に完了できればシステムからの退避準備ができます。タイムスライスの終了時に完了していない場合、スケジューラはプロセスを第 2 キューの最後に転送し、FCFS 原則に従ってスケジューリング実行を待ちます。第 2 キューでタイムスライスの実行後も完了していない場合は、順番に第 3 キューに配置されます。以下同様に続きます。長いジョブ (プロセス) が第 1 キューから第 n キューに順番にドロップされると、タイムスライス ローテーション方式で第 n キューで実行されます。

スケジューラは、最初のキューがアイドル状態の場合にのみ 2 番目のキューのプロセスが実行されるようにスケジュールします。また、スケジューラは、1 番目から (i-1) 番目のキューがすべて空の場合にのみ i 番目のキューのプロセスが実行されるようにスケジュールします。プロセッサが i 番目のキューのプロセスにサービスを提供しているときに、新しいプロセスがより高い優先度のキュー (1 から (i-1) までの任意のキュー) に入ると、新しいプロセスは実行中のプロセスのプロセッサをプリエンプトします。つまり、スケジューラは実行中のプロセスを i 番目のキューの最後に戻し、プロセッサを新しい高優先度プロセスに割り当てます。以下のように表示されます。

参照する

https://blog.csdn.net/qq_35642036/article/details/82809812、Yuan Lijun 氏はこの記事を参照しました。

要約する

この記事では、いくつかのプロセス スケジューリング アルゴリズムについて説明します。プロセス スケジューリング アルゴリズムに興味のある方の参考になれば幸いです。もちろん、この記事では説明されていない、抽選スケジューリング、単一比率スケジューリングなどのスケジューリング アルゴリズムもあります。

<<:  ロボットがIoTアプリケーションの範囲を拡大する方法

>>:  「紫禁城の戦い」 - ディープラーニング フレームワーク: Keras VS PyTorch

ブログ    
ブログ    
ブログ    

推薦する

機械学習の未来はここにある:ガウス過程とニューラルネットワークは同等である

ガウス過程は以前から存在していましたが、それに対する関心が大きく再燃したのはここ 5 ~ 10 年ほ...

事例 | 人工知能はヘルスケアの未来をどう変えるのか?

人工知能はこれらすべてを変え、私たちにとって物事をより簡単にしてくれます。 それは、私たちが交流し、...

AIが悪になる危険性を排除する方法

AI テクノロジーを悪とみなす個人、政府、企業が増えるにつれ、AI が善良な存在であることを保証する...

AIチップアーキテクチャは最先端へ向かう

企業は、AI をエッジに押し上げるための最適な武器として、さまざまなチップ アーキテクチャを採用しよ...

OpenAI の新しいモデルは大きな飛躍を示しています。AGI のプロトタイプは人類を脅かす可能性があり、アルトマンを解雇する導火線にもなりました。

サム・アルマンが解雇され、最新の内幕が明らかに!ロイター通信によると、彼が解雇されるわずか4日前に、...

AI チップ: なぜそれほど重要なのか?

周りを見渡せば、人工知能がいかに重要になっているかがわかるでしょう。顔認識カメラでも音声アシスタント...

...

ChatGPTのモバイル収益は9月に460万ドルという過去最高を記録し、成長疲れが現れ始めている。

10月10日、人工知能チャットボットChatGPTのモバイル分野での取り組みは大きな成果をもたらし...

人工知能産業は急速に発展しており、その規模は2020年には1600億ドルを超えるだろう

22日、「2018年中国IT市場年次大会」で、中国の中核人工知能産業の規模が2017年に700億元を...

Googleは、ニュースコンテンツを作成するために生成AIツールを使用するためにいくつかの出版社と提携していると報じられている。

2月28日、Adweekは、Googleがいくつかの出版社と、ニュースコンテンツを作成するための新...

...

GraphAlign: グラフマッチングによるマルチモーダル 3D オブジェクト検出のための正確な特徴アライメント

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

「翼竜」が飛び立ち、その威力を発揮。固定翼ドローンについて、あなたはどのくらい知っていますか?

空を飛ぶ龍、数千マイル離れたところから救援に駆けつける!最近、「翼龍」無人機が飛び立ち、被災地に急行...

人工知能は2018年にこれら5つの業界に革命を起こすだろう

科学技術分野における人工知能技術に関する議論は最高潮に達したようだ。昨年半ば、国務院は「新世代人工知...

年末総括:セキュリティ業界は2020年にCOVID-19パンデミックの課題に対処するのに貢献した

新型コロナウイルス感染症のパンデミックは、セキュリティ業界を含む世界中のあらゆる業界のあらゆる側面に...