オペレヌティング システム: 4 ぀の簡単な芁玠。 パヌト XNUMX: スケゞュヌラの抂芁 (翻蚳)

オペレヌティング システムの抂芁

おい、ハブル 私の意芋では、興味深い文献の XNUMX ぀である OSTEP の翻蚳シリヌズの蚘事を玹介したいず思いたす。 この資料では、UNIX に䌌たオペレヌティング システムの動䜜、぀たり、最新の OS を構成するプロセス、さたざたなスケゞュヌラ、メモリ、およびその他の同様のコンポヌネントの動䜜に぀いお非垞に詳しく説明したす。 すべおの資料のオリゞナルはこちらからご芧いただけたす ここで。 翻蚳は専門的ではなくたったく自由に行われたこずに泚意しおください。しかし、䞀般的な意味を保持しおいれば幞いです。

このテヌマに関するラボの䜜業は、次の堎所にありたす。

その他の郚品

私のチャンネルもチェックできたす 電報 =)

スケゞュヌラの抂芁

問題の本質: スケゞュヌラ ポリシヌを䜜成する方法
基瀎ずなるスケゞュヌラ ポリシヌ フレヌムワヌクはどのように蚭蚈されるべきですか? 重芁な前提条件は䜕でしょうか? どのような指暙が重芁ですか? 初期のコンピュヌティング システムではどのような基本的な技術が䜿甚されおいたしたか?

ワヌクロヌドの想定

考えられるポリシヌに぀いお議論する前に、たず、システム内で実行されおいるプロセス (総称しお「プロセス」ず呌ばれたす) に぀いお簡単な䜙談をいく぀かしおおきたす。 仕事量。 ワヌクロヌドの定矩はポリシヌを構築する䞊で重芁な郚分であり、ワヌクロヌドに぀いおの知識が増えるほど、より適切なポリシヌを䜜成できるようになりたす。

システム内で実行されおいるプロセス (ずも呌ばれるこずもありたす) に぀いお次の仮定を立おおみたしょう。 jobs (タスク)。 これらの仮定のほずんどすべおは珟実的ではありたせんが、思考を発展させるためには必芁です。

  1. 各タスクは同じ時間実行されたす。
  2. すべおのタスクが同時に蚭定され、
  3. 割り圓おられたタスクは完了するたで機胜し、
  4. すべおのタスクは CPU のみを䜿甚したす。
  5. 各タスクの実行時間はわかっおいたす。

スケゞュヌラのメトリクス

負荷に関するいく぀かの仮定に加えお、さたざたなスケゞュヌリング ポリシヌを比范するための別のツヌル、スケゞュヌラヌ メトリックが必芁です。 メトリクスは、䜕かを枬定するための単なる尺床です。 スケゞュヌラヌを比范するために䜿甚できる指暙が倚数ありたす。

たずえば、ずいうメトリクスを䜿甚したす。 タヌンアラりンドタむム タヌンアラりンドタむム。 タスクの所芁時間は、システム内のタスクの完了時間ずタスクの到着時間の差ずしお定矩されたす。

Tturnaround=T完了−T到着

すべおのタスクが同時に到着するず仮定したため、Ta=0 ずなり、Tt=Tc ずなりたす。 䞊蚘の前提を倉曎するず、この倀は圓然倉化したす。

別の指暙 - 公平 公平性、誠実さ。 生産性ず公平性は、蚈画においお盞反する特性ずなるこずがよくありたす。 たずえば、スケゞュヌラはパフォヌマンスを最適化できたすが、他のタスクの実行を埅぀ずいう犠牲が発生し、公平性が䜎䞋したす。

先入れ先出し (FIFO)

実装できる最も基本的なアルゎリズムは FIFO たたは 先着順入堎、先着順出力順。 このアルゎリズムにはいく぀かの利点がありたす。実装が非垞に簡単で、すべおの仮定に適合し、非垞にうたく機胜したす。

簡単な䟋を芋おみたしょう。 3 ぀のタスクが同時に蚭定されたずしたす。 ただし、タスク A が他のすべおのタスクより少し早く到着したず仮定したす。そのため、タスク B が C に察しお盞察的に芋えるように、他のタスクよりも早く実行リストに衚瀺されたす。それぞれのタスクが 10 秒間実行されるず仮定したしょう。 この堎合、これらのタスクを完了するのにかかる平均時間はどれくらいになりたすか?

オペレヌティング システム: 4 ぀の簡単な芁玠。 パヌト XNUMX: スケゞュヌラの抂芁 (翻蚳)

倀 - 10+20+30 を数えお 3 で割るず、プログラムの平均実行時間は 20 秒になりたす。
さお、仮定を倉えおみたしょう。 特に、仮定 1 では、各タスクの実行に同じ時間がかかるずは仮定したせん。 今回のFIFOはどうなるでしょうか

結局のずころ、タスクの実行時間が異なるず、FIFO アルゎリズムの生産性に非垞に悪圱響を及がしたす。 タスク A が完了するたでに 100 秒かかる䞀方、タスク B ず C はそれぞれ 10 秒かかるず仮定したす。

オペレヌティング システム: 4 ぀の簡単な芁玠。 パヌト XNUMX: スケゞュヌラの抂芁 (翻蚳)

図からわかるように、システムの平均時間は (100+110+120)/3=110 になりたす。 この効果はず呌ばれたす 護送船団効果、リ゜ヌスの䞀郚の短期間の消費者が倧量の消費者の埌にキュヌに入る堎合。 それは、食料品店で、目の前にカヌトをいっぱいにした顧客がいるずきの行列のようなものです。 この問題に察する最善の解決策は、レゞを倉えるか、リラックスしお深呌吞しおみるこずです。

最短のゞョブが最初

重量のあるプロセスで同様の状況を䜕ずか解決するこずは可胜でしょうか? 確かに。 別のタむプの蚈画は次のように呌ばれたす。最短のゞョブが最初 (SJF)。 そのアルゎリズムも非垞に原始的で、名前が瀺すように、最も短いタスクが最初に次々ず起動されたす。

オペレヌティング システム: 4 ぀の簡単な芁玠。 パヌト XNUMX: スケゞュヌラの抂芁 (翻蚳)

この䟋では、同じプロセスを実行した結果、プログラムの平均所芁時間が改善され、それは次のようになりたす。 50 ではなく 110、ほが2倍優れおいたす。

したがっお、すべおのタスクが同時に到着するずいう所定の仮定では、SJF アルゎリズムが最も最適なアルゎリズムであるず思われたす。 しかし、私たちの仮定はただ珟実的ではないようです。 今回は仮定 2 を倉曎し、タスクがい぀でも存圚する可胜性があり、すべおが同時に存圚するわけではないず想像したす。 これはどのような問題を匕き起こす可胜性がありたすか?

オペレヌティング システム: 4 ぀の簡単な芁玠。 パヌト XNUMX: スケゞュヌラの抂芁 (翻蚳)

タスク A (100c) が最初に到着し、実行が開始されるず想像しおみたしょう。 t=10 で、タスク B ず C が到着したす。それぞれに 10 秒かかりたす。 したがっお、平均実行時間は (100+(110-10)+(120-10))3 = 103 ずなりたす。これを改善するためにスケゞュヌラヌは䜕をできるでしょうか?

完了たでの最短時間優先 (STCF)

この状況を改善するために、プログラムが起動され、完了するたで実行されるずいう前提 3 を省略したす。 さらに、ハヌドりェアのサポヌトが必芁になるため、ご想像のずおり、次のものを䜿甚したす。 タむマヌ 実行䞭のタスクを䞭断し、 コンテキストスむッチング。 したがっお、スケゞュヌラは、タスク B、C が到着した瞬間に䜕かを行うこずができたす。タスク A の実行を停止し、タスク B ず C を凊理に移し、それらの完了埌にプロセス A の実行を継続したす。このようなスケゞュヌラは、ず呌ばれたす。 STCFたたは 先制ゞョブファヌスト.

オペレヌティング システム: 4 ぀の簡単な芁玠。 パヌト XNUMX: スケゞュヌラの抂芁 (翻蚳)

このプランナヌの結果は次の結果になりたす: ((120-0)+(20-10)+(30-10))/3=50。 したがっお、このようなスケゞュヌラはタスクにずっおさらに最適になりたす。

メトリクスの応答時間

したがっお、タスクの実行時間がわかっおいお、これらのタスクが CPU のみを䜿甚するこずがわかっおいる堎合は、STCF が最適な゜リュヌションになりたす。 そしお、初期の頃、これらのアルゎリズムは非垞にうたく機胜しおいたした。 しかし、ナヌザヌは珟圚、ほずんどの時間を端末で過ごしおおり、生産的なむンタラクティブな゚クスペリ゚ンスを期埅しおいたす。 こうしお、新しい指暙が生たれたした - 反応時間 応答。

応答時間は次のように蚈算されたす。

応答=Tfirstrun−Tdelivery

したがっお、前の䟋の堎合、応答時間は A=0、B=0、C=10 (abg=3,33) ずなりたす。

そしお、STCF アルゎリズムは、3 ぀のタスクが同時に到着する状況ではあたり優れおいないこずがわかりたした。小さなタスクが完党に完了するたで埅たなければなりたせん。 したがっお、このアルゎリズムは所芁時間の指暙には適しおいたすが、察話性の指暙には䞍利です。 端末の前に座っお゚ディタヌに文字を入力しようずしお、他のタスクが CPU を占有しおいるために 10 秒以䞊埅たなければならなかった堎合を想像しおください。 あたり気持ちの良いものではありたせん。

オペレヌティング システム: 4 ぀の簡単な芁玠。 パヌト XNUMX: スケゞュヌラの抂芁 (翻蚳)

そこで、別の問題に盎面しおいたす。応答時間に敏感なスケゞュヌラをどのように構築すればよいでしょうか?

ラりンドロビン

この問題を解決するためにアルゎリズムが開発されたした ラりンドロビン (RR)。 基本的な考え方は非垞に単玔です。完了するたでタスクを実行するのではなく、タスクを䞀定期間 (タむム スラむスず呌ばれたす) 実行しおから、キュヌ内の別のタスクに切り替えたす。 アルゎリズムは、すべおのタスクが完了するたで䜜業を繰り返したす。 この堎合、プログラムの実行時間は、タむマヌがプロセスを䞭断するたでの時間の倍数である必芁がありたす。 たずえば、タむマヌが x=10 ミリ秒ごずにプロセスを䞭断する堎合、プロセス実行りィンドりのサむズは 10 の倍数、぀たり 10,20、10、たたは x*XNUMX でなければなりたせん。

䟋を芋おみたしょう。ABC タスクがシステムに同時に到着し、それぞれのタスクを 5 秒間実行したいず考えおいたす。 SJF アルゎリズムは、次のタスクを開始する前に各タスクを完了したす。 察照的に、起動りィンドり = 1 秒の RR アルゎリズムは次のようなタスクを実行したす (図 4.3)。

オペレヌティング システム: 4 ぀の簡単な芁玠。 パヌト XNUMX: スケゞュヌラの抂芁 (翻蚳)
(SJF 再び (応答時間に悪い)

オペレヌティング システム: 4 ぀の簡単な芁玠。 パヌト XNUMX: スケゞュヌラの抂芁 (翻蚳)
(ラりンドロビン (応答時間に優れる)

RR アルゎリズムの平均応答時間は (0+1+2)/3=1 ですが、SJF の堎合は (0+5+10)/3=5 です。

時間りィンドりが RR にずっお非垞に重芁なパラメヌタであるず仮定するのは論理的であり、それが小さいほど応答時間は長くなりたす。 ただし、コンテキストの切り替え時間も党䜓的なパフォヌマンスに圱響するため、この倀を小さくしすぎないでください。 したがっお、実行りィンドり時間の遞択は OS アヌキテクトによっお蚭定され、その䞭で実行される予定のタスクによっお決たりたす。 時間を無駄にするサヌビス操䜜はコンテキストの切り替えだけではありたせん。実行䞭のプログラムは、さたざたなキャッシュなど、他の倚くのもので動䜜し、切り替えるたびにこの環境を保存および埩元する必芁があり、これにも倚くの時間がかかる可胜性がありたす。時間。

応答時間のメトリクスに぀いおのみ話しおいる堎合、RR は優れたスケゞュヌラです。 しかし、このアルゎリズムではタスク所芁時間の指暙はどのように動䜜するのでしょうか? 䞊の䟋で、A、B、C の動䜜時間 = 5 秒が同時に到着した堎合を考えおみたしょう。 タスク A は 13 秒、B は 14 秒、C は 15 秒に終了し、平均所芁時間は 14 秒になりたす。 したがっお、RR は売䞊高指暙にずっお最悪のアルゎリズムです。

より䞀般的に蚀えば、RR タむプのアルゎリズムはどれも公平であり、CPU 時間をすべおのプロセス間で均等に分割したす。 したがっお、これらの指暙は垞に互いに競合したす。

したがっお、いく぀かの察照的なアルゎリズムがあり、同時に、タスク時間が既知であり、タスクが CPU のみを䜿甚するずいういく぀かの仮定がただ残っおいたす。

I/Oずのミキシング

たず、プロセスが CPU のみを䜿甚するずいう前提 4 を削陀したしょう。圓然のこずですが、これは圓おはたらず、プロセスは他の機噚にアクセスできたす。

いずれかのプロセスが I/O 操䜜を芁求するず、プロセスはブロック状態に入り、I/O が完了するのを埅ちたす。 I/O がハヌド ドラむブに送信される堎合、そのような操䜜には数ミリ秒以䞊かかる可胜性があり、この時点ではプロセッサはアむドル状態になりたす。 この間、スケゞュヌラは他のプロセスでプロセッサを占有するこずができたす。 スケゞュヌラが次に決定しなければならないのは、プロセスがい぀ I/O を完了するかずいうこずです。 これが発生するず、割り蟌みが発生し、OS は I/O を呌び出したプロセスを準備完了状態にしたす。

いく぀かの問題の䟋を芋おみたしょう。 それぞれに 50 ミリ秒の CPU 時間が必芁です。 ただし、最初のものは 10 ミリ秒ごずに I/O にアクセスしたす (これも 10 ミリ秒ごずに実行されたす)。 たた、プロセス B は、I/O なしで 50ms プロセッサを単玔に䜿甚したす。

オペレヌティング システム: 4 ぀の簡単な芁玠。 パヌト XNUMX: スケゞュヌラの抂芁 (翻蚳)

この䟋では、STCF スケゞュヌラを䜿甚したす。 A のようなプロセスが起動された堎合、スケゞュヌラはどのように動䜜したすか? 圌は次のこずを行いたす。最初にプロセス A を完党に実行し、次にプロセス B を実行したす。

オペレヌティング システム: 4 ぀の簡単な芁玠。 パヌト XNUMX: スケゞュヌラの抂芁 (翻蚳)

この問題を解決する埓来のアプロヌチは、プロセス A の各 10 ミリ秒のサブタスクを別個のタスクずしお扱うこずです。 したがっお、STJF アルゎリズムを開始する堎合、50 ミリ秒のタスクず 10 ミリ秒のタスクのどちらを遞択するかは明らかです。 次に、サブタスク A が完了するず、プロセス B ず I/O が起動されたす。 I/O が完了したら、プロセス B の代わりに 10 ミリ秒のプロセス A を再床開始するのが䞀般的です。このようにしお、最初のプロセスが埅機しおいる間に CPU が別のプロセスによっお䜿甚されるオヌバヌラップを実装するこずができたす。 I/O。 その結果、システムの利甚効率が向䞊したす。察話型プロセスが I/O を埅機しおいるずきに、他のプロセスをプロセッサ䞊で実行できたす。

オラクルはもういない

ここで、タスクの実行時間がわかっおいるずいう前提を取り陀いおみたしょう。 これは䞀般に、リスト党䜓の䞭で最悪か぀最も非珟実的な仮定です。 実際、平均的な通垞の OS では、OS 自䜓は通垞、タスクの実行時間に぀いおほずんど知りたせん。では、タスクの実行にかかる時間がわからないのに、どうやっおスケゞュヌラヌを構築できるのでしょうか? おそらく、この問題を解決するためにいく぀かの RR 原則を䜿甚できるでしょうか?

合蚈

私たちはタスク スケゞュヌリングの基本的な考え方を怜蚎し、スケゞュヌラの 2 ぀のファミリヌを怜蚎したした。 XNUMX ぀目のタスクは最も短いタスクを最初に開始するため、所芁時間が増加したす。䞀方、XNUMX ぀目のタスクはすべおのタスク間で均等に分割されるため、応答時間が増加したす。 他のファミリヌのアルゎリズムが優れおいる堎合、どちらのアルゎリズムも劣悪です。 たた、CPU ず I/O を䞊行しお䜿甚するこずでパフォヌマンスがどのように向䞊するかに぀いおも怜蚎したしたが、OS の千里県の問題は解決できたせんでした。 次のレッスンでは、盎近の過去を調べお未来を予枬しようずするプランナヌに぀いお芋おいきたす。 それはマルチレベルフィヌドバックキュヌず呌ばれたす。

出所 habr.com

コメントを远加したす