一連の記事
第1章オペレーティングシステムの概要
第2章プロセスの説明と制御
第2章プロセス管理-スケジューリング
2.7スケジューリングの種類
- 長距離スケジューリング:どのプログラムがシステムに入ってプロセスになることができるかを決定することは、プロセスの作成の一部であり、最も時間がかかります
- ミッドレンジスケジューリング:スワップインされるプロセスの一部であり、時間が中程度であるメモリに入ることができるプロセスを決定します
- 短距離スケジューリング:次に実行するプロセス、実行に変換する準備ができている部分、および最短時間を決定します
実行頻度:短距離スケジューリング>中距離スケジューリング>長距離スケジューリング
CPUを集中的に使用するプロセス:主に計算作業を実行し、場合によってはI / Oデバイスを使用します
I / Oを多用するプロセス:実行時間は主にI / O操作の時間に依存します
スケジューリングの目的:システムの目標(パフォーマンス)を達成するため、プロセスを1つ以上のCPUに割り当てるため
2.7.1長期スケジューリング
- どのプログラムが入ることができるかを制御します。つまり、並行性の程度(プロセス密度)を制御します。
- 意思決定の参照要素:FCFS、優先度、ddl、I / O要件
2.7.2ミッドレンジスケジューリング
- スワップインするプロセスとスワップアウトするプロセスを決定する
- ミッドレンジスケジューリングはスイッチング機能の一部です
- スワップインは、システムの同時実行要件とスワップアウトプロセスのストレージ要件によって異なります。
2.7.3短距離ディスパッチ(ディスパッチ手順)
- どのプロセスが最初にCPUを取得するかを決定します
- 短距離スケジューリングは、現在のプロセスがブロックまたはプリエンプトされたときに呼び出されます
2.8短距離スケジューリングのルール
パフォーマンス
- 応答時間:ユーザーの要求から応答の受信までの時間=入力送信t +処理t +応答送信t
- 期限:タスクを開始する必要がある時間またはDDL
- システムスループット:単位時間あたりに完了したプロセスの数
- CPU使用率:CPUビジー状態のパーセンテージ
- ターンアラウンドタイム(滞留時間):プロセス送信から完了までの時間=リソースの待機t +処理t(計算:完了時間-送信時間)
- 平均ターンアラウンドタイム:平均ターンアラウンドタイム
- 加重ターンアラウンドタイム(正規化されたターンアラウンドタイム):ターンアラウンドタイム/システムが実際にプロセスにサービスを提供する時間
- 平均加重ターンアラウンドタイム:平均加重ターンアラウンドタイム
上記のパフォーマンス指標は、ユーザー指向とシステム指向に分けられます。
ユーザー指向:応答時間、ターンアラウンドタイムなど、期限時間
システム指向:スループット、CPU使用率
非パフォーマンス指標
- 予測可能性
- 公平性(空腹なし)
- 必須の優先順位
- リソースのバランスをとる
ユーザー指向のインジケーターはどのシステムでも重要です。システム指向のインジケーターはシングルユーザーシステムでは重要ではありません。これらのルールを同時に最適化することはできません。
2.9スケジューリングの決定モード
2つのカテゴリーに分けられます
- プリエンプション:現在のプロセスはOSによって途中で停止され、別のプロセスを実行できます
- 非プリエンプション:プロセスはそれ自体でのみブロックされます
プリエンプトするタイミング
- 新しいプロセスが到着したとき
- 中断後、ブロック状態を準備完了状態に設定します
- クロック割り込み
スケジューリング選択機能
次のプロセスを誰にするかを決定します
。3つのパラメータ:
- wこれまでの待ち時間
- これまでの待ち時間
- ■プロセスに必要な合計サービス時間、s> = eであり、ユーザーが見積もりまたは提供する必要がある
2.10スケジューリングアルゴリズム(強調)
空腹の理解
CPUを使用するプロセスの番になると、別のプロセスが何らかの理由でCPUをプリエンプトします(プリエンプション)。
何人かの人が一緒にケーキを食べます。あなたが食べる番になると、後ろの人がその部分をつかみます。あなたの前であなたを食べます。、あなたが食べるべきものを食べないとあなたは空腹になります
非プリエンプティブ
FCFS、SPN、HRRN
つかむ
RR、SRT、フィードバック
低オーバーヘッド
FCFS、RR
空腹
SPN、SRT、フィードバック
2.10.1FCFS先入れ先出し
- 要求されたCPUの順序で実行します
- 短いプロセスには適していません。スーパーマーケットでの買い物を参照してください
- CPUの需要が小さいため、I / O集約型には適していません
- それは先制的ではなく、空腹感もなく、応答時間は非常に長くなる可能性があります
- 朝食を買うために朝のカフェテリアに列を作るのは先着順です
2.10.2RRタイムスライスラウンドロビンスケジューリングアルゴリズムRoundRobin
-
FCFSにクロック割り込みを追加する
-
タイムシェアリングシステムやトランザクション処理システムで特に効果的です
-
プリエンプションに属し、空腹アルゴリズムはなく、パフォーマンスはタイムスライス設定と密接に関連しています
- 時間の長さ:長い仕事に適しています
- 短いタイムスライス:短い仕事に適しています
-
I / Oを多用するプロセスには適していません。I/ Oを多用するプロセスは、CPUを短期的に使用するたびに、スケジューリングのためにキューの末尾に加わりますが、CPUを多用するプロセスはCPUをより長く使用する可能性があります。 I / Oを多用するプロセスは、推定時間よりも時間がかかります。
- 食堂に行って朝食用に2個の卵を並べて購入します(短い割り当て)。卵ご飯カードを購入してお金がなくなった場合(I / Oが中断された場合)、カードが完全に充電された後にのみカードを充電できます。 (I / O満足)、あなたは列に戻ってきます、あなたは列の終わりからしか整列できません
-
改善されたアルゴリズム:URR
-
新しく追加されたI / Oブロックプロセスキューキュー。レディキューよりも優先度が高く、RRよりも公平です。
- 食堂に行って朝食用に2個の卵を並べて購入します(短い割り当て)。卵ご飯カードを購入してお金がなくなった場合(I / Oが中断された場合)、カードが完全に充電された後にのみカードを充電できます。 (I / O満足)また戻ってきたら、食べ物を買っていない人の列を並べるのではなく、カードチャージで卵の購入を中断した人の列を並べることができます。
-
朝の食堂での朝食待ち行列に合わせて時間制限を設け、30秒以内に食事が終わらない場合は再度列に並ぶ必要があります…
2.10.3ショートジョブ優先SJF / SPN / SPF
- アルゴリズムは短いジョブを処理するため、誰が「短い」かを事前に知る必要があります。したがって、アルゴリズムの前提は、すべてのプロセスの実行時間がわかっていることです。
- これは非プリエンプティブな飢餓アルゴリズムです
- プリエンプティブではなく、タイムシェアリングおよびトランザクション処理システムに適していないため、平均ターンアラウンドタイムが短縮されます
- ユーザーはSJFを時間どおりに実行できるとは期待されていません
- 朝は食堂が並んで朝食を買います。早く買う人が先に買いますが、一人が買っている間は他の人が列に並ぶことはできません。
2.10.4最小残余時間優先アルゴリズムSRT
- 予想される残り時間が最も短いプロセスを選択することは、短いジョブの優先順位に基づいてプリエンプションメカニズムを増やすことです。
- それは先制と飢餓のアルゴリズムに属しています
- プロセスは、プロセスの実行時間を記録する必要があります
- 平均ターンアラウンドタイムは短いジョブよりも優れており、プロセスの実行時間を見積もる必要があります
- 朝は食堂が並んで朝食を買います。早く買う人が先に買います。シャオチャンが1分あれば59秒で買える人がいます。張の前で買う
2.10.5HRRN最高応答率優先度アルゴリズム
-
現在のプロセスが完了すると、応答率が最も高い次のプロセスが選択されます
-
これはプリエンプティブではなく、飢餓アルゴリズムを備えています
-
响測定比=(waitTime + serveTime)/ serveTime = 1 + waitTime / serveTime
-
朝食を買うために食堂に行きます。食堂での待ち行列時間+食事を買う時間を食事を買う時間で割ったものが回答率です。値が大きいほど、朝食を買う効率が低くなります。
-
短いジョブは、serveTimeが小さく、waitTime / serveTimeが大きく、応答率が大きく、優先順位がスケジューリングされます
-
長いジョブが長時間待機すると、waitTime / serveTimeが増加し、応答率が大きくなり、スケジューリングが優先されます。
-
このアルゴリズムは、FCFSとSJFを組み合わせた動的優先順位調整アルゴリズムです。
-
このアルゴリズムは、短いプロセスを処理するだけでなく、長いプロセスが長時間飢えないようにします。
-
このプロセスには、応答率の計算と推定実行時間が必要です。
-
朝食を買うために並んでいるカフェテリアに行った、シャオ・チャンはクラスに行くか、すぐに買い物をするか、シャオ・リーがゆっくりと買うのを急いでいましたが、みんなを怒らせないために、叔母、数回列に入れられました。 、彼らが夕食に割り込むことを許可した
2.10.6フィードバックフィードバックスケジューリングアルゴリズム
-
このアルゴリズムのアイデアは、長いプロセスを罰することですが、SJF、SRT、およびHRRNは短いプロセスを優先的に扱います
-
それは先制と飢餓のアルゴリズムに属しています
-
複数の優先度キューを異なる方法で処理するように設定します。各キューのタイムスライスは異なる可能性があり、優先度の高いキューのタイムスライスは短くなります。
-
新しい着信プロセスは、最も優先度の高いキューの最後にあります
-
優先度の高いキューのプロセスが最初に実行され、実行が完了する前にプロセスのタイムスライスが使い果たされると、優先度の低いキューの最後にダウングレードされます。
-
一般に、優先度iのキュータイムスライスは2 ^ iです。
-
さまざまなタイプのユーザーのニーズをより適切に満たすことができます
-
ターミナルユーザー、ショートジョブユーザー:インタラクティブジョブはショートジョブであることが多く、優先度の高いキューで実行できます。
-
長いプロセスユーザー:プロセスがキューにドロップすると、割り当てられたタイムスライスは実行するのに十分です
-
食堂に行って朝食を待ち行列に入れました。窓はいくつかありましたが、食事をしているおばさんは一人しかいませんでした。おばさんはみんなに列を作って、夕食のために最初の窓に順番に行くように頼みました。 10秒以内の食事は2番目のウィンドウに行きました。並んで待って、最初のウィンドウが空になるのを待ちます。叔母は2番目のウィンドウに来てみんなの準備を手伝い、20秒以内に戦いを終えなかった人は行きます3番目のウィンドウは40秒の制限時間があるかもしれません。4番目と5番目のウィンドウは類推によって推測できます。この時間に別の人が食事を提供するようになると、叔母は彼が10秒以内に食事を提供するのを助けるための最初のウィンドウ。ウィンドウキュー
2.11リアルタイムシステムとリアルタイムスケジューリング
いくつかの概念
計算結果は時間に敏感で、ニュースなどの有効期限は無意味です
- リアルタイムシステム:システムは、外部の要求に時間内に応答し、指定された時間内にイベントの処理を完了し、すべてのリアルタイムタスクの調整された操作を制御できます。
- リアルタイムタスク:適時性の要件があり、頻繁に繰り返し実行される特定のプロセス
- 開始期限:最後から開始する必要があります
- 完了の締め切り:締め切り
2.11.1リアルタイムのタスク分類
- 締め切りによると
- ハードリアルタイム:締め切りに間に合わせる必要があります。そうしないと、破壊的な影響があります(締め切り前に最終論文が提出されます)
- ソフトリアルタイム:必須の要件はありません。タイムアウトは意味があります(11時に眠りにつくことはありませんでしたが、通常より早く就寝しましたが、夕方の11時前に就寝する予定です)。
- サイクルによると
- 非定期的なタスク:合計ddl、(冬休みの宿題は3時に始まり、6時前に終了します)
- 定期的なタスク:定期的なDDLがあります(冬休みの宿題は3時から始まり、中国語の部分は4時より前に書かれ、数学の部分は5時より前に書かれ、英語の部分は6時より前に書かれます。 '時計)
2.11.2リアルタイムOSの機能
- 決定論的:操作は合意された一定期間内に実行できます
- 応答性:中断に対応する時間に焦点を当てる
- ユーザー制御:ユーザーはソフトウェアとハードウェアをリアルタイムで区別し、優先順位を設定します
- 信頼性:リアルタイム応答
- 障害の弱体化:すべてのプロセスのリアルタイムパフォーマンスを満たせない場合、損失を減らすために、優先度の高いタスクのリアルタイム要件が優先されます
2.11.3リアルタイムスケジューリング
- 静的テーブルスケジューリング:各タスクの定期的な到着時間、実行時間、定期的な終了期限、相対的な優先度を入力し、リアルタイムタスクをスケジュールするためのスケジュールテーブルを出力します
- 定期的なリアルタイムタスクをスケジュールするために使用されます
- EDF(Earliest Deadline First)アルゴリズムは、このタイプのスケジューリングに属します
- 柔軟性がなく、変更するとスケジュールが変更されます
- いくつかの最終試験があり、レビューするスケジュールを調整しましたが、一部の試験では時間が変更されており、以前のスケジュールを修正する必要があります
- 静的優先プリエンプションスケジューリング:優先度に基づくプリエンプション
- 非リアルタイムマルチプログラムシステムのスケジューリング用
- 通常、タスクの期限に基づいて優先順位を設定します
- レビューするときは、重要度の高いテーマを最初にレビューし、次に重要度の低いテーマをレビューしたいと思います。
- 動的計画とスケジューリング(動的テーブルスケジューリング):新しく到着したリアルタイムタスクと現在のタスクのスケジューリングテーブルを動的に作成します
- 現在のタスクがタイムアウトしない状態で、新しいタスクを完了できれば、新しいタスクが実行されます。
- レビューするとき、新しい試験が発表されるたびに、レビュープランに追加します
- 動的なベストエフォートスケジューリング
- 属性に基づいて、新しく到着したタスクに優先度を割り当てます。最も高い優先度が最初にスケジュールされます。
- 最先端のタスクを最初にスケジュールするように最善を尽くします
- 短所:制約時間を満たすことができるかどうかわかりません。タイムアウトしなかった元のタスクもタイムアウトする可能性があります。
- 実装が簡単で、非周期的なリアルタイムタスクに使用されます
- 復習の際、まだ3日で高等数学のテストを受けることができたので、復習を終えることができたのですが、急に高等数学の前日に大事なことを発表したので、まず大事なことを復習しなければなりませんでした。結果として、私は両方を終えることができないかもしれません。
プリエンプション方式
- タイムスライスローテーション
- 応答時間:第2レベル
- タイムスライスが実行された後、FCFSの次のプロセスによってプリエンプトされます
- タイムシェアリングシステムで広く使用されており、一般的に厳密なリアルタイム処理システムではありません
- 優先非プリエンプション
- 応答時間:第2レベルまで100ミリ秒
- リアルタイムプロセスは優先度が高く、最初に実行され、次のプロセスは現在のプロセスが完了またはブロックされたときにスケジュールされます。
- 主にマルチパスバッチ処理システムおよびそれほど厳しくないリアルタイムシステムで使用されます
- 優先プリエンプション
- 応答時間:数ミリ秒から数十ミリ秒
- 優先度+クロック割り込み:プロセスクロック割り込みポイントまたはプロセスがブロックされている場合、リアルタイムプロセスは優先度に従ってプリエンプトします
- 一般的なリアルタイムシステムの場合
- 今すぐプリエンプト
- 応答時間:マイクロ秒からミリ秒レベル
- 優先度に応じた直接プリエンプション
- 要求の厳しいリアルタイムシステム向け
2.11.4リアルタイムスケジューリングの例
リアルタイムタスクスケジューリングの参照情報
- 準備時間
- 締め切り開始
- 完了期限
- 実行時間
- リソース要件
- 優先
- サブタスク構造:実行する必要のある部分(ハードリアルタイム部分)とオプションで実行できる部分
アイデアのスケジューリング
- 意思決定スケジューリングアルゴリズム:誰が誰に最も早く対処するか(EDF)、DDLに従って優先順位を決定します
- プリエンプトする方法を決定する
- 開始期限は明確です。非プリエンプティブな方法を採用します(ポイントに達すると現在のプロセスがブロックされ、差し迫ったプロセスがスケジュールされ、差し迫ったプロセスがタイムアウトしません)
- 完了の期限を明確にする:プリエンプション方法を採用します(期限に従ってプリエンプトする時期を判断します)
例:期限が明確な定期的なリアルタイムタスクの場合
- 定期的なタスク->静的スケジュール-> EDFアルゴリズム
- 完了期限のクリア->プリエンプション方法
開始と期限が明確な非定期的なリアルタイムタスクの場合
- 非周期的-> CPUアイドルを可能にするEDFアルゴリズム
- 期限が最も早いタスクに優先順位を付け、実行を終了させます
- CPU使用率は高くありませんが、システムタスクは確実に完了します。
レートモノトニックスケジューリングアルゴリズムRMS
- タスクレート:タスク期間の逆数(秒)、ヘルツ単位
- 優先順位の決定
- タスク期間が短いほど、タスク率が高くなり、優先度が高くなります。
- つまり、優先度関数は、タスク率の単調増加関数です。
リアルタイムシステムの処理能力の制限
つまり、リアルタイムタスクシステムが満たす必要がある条件:
システム内の各タスクの合計プロセッサ使用率は1を超えることはできません。
2.11.5優先順位の逆転
- つまり、NASAのマーズパスファインダーで低優先度が高優先度を優先する状況が発生しました
- 優先度に基づいたプリエンプティブスケジューリングスキームで発生する可能性があります
- 解決策:優先度継承:優先度の低いタスクは、同じリソースを共有する優先度の高いタスクの優先度を継承します