[オペレーティングシステム]スケジューリングプロセス


これは学習ノートで、李俊熙。のオペレーティングシステムの授業をまとめました.

基本用語


Queue:FIFO、先入先出、これは分かりやすい構造です.
  • Batch Processing System:複数のプログラムが順次実行されるシステム.複数のプログラムを同時に実行できないため、他のプログラムの遅延時間が存在することが大きな欠点である.
  • MultiTasking:複数のアプリケーションを単一のCPU上で同時に実行する方法.
  • Multi Processing:複数のCPUが1つのプログラムを並列に処理することによって実行速度を速める方法.
  • Multi Programming:CPUの稼働状況を最小化することで利用率を向上させる.

    データの読み取りや書き込みには多くの時間がかかります.マルチプログラミングとは、この時間に他のプログラムに対して演算を実行することである.
  • Process:メモリで実行中のプログラムをプロセスと呼びます.(bynary、exe、ELF)アプリケーションは、1つまたは複数のプロセス間で通信(IPC)を行います.
  • Real Time OS(RTOS):アプリケーションのリアルタイムパフォーマンスを確保するためのオペレーティングシステム.プログラムが正しく起動され、完了していることを確認します.
  • General Purposeオペレーティングシステム(GPOS):プロセスの実行時間に影響を与えない通常の目的のオペレーティングシステム.
  • Scheduling Algorithm


    スケジューリングアルゴリズムは、プロセスをどの順序で実行するかを定義します.
    プロセスは、記憶媒体の読み取りやI/Oの使用を行わずにCPUを完全に使用するものとします.
    次のように、プロセス処理要求が受信されたとします.
    322211

    FIFO(FCFS) Scheduling


    最も簡単なスケジューラです.(Batch Processing System)
    FCFS(First Come First Serviced)スケジューラとも呼ばれます.
    112223

    SJF Scheduling


    「Shortest Job First」(SJF)は、短いプロセスの実行時間順で実行されるスケジューリング方法です.
    311222

    Priority-Based Scheduling


    これを優先度ベースのスケジューリングと呼びます.
  • 静的優先度:各プロセスの優先度を事前に指定し、優先度で処理
  • 次のプロセス(優先度)リクエストがある場合:
    3(10)2(20)2(20)2(20)1(1)
    各計画プログラムによる:
    入力3(10)2(20)2(20)2(20)2(20)2(1)FIFO 1(1)2(20)2(20)2(20)2(20)3(10)SJF 1(1)3(10)2(20)2(20)2(20)2(20)2(20)3(10)1)

    Round Robin(RR) Scheduling


    時分割システムのために設計されたスケジューリング方法.プリエンプトFCFSとも呼ばれます.
    タイムスライスとは、各プロセスに一度に割り当てられたCPU時間のことである.
    プロセスを終了しない場合は、タスクを別のプロセスに切り替え、順番に実行します.
    通常、平均待ち時間は長く、Context切替時間よりも時間量が大きい必要があります.

    Process State

  • 基本
  • 詳細
  • State

  • newstate:プロセスが作成されたばかり
  • ready state:プロセスがCPU上で実行されるのを待つ
  • running state:プロセスに含まれるコマンドが実行中
  • waiting state:プロセスは、特定のリソースまたはイベント(ファイル読み込み完了、出力完了)
  • を待っています.
  • 保留待ち:プロセスは待機状態でメモリを失う
  • 保留ready:プロセスはストレージデバイス以外のすべての必要なリソースを所有しています
  • terminated state:プロセス完了
  • State Transition

  • ready->run(dispatch):優先度の高いプロセス実行コマンドを選択
  • run->ready(timer runout):クロック中断による制御権のプリエンプト(プリクリア、独占防止)
  • run->待機(ブロック):プロセッサが待機I/O、リソースなどに切り替わる
  • watching->ready(wakeup):I/O完了またはリソース割り当て後に再実行
  • swap-out(suspend):準備完了(スタンバイ)状態でストレージデバイスを返却し、準備完了(遅延待ち)状態に移行
  • swap-in(リカバリ):遅延準備完了(遅延待ち)状態でストレージデバイスを割り当て、準備完了(待機)状態に移行
  • 線形と非線形

  • プリエンプトスケジューラ:1つのプロセスは、他のプロセスではなく別の実行中のプロセスを占有できます.
  • 非線形スケジューラ(Non=プリエンプトスケジューラ):1つのプロセスが完了していない場合、他のプロセスはCPUを使用できません.
  • わりこみ


    割り込みとは、CPUがプログラムを実行する際に、I/Oハードウェアなどのデバイスに異常が発生したり、処理が必要になったりした場合に、CPUが処理を通知する技術である.
    中断はイベントです.

    割り込み処理例

  • 記憶媒体でデータ処理が完了した場合、block状態にあるプロセスをready状態に変換する必要がある.この場合、割り込みが発生して通知されます.
  • 0に異常が発生した場合、オペレーティングシステムに通知します.OSはプロセスを停止し、エラーを表示します.
  • ないぶわりこみ

  • SW Interruptは、主にプログラム内部で無効なコマンドやデータが使用されている場合に発生します.
  • 0
  • ユーザモードで許可されていないコマンドまたは空間(カーネル)へのアクセス
    計算結果がoverflow/Underflowの場合
  • がいぶわりこみ

  • ハードウェア割込み、主にハードウェアによるイベント
  • 電源異常
  • 機器異常
  • キーボードIO関連イベント
  • タイマーイベント
  • システムよびだしわりこみ

  • システム呼び出しを実行するために、コードに割り込みコマンドを強制的に追加し、CPUに割り込みコマンドを発行する.
  • 例)

    mov eax, 1
    mov ebx, 0
    int 0x80
  • eaxレジスタは、システム鳴動番号
  • を含む
  • ebxレジスタは、システム呼び出しのパラメータ値
  • を含む
  • ソフトウェア割り込みコマンドの呼び出し時に0 x 80を超える
    -CPUはユーザモードをカーネルモードに変換する.
    -「Interrupt Descriptor Table」(IDT)で0 x 80のアドレスを検索して実行します.
    -システムコール()関数で、eaxからシステムコール番号を検索し、対応するシステムコール関数にナビゲートします.
    -対応するシステム呼び出し関数を実行した後、カーネル・モードからユーザー・モードに変更し、次のコードを再実行します.
    IDT(Interrupt Descriptor Table)は、割り込み番号と実行コードを示すアドレスを予め定義している.コンピュータが起動すると、オペレーティングシステムはIDTを記録します.
    Linuxの場合
  • 0から31:例外
  • 32-47:ハードウェア割込み(周辺機器タイプ/数)
  • 128(0 x 80):システムコール
  • %eaxkernel function(system call)%ebx1sys_exitint2sys_forkstruct pt_regs3sys_readunsigned int4sys_writeunsigned int5sys_openconst char*