180 likes | 325 Views
第 3 回 CPU の管理と例外処理. OS によるハードウェアの管理 CPU の構成、動作 CPU の管理 例外処理、割り込み処理 コンテキストスイッチ システムの起動と終了. OS によるハードウェア管理. 管理対象 計算資源(メインプロセッサ( CPU )、メモリ、入出力装置など) ハードウェア環境の把握 システム起動時(ブート時)のハードウェアの設定 故障デバイスの検出 ハードウェアの制御 アドレスマッピングによるデバイス制御 割り込み装置. CPU の管理とは?. CPU の状態を管理(実行管理の一部)
E N D
第3回 CPUの管理と例外処理 • OSによるハードウェアの管理 • CPUの構成、動作 • CPUの管理 • 例外処理、割り込み処理 • コンテキストスイッチ • システムの起動と終了
OSによるハードウェア管理 • 管理対象 • 計算資源(メインプロセッサ(CPU)、メモリ、入出力装置など) • ハードウェア環境の把握 • システム起動時(ブート時)のハードウェアの設定 • 故障デバイスの検出 • ハードウェアの制御 • アドレスマッピングによるデバイス制御 • 割り込み装置
CPUの管理とは? • CPUの状態を管理(実行管理の一部) • プロセス制御(コンテキストスイッチ:プロセスの切り替え)の実装で使用される • 例外処理 • 割り込み処理
ALU IR (非パイプライン)CPUの構成例 data bus address bus RDR PC R1 R2 MAR R3 CCR WDR 主記憶装置 命令制御装置
CPUの構成 • ALU…算術演算装置 • PC…プログラムカウンタ • MAR…Memory Address Register. アドレスを 指定する • RDR…Read Data Register • WDR … Write Data Register • IR … Instruction Register. 命令(Instruction: Operation Code)を入れる • CCR … Condition Code Register. 条件コードレ ジスタ。分岐命令などに使用
CPUの管理 • プロセッサには動作レベルがある • 特権モード • 非特権モード • 割り込み可 • 割り込み禁止 • PSW (Processor Status Word)を通してプロセッサの状態を把握し、管理・制御する • 割り込み制御 • 条件コード • PSWを構成するものの例 • CCR • PC • etc.
例外処理 • 実行中に異常が発生した場合(ゼロ除算など)に、異常に対処する機構 • ゼロ除算例外、ページ例外など • 通常、CPUは例外を感知すると、OSによって事前に登録された例外処理ルーチン(例外処理プログラム)に制御を移す
割込み処理 • そもそもは、入出力デバイスの制御のために必要となった • cf.) ポーリング(polling) • 割込み信号を受け取ると、実行中のプロセス(プログラム)を一旦中断して、割り込みベクタの示す割り込み処理ルーチンに制御を移し、その後再び中断したプロセスを再開する動作・仕組み • 割込み信号 … 各デバイスの状態の変化を CPUに通知 する信号 • 割込みベクタ … 割込みハンドラの開始アドレスが書か れているアドレス • 割込み処理ルーチン(割込みハンドラ) … 割込みがかかった時に行わせる処理が書かれたプログラム • 割込みは、特権モードで実行される
割込みの種類 • 内部割込み … プログラム実行の結果発生 する割込み • プログラム割込み:プログラム実行中のエラー • ゼロ除算、オーバフロー、メモリアクセス保護違反 • SVC割込み:システムコールによる特権モード移行 • 外部割込み … プログラム実行とは別に発 生する割込み • 入出力割込み • タイマー割込み • 接続されたデバイスからの障害などによる割込み
割込み処理の大まかな流れ • 割込み信号(シグナル)を受け取る • 現在実行中のプロセスのPSWを退避する • 動作モードを特権モードにする • 割込みベクタに示されたアドレスに飛ぶ • 割込み処理ルーチンを実行する • 動作モードを非特権モードに戻す • 退避させたPSWを回復する • 中断したプロセスを再開する
システムコールを例とした割込み ユーザプログラム 関数からの復帰 syscall(x,y) 非特権モード パラメータ、システムコール番号の設定など ライブラリ 戻り値の設定など • SVC命令の実行 • 割込みの発生 ユーザプログラム の復帰 システムコールのサブルーチン 特権モード • 割り込み処理 • 割込みの分析 • パラメータ取得 割り込みハンドラ システムコールを処理するサブルーチンの選択
割り込みレベル・割込みベクタ・割込みハンドラー割り込みレベル・割込みベクタ・割込みハンドラー • 割込みレベル • 割込みには、種類を識別するための番号が定義(割込みレベル) • 割込みレベルで、処理の緊急度を示す • 割込み中の他の割込み処理の対応 • 割り込み禁止にセット • より高いレベルの割込みを許可(多重レベル割込み) • 割込みベクタ • 割込みの種類・レベルごとに用意されている • 割込みベクタにセットされた番地へ飛ぶ • 割込みハンドラー • 割込み処理の内容が記述されたルーチン(プログラム) • 割込みベクタに種類に応じて予め登録される
コンテキストスイッチ • プロセスの切り替えをコンテキストスイッチという • コンテキストスイッチも割込み機構が使用されている • タイマー割込み • コンテキストスイッチが起こる場合 • プロセスが終了した • 時分割処理において規定の時間(定時間:quantum time)が経過 • 優先して実行すべきプロセスが変わった(横取り) • 入出力の完了待ち(待ち状態)になった
遊休状態 遊休状態 コンテキストスイッチの流れ プロセスA プロセスB タイマー割込み または SVC割込み PSW(レジスタ)退避 PSW(レジスタ)復元 タイマー割込み または SVC割込み PSW(レジスタ)退避 PSW(レジスタ)復元
システムの起動(boot)の流れ 電源投入 初期チェック 接続デバイスのチェック、初期化 ブートストラップ 初期プログラムIPL (Initial Program Loader) IPL OS コマンドインタープリタ
ブートストラップ • IPLをHDDなどからメモリに書き出す • 入力装置(HDD)のハードウェアの状況確認 • CPUがもっているカウンタをセット(書き込むバイト数) • 指定されたデバイスから1バイト読み込む • 読み取ったデータデータをMARが指すメモリ番地に書き込む • メモリアドレスレジスタの値を1増やす • カウンタを1減らす • カウンタの値が0になるまで、3-6を繰り返す • 0になったら、PCを書き込み始めたメモリ番地に設定してそこからプログラム(IPL)を開始する
システムの終了(shutdown) • 新しいプロセスの生成の停止 • 実行中のプロセスの停止と停止の確認 • システムの統計情報、システムプログラムのファイルのクローズ • システム自体の停止 • ファイルシステムのマウントの解除 • 各デバイスの終了処理