OS を支援するプロセッサ機能 プロセッサの動作モード 割込み (Interrupt)/ 例外 (Exception) 入出力装置との並列動作 マルチプログラミング (multi-programming) OS の機能 : ユーザプログラムの実行制御の管理 コンピュータ資源の管理 管理するためには 特権 が必要 プロセッサの動作モード 特権モード = OS の実行モード ( カーネルモード, スーハ ーハ イサ モート ともいう ) 非特権モード = ユーサ フ ロク ラム / 応用フ ロク ラムの実行モート ( ユーザモード, フ ロフ レムモート, スレーフ モート ともいう ) 1
特権モードと非特権モードの概念 特権命令 特権モード のすべての資源を利用可能 非特権モード の制限された資源のみ利用可能 プロセッサの動作 スーパーバイザ呼出し (SVC), システムコール 割込み, 例外 Supervisor Call 命令の実行 メモリへのアクセス 特権モード すべての命令 すべての領域 非特権モード 特権命令は不可 ユーザ領域のみ プロセッサの命令 特権 (privilege) 命令特権モードでのみ実行可能な命令 ( 入出力命令, 動作モート 変更命令, 記憶保護命令など ) 非特権 (nonprivilege) 命令 非特権モードで利用できる命令 ( 通常の命令 ) ( 非特権モードで入出力などの OS 機能を利用するにはスーパーバイザ呼出し (SVC) による ) 2
割込み コンピュータの命令実行とは独立に発生する事象 ( イベント ) に対応するする処理を実行するための仕組み 通常の命令実行 割込みがあった場合の命令実行 命令 n-2 命令 n-1 命令 n 命令 n+1 命令 n+2 割込み発生 命令 n-2 命令 n-1 命令 n 命令 n+1 命令 n+2 割込み処理プログラム 命令 n を実行後, 割込み処理プログラムを実行する 割込み処理プログラム実行後, 元のフ ロク ラム ( 命令 n+1) に戻る 割込みの種類 外部割込み ( ハードウェア割込み ) 内部割込み ( ソフトウェア割込み ) 名称 マシンチェック割込み タイマ割込み 入出力割込み リスタート割込み プログラム割込み スーパーバイザ呼出し (SVC) 割込み 説明 ハードウェアの故障 障害, 電源の異常などにより発生する の使用時間が所定の時間を経過したときに発生する TSSで使用される 入出力動作の完了や装置の状態が変化 ( 故障など ) したときに発生する 外部から再起動がかけられたときに発生する ゼロ除算やオーバーフロー, プログラム上のエラーにより発生する 処理プログラムが OS の機能 ( 入出力など ) を使うときに発生する SVC 割込み, システムコールともいう 3
基本情報技術者試験問題 ( 平成 17 年度秋期, 平成 18 年度春期 ) 問 : 外部割込みの原因となるものはどれか アゼロによる除算命令の実行イ存在しない命令コードの実行ウタイマによる時間経過の通知エページフォールトの発生 基本情報技術者試験問題 ( 平成 16 年度春期 ) 問 : 内部割込みに分類されるものはどれか ア商用電源の瞬時停電などの電源異常による割込みイゼロによる除算を実行したことによる割込みウ入出力が完了したことによる割込みエメモリパリティエラーが発生したことによる割込み 入出力割込みの必要性 コンピュータ資源の効率的利用 プロセッサと入出力装置の動作速度差の吸収 プロセッサの命令実行速度 10-9 s 主記憶の読書きの速度 10-7 ~ 10-6 s ディスク装置の読書きの速度 10-3 プリンタ ( 印字速度 ) 10-3 ~10-1 s 人間の反応速度 ( キーボード, マウス ) 10-1 s ( 人間が1 文字キー入力する間には数千万 ~ 数億命令を実行できる ) s 4
入出力動作の完了を知る方法 (1) ポーリング (polling) / busy-wait 入出力装置側に入出力動作の完了を示すフラグ (1/0 で完了 / 未完了を表す ) を用意する はプログラムでフラグを監視し, 動作完了をチェックする 入出力動作起動 起動 周期的に完了フラグをチェック ( この間 は何もできない ) NO 入出力動作は完了したか YES 次の処理 入出力装置 ポーリング方式はフラグチェックに要する時間が無駄になる 入出力の完了を割込みによって に通知する 入出力装置を起動してから動作が完了するまで は別の処理ができる 入出力動作の完了を知る方法 (2) 割込み / 例外 (interrupt/exception) が入出力装置に起動をかける 入出力装置 入出力装置が に動作完了を割込みにより知らせる プログラム A の実行 プログラム B の実行 5
割込み制御 割込みが受け付けられると, 1 現在実行中のプログラム ( プロセス ) を一時中断し, 後でプログラムの続行が可能なように,PC, レジスタ群, プロセッサの状態 (PSW:Program Status Word) を退避する PSW : プロセッサ状態 ( スーパバイザー / ユーザ ) 割込みの許可 / 不許可 受付可能な割込みの優先度 フラグレジスタ ( 演算命令などの実行結果の状態を示すレジスタ ) など, プロセッサ状態語 ともいう 2 割込みの原因を調べ, 原因に応じてあらかじめ指定されたプログラム ( 割込み処理プログラム ) を実行する 3 割込み処理プログラムの実行が終了すると, 退避した PC, レジスタ群,PSW を復帰し,( あたかも何事もなかったかのように ) 元のプログラムの実行を再開する 割込み受付け時のプロセッサ動作 割込み要求 α-1 実行中のプログラム 命令 n-1 命令 n の実行完了後の プロセッサの動作 1 次に実行する命令の番地 (α+1) を退避する β 割込み処理プログラム プロセッサの PC, レジスタ群, PSW を退避する α α+1 命令 n 命令 n+1 2 割込み原因を調べ, 割込み処理ルーチンへジャンプする 割込み処理ルーチン ( 通常のプログラムと同じ ) 退避領域 ( 主記憶内 ) 3 フ ロク ラムカウンタに戻り番地 (α+1) を戻す フ ロセッサ プロセッサの PC, レジスタ群, PSW を復帰する 割込み処理ルーチンからリターンする PWS レシ スタ レシ スタ PC PSW レシ スタ α+1 フ ロセッサステータスワート 現在のフ ロセッサの実行状態を保持するレシ スタ PC(=α+1) 6
基本情報技術者試験問題 ( 平成 14 年度春期 ) 問 : 割込みが発生すると, あるアドレスが退避され, 割込み処理が実行される 割込みが完了すると, 退避されていたアドレスが復帰され, 割込み直前に実行していたプログラムの実行が再開される 退避されていたアドレスはどれか ア割り込みが発生したときに実行していた命令のアドレスイ割り込みが発生したときに実行していた命令の次の命令のアドレスウ割込み処理の最後の命令のアドレスエ割込み処理の先頭の命令のアドレス 基本情報技術者試験問題 ( 平成 14 年度秋期 ) 問 : 割込み処理の流れを示す次の記述中 に入る処理はどれか [ 割込み処理の流れ ] (1) ユーザモードから特権モードへの移行 (2) (3) 割込み処理ルーチンの開始番地の決定 (4) 割込み処理ルーチンの実行 ア CCW(Channel Command Word) の読出しイオペランドの読出しウ資源の割当てエレジスタ類の退避 7
多重レベル割込み (multi-level interrupt) 割込み原因の緊急度に応じて, 割込みの種類ごとに優先度をもたせる 例 : プロセッサの誤動作や電源異常は最も優先度を高くする 高速の入出力装置 ( ディスクなど ) からの割込みは低速の入出力装置 ( キーボードなど ) からの割込みよりも優先度を高くする 割込み処理中により優先度の高い割込みがあれば, 優先度の高い割込み処理を行う 優先度が同じ, あるいは優先度の低い割込みは待たせる 割込み処理中であっても, 優先度の高い割込みが発生したときには, 優先度の高い割込みを受け付けて, 割込み処理を行う 例題 : 表に示す3 種類の割込み種別をもち, 多重割込みを許すシステムがある 割込みCが発生した20ms 後に割込みAが発生し, さらに割込みA 発生後 30ms 後に割込みBが発生した この場合, 割込みCの処理が終了するまでの時間は何 msか ここで, 割込みの優先度はA>B>C であり, 割込みAは50msごとに周期的に割込みが発生するものとする 割込み種別 A B C 周期 (ms) 50 非同期非同期 割込み処理時間 (ms) 10 20 70 8
C A B A 0 20 40 60 80 100 120 ms A B C 20 20 30 110ms 割込みとマルチプログラミング マルチプログラミング 主記憶上に複数のプログラムを置き, それぞれの入出力動作時の の空き時間 ( 遊休時間, アイドルタイム ) を利用して, 他のプログラムを実行し, 見かけ上, 複数のプログラムを同時に実行する方式 システム全体の処理時間の短縮 9
マルチプログラミングの効果 I/O I/O 計 プログラム A 3ms 5ms 4ms 6ms 3ms 21ms プログラム B 2ms 7ms 3ms 4ms 3ms 19ms 0 5 10 15 20 25 プログラム A プログラム B の空き時間 ( 遊休時間, アイドルタイム )=6ms 基本情報技術者試験問題 ( 平成 15 年度秋期 ) 三つのプロセスの優先度と, 各プロセスを単独で実行した場合の と入出力装置 (I/O) の動作順序と処理時間は, 表のとおりである 三つのプロセ スが同時に実行可能状態になってから, すべてのプロセスの実行が終了するまでの,の遊休時間は何ミリ秒か ここで,I/O 装置の使用は競合せず,OSのオーバーヘッドは考慮しないものとする ( 複数のプロセスが同時に実行可能な場合は, 優先度の高いプロセスが実行されるものとする ) 優先度単独実行時の動作順序と処理時間 ( 単位ミリ秒 ) 高中低 (3) I/O(5) (2) I/O(5) (2) (2) I/O(6) (2) I/O(5) (2) (1) I/O(5) (2) I/O(4) (1) 競合 : 複数のプログラムで, 同時に, 同一の入出力機器を使用しないこと オーバーヘッド : システム全体にかかわる制御や管理などをおこなうのにかかる時間 例えば, プログラムの切替に要する時間やIO 動作の制御に要する時間など 基本情報技術者試験では プロセス ではなく タスク という用語で出題されることが多いが, 同じ意味と解釈してよい 10
0 5 10 15 20 優先度 高 中低 1 2 3 処理実行時間 I/O 処理実行時間 1+2+3=4ミリ秒 利用率 =の稼働時間 全体の処理時間 =17ミリ秒 21ミリ秒 = 0.81 = 81 % コンテキストスイッチ (context switch) プログラムの実行切替えを コンテキストスイッチ という コンテキストスイッチの発生要件 プログラムの実行が終了した 入出力の完了待ち ( 待ち状態 ) になった TSSにおいて規定の時間 ( クオンタム :quantum) が経過した 優先して実行すべきプロセスが発生した ( 横取り, プリエンプション :preemption) 11
コンテキストスイッチ プロセス A プロセス B プロセス B の実行を中断してプロセス A の実行に切り替える プロセス A の実行を中断してプロセス B の実行に切り替える プロセス A の実行 プロセス B の実行 いま実行中のプロセス A を中断して, プロセス B に実行を切り替えるには? メモリ プロセス A いま実行中のプロセスAのPC, レジスタ群, PSWをメモリに退避し, PSW レジスタ PC SP プロセス B プロセス A 用のレジスタ退避場所 プロセス B 用のレジスタ退避場所 12
いま実行中のプロセス A を中断して, プロセス B に実行を切り替えるには? メモリ プロセス A いま実行中のプロセスAのPC, レジスタ群, PSWをメモリに退避し, PSW レジスタ PC SP プロセス B メモリ中に退避してあるプロセス B の PC, レジスタ群,PSW を に復帰する プロセス A 用のレジスタ退避場所 プロセス B 用のレジスタ退避場所 コンテキストスイッチの流れ プロセス A 割込み処理ルーチン プロセス B プロセス A が入出力要求を出し (SVC), 割込みが発生 プロセス A は待ち状態 の PC, レジスタ群,PSW をプロセスの再実行に必要な情報を主記憶内に退避 次に実行するプロセスを決定 プロセス B は実行可能状態 次に実行するプロセスの PC, レジスタ群,PSW を 内に復帰 OS プロセスの実行 13