Comments
Description
Transcript
7 第3回 プロセス管理 (時間管理の仕組・プロセスの状態・割込) 1
第3回 プロセス管理 (時間管理の仕組・プロセスの状態・割込) 1) コンテクストの説明として正しいものはどれか ① プログラムの実行を管理する情報であり、プロセスの切替時にそのままではその情報が失われるため、メモリ上から CPU 上へ退避しなければならない情報である。具体的には現在使っている主記憶のアドレスが含まれる。 ② プログラムの中断時にその保存を管理する情報であり、プロセスの切替時にどのプログラムが使われていたかを管理情報 としてOS内に保存する。再開時にはその情報からプログラムを主記憶上に再び展開(ロード)してから実行を再開する。 ③ プログラムの実行において CPU 上に置かれる情報であり、プロセスの切替時にそのままではその情報が失われるため、 CPU 上からメモリ上へ退避・保存しなければならない情報である。具体的には汎用レジスタ GR・プログラムカウンタ PC、プロセ ッサ状態レジスタ PSW などの値が含まれる。 ④ プログラムの実行結果のことであり、プロセスの切替時にそのままでは実行結果が失われるため、実行結果を主記憶から ハードディスクに退避・保存する。 2) プロセスの切替を起こすきっかけとし誤っているものはどれか ① プログラムが入出力など待ちを伴う操作を行うときに、プログラムが自らCPUを放棄する場合 ② プログラムが時刻を監視して、自分に割当てられた時間を過ぎたら自主的にCPUを放棄する場合 ③ 入出力など外部で「事象」が発生しそれの対応を行うために、プログラムからCPUを強制的に取上げる場合 ④ タイマーによる割込みを強制的に発生させて、プロセスの実行時間が割当量を超えたかどうかを定期的に検査し、超えてい れば強制的に取上げる場合 3) 割込みの記述について、正しいものはどれか ① 割込みはプログラムがその処理以外の理由で発生した事象を検出するための仕組で、発生すると自動的に予め決められ たプログラムを実行する。 ② 割込みはコンピュータの外部で発生した異常を検出するための仕組で、発生すると自動的に警報が鳴る ③ 割込みはプロセスを切替えるための仕組で、プロセスが入力待ちに入るときなどに発生し、それによって他のプロセスにCP Uを譲る。 ④ 割込みはネットワークにつながる他のコンピュータからの通信を受け取るための仕組で、通信メッセージが到着するとその 処理プログラムが起動される。 4) 割込み発生直後の動作について、正しいものはどれか ① 割込み発生時点で実行していた命令を無効にして、割込み処理プログラムへジャンプする ② 割込み発生時点で実行していた命令の実行を完了してから、割込み処理プログラムへジャンプする ③ 割込み発生後、プログラム上で初めて割込み検査(インタラプトチェック)した時点で、割込み処理プログラムへジャンプする ④ 割込み発生後、プログラムが初めて割込み受付状態をオンにした時点で、割込み処理プログラムへジャンプする 5) 割込みの復帰について、正しいものはどれか ① 割込みプログラムの最後まで実行すると、自動的に次のプロセスへジャンプする ② 割込みプログラムの最後まで実行すると、割込み時にセーブしてあった命令アドレスの次へ自動的に復帰する ③ 割込みプログラムの最後に、次のプロセスへジャンプするジャンプ命令を入れておき、それを実行してジャンプする ④ 割込みプログラムの最後に、復帰(リターン)命令を入れておき、それを実行することによって割込み時にセーブしてあった 命令アドレスの次へ復帰(リターン)する 6) 割込み発生時の、ハードウェアとソフトウェアの作業分担について正しいものはどれか ① 割込み発生・命令カウンタ・PSW・汎用レジスタの退避・割込み原因分析はハードウェア、割込み処理はソフトウェア、割込 みからの復帰(命令カウンタの回復)はハードウェア ② 割込み発生・命令カウンタ・PSW の退避はハードウェア、汎用レジスタの退避・割込み原因分析・割込み処理・復帰のため の汎用レジスタの回復・割込みからの復帰(命令カウンタの回復)はソフトウェア ③ 割込み発生はハードウェア、命令カウンタ・PSW・汎用レジスタの退避・割込み原因分析・割込み処理・復帰のための汎用 レジスタの回復はソフトウェア、割込みからの復帰(命令カウンタの回復)はハードウェア 7 ④ 割込み発生はハードウェア、命令カウンタ・PSW・汎用レジスタの退避・割込み原因分析・割込み処理・復帰のための汎用 レジスタの回復・割込みからの復帰(命令カウンタの回復)はすべてソフトウェア 7) 割込みとプロセスの切替えの関係について正しいものはどれか ① 関係ない ② プロセスの切替えと割込み発生は1対1に対応し、プロセス切替えは割込み無くては起こらず、また割込みは必ずプロセス 切替えを発生する ③ プロセスの切替えのうち、一部は割込みによるプロセスの CPU 取上げに依存するが、全ての切替えが割込みに起因する わけではなく、他の原因(プログラムが CPU を自主放棄する)によるものがある。但し、割込みはすべてプロセスの切替えの 直接の原因になる ④ プロセスの切替えのうち、一部は割込みによるプロセスの CPU 取上げに依存するが、全ての切替えが割込みに起因する わけではなく、他の原因(プログラムが CPU を自主放棄する)によるものがある。また、割込みはすべてプロセスの切替えの 直接の原因になるわけではなく、割込みの一部はプロセス切替えを引き起こすが、一部はプロセスを切替えず元のプロセス のまま実行を続ける 8) プロセスの状態の説明で、正しい組合せはどれか 実行中(running) 実行可能(ready) 待ち(waiting) ① プロセスが CPU を使っている状態 何か事象の発生を待っている状態 実行可能になるのを待っている状態 ② プロセスが CPU を使っている状態 CPU が空くのを待っている状態 何か事象の発生を待っている状態 ③ プロセスが CPU で実行できる状態 CPU が空くのを待っている状態 何か事象の発生を待っている状態 ④ プロセスが CPU で実行できる状態 何か事象の発生を待っている状態 実行可能になるのを待っている状態 9) 「CPU が空くのを待っている状態」の説明として正しいものはどれか ① プロセスに CPU (が割当てられ、プロセスの命令が順番に実行されている状態 a ) ② プロセスには CPU が割当てられていないが、その理由は外から来るデータや何か事柄が起こることを待っている状態。そ の待っている理由が解決しない限り、このプロセスは実行を始められない ③ 他のプロセスが CPU を使っているため、プロセスには CPU が割当てられていないが、このプロセスは(CPU が空いていな いという理由以外に)特に待っている事柄は無い状態。つまり CPU が空けば、すぐに CPU を割当てて実行させる事ができる 状態 ④ プロセスには CPU が割当てられていないが、その理由はプロセスのプログラムが今実行すると困るような状態。その今す ぐ実行すると困る理由が解決すれば、このプロセスは実行を再開できる 10) 「待ち」(waiting)の状態の例として正しいものはどれか ① プログラムがキーボードからの入力を待っている状態は、「待ち」の状態 ② プログラムが一定時間 CPU を割当てられた後、「タイムスライス」を消費したために待たされているのは、「待ち」の状態 ③ 優先度の低いプロセスが、優先度の高いプロセスに CPU の利用権を譲った後に待たされているのは、「待ち」の状態 ④ 入出力割込みが発生し、OS内の割込み処理プログラムを実行しているために待たされているのは、「待ち」の状態 11) 右のプロセス状態遷移図のうち、矢印の説明( a )、 ( b )、( c )、( d )に入る語の正しい組合せはどれか ( a ) ( b ) ( c ) ( d ) ① CPU 割当 CPU 横取 事象待ち 事象発生 ② CPU 割当 CPU 横取 事象発生 事象待ち ③ CPU 横取 CPU 割当 事象待ち 事象発生 ④ CPU 横取 CPU 割当 事象発生 事象待ち ( a ) 実行可能 実行中 ( ( d b ) ) ( c ) 待ち 8 12) 次の状態遷移図に関する記述で、空欄(a)(b)(c)(d)(e)に入る語の正しい組合せはどれか 状態遷移図は( a )と( b )を記述する。( a )は長円として書き、( c )を付記する。( b )は矢印として書き、( d )を付 記する。矢印は1つの( a )から他の( a )への遷移を表す。1つの( a )から出る矢印は、他のすべての( a )へ接続してい るとは限らない。繋がっていない( a )へは、( e )と言える。 ( a ) ( b ) ( c ) ( d ) ( e ) ① 状態 遷移 状態名 遷移条件 遷移パスがない ② 状態 実行 状態名 コマンド名 条件が欠落している ③ 遷移 状態 遷移条件 状態名 遷移が起こらない ④ 実行 状態 コマンド名 状態名 条件が欠落している 13) 右図に対応する状態変化の記述で、間違っているも ① (a)は「事象待ち」で実行中から待ちへの遷移 ② (b)は「事象発生」で待ちから実行可能への遷移 ③ (c)は「事象発生」で待ちから実行可能への遷移 ④ (d)は「CPU 割当」で実行可能から実行中への遷移 (b) (a) のはどれか プロセス A 実行 プロセス B 入出力待ち 実行 実行 入出力待ち 入出力待ち 実行 (c) (d) 14) CPU横取りの説明として正しいものはどれか ① 実行中にあるプロセスを待ち状態にしてCPUを空けること ② 実行可能状態にあるプロセスを待ち状態にしてCPUを空けること ③ 実行可能状態にあるプロセスを並べ替えて、次に実行中にできるようにすること ④ 実行中にあるプロセスを実行可能状態にすること 15) CPU横取り(取上げ)を起こす原因として、間違っているものはどれか ① 今実行しているプロセスAより優先度の高いプロセスBが実行可能になったとき ② 今実行しているプロセスAと同等の優先度のプロセスが実行可能で、かつラウンドロビン(順回し)割当てをしているとき ③ 今実行しているプロセスAのタイムスライスが完了したとき ④ 今実行しているプロセスAに対して割込みが発生したとき 16) ディスパッチャの記述として正しいものはどれか ① CPU が空いた時、実行可能状態にあるプロセスを1つ選んで、CPU 上にロードする仕組 ② CPU が空いた時、待ち状態にあるプロセスを1つ選んで、CPU 上にロードする仕組 ③ 実行可能状態にあるプロセスを、優先順位を付けて並べなおす仕組 ④ 待ち状態にあるプロセスを、優先順位を付けて並べなおす仕組 17) (基本情報 平成 20 年春 午前問 29) 図はマルチタスク で動作するコンピュータにおけるタスクの状態遷移を表したもの である。実行状態のタスクが実行可能状態に遷移するのはどれ か。 ① 自分より優先度の高いタスクが実行可能状態になった。 ② タスクが生成された。 ③ 入出力要求による処理が完了した。 ④ 入出力要求を行った。 18) リアルタイムシステムについて、正しいものはどれか ① 実行の様子がその場で(リアルタイムに)追跡できるシステム ② 処理能力が高くて早く実行が済み、結果を待たなくてもよいシステム ③ あらかじめ決めた一定の時間内に処理が終わる(答が返る)システム 9 ④ 時刻に従って仕事の実行が始まるシステム 19) リアルタイムシステムに該当しないのはどれか ① ミサイル迎撃システム ② 化学プラントでのバルブ流量制御システム ③ 銀行の毎日の営業成績集計システム ④ 銀行の預貯金預け入れ・引出し管理システム(ATMの元帳) 20) (基本情報技術者 平成 16 年度春 問 31) CPU の処理時間を微小時間に分割し,それを実行可能な状態にあるタスクに 順に割り当てることを何というか。 ① オーバレイ ② スワッピング ③ タイムスライシング ④ リアルタイム処理 21) 右図の(a)~(g)に入れる言葉の組み合わせで、正しいも (d):ディスパッチ (e):横取り (f):事象発生 (g): 事象待ち (d) ) (b) 状態 ( ( (f) ② (a):実行可能状態 (b):実行中状態 (c):待ち状態 (e) ) ( ) (g) 消滅 ① (a):実行中状態 (b):実行可能状態 (c):待ち状態 生成 のを選べ ( (a) 状態 ) (c) 状態 (d):ディスパッチ (e):横取り (f):事象発生 (g): 事象待ち ③ (a):実行中状態 (b):実行可能状態 (c):待ち状態 (d):横取り (e):ディスパッチ (f):事象待ち (g): 事象発生 ④ (a):実行可能状態 (b):実行中状態 (c):待ち状態 (d):横取り (e):ディスパッチ (f):事象発生 (g): 事象待ち 22) プロセススイッチとは何か、正しいものを選べ ① 実行可能状態にあるプロセスXを中断し、そのプロセスXを再度プロセッサにロードし実行可能状態にすること ② 実行中状態のプロセスXを中断し、別の実行状態にあるプロセスYを選んでプロセッサにロードし実行可能状態にするこ と ③ 実行中状態のプロセスXを中断し、別の実行可能なプロセスYを選んでプロセッサにロードし実行中状態にすること ④ 実行可能状態にあるプロセスXを中断し、別の待ち状態にあるプロセスYを選んでプロセッサにロードし実行可能状態に すること 23) プロセススケジューリングとは何か、正しいものを選べ ① 実行可能状態にあるプロセスの中から、次にCPUを割り当てて実行状態にするプロセスを選ぶこと ② 実行中のプロセスを中断させ、実行可能状態にあるプロセスの中から、次にCPUを割り当てて実行状態にするプロセス を選ぶこと ③ 待ち状態にあるプロセスの中から、次に実行させるプロセスを選ぶこと ④ 実行中のプロセスの中から、次に実行可能状態にするプロセスを選ぶこと 24) タイムスライスでプロセススイッチするとは、どういうことか ① 現在実行しているプロセスが、生成されてから現在までの経過時間が一定値を超えると、プロセスを実行可能状態に移す こと ② 現在実行しているプロセスが、実行状態になってから(=CPUを割当てられてから)の経過時間が一定値を超えると、プロ セスを実行可能状態にすること ③ 現在実行中か実行可能状態にあるプロセスが、生成されてから現在までの経過時間が一定値を超えると、プロセスを停 止・強制終了させること ④ 現在実行可能状態にあるプロセスが、実行可能状態(=CPUが割当てられない状態)になってから現在までの経過時間 が一定値を超えると、このプロセスを優先してCPUを割当てる(=ディスパッチして実行状態にする)こと 25) 次の中から、必ずプロセススイッチを引き起こすわけではないもの(プロセス切替を起こさない可能性のあるもの)を選べ 10 ① プロセスが、待ち状態に入るようなOSサービスコール(SVC)を発行したとき(たとえば、入出力待ち、タイマー待ちなど) ② CPUが、入出力完了の割り込みを受けたとき ③ プロセスが、プログラムを終了したとき ④ CPUが、計算異常(オーバーフローなど)の割り込みを受けたとき 26) タイムスライスによるプロセススイッチをしないシステムの振る舞いの説明として、間違っているものはどれか ① 実行中のプロセスは、タイマーによって定期的に中断・切替されることが無いので、一旦走り出したら止められない ② 実行中のプロセスは、タイマーによって定期的に中断・切替されることが無いので、そのための余分な切替処理の無駄が なく、スループットが上がる ③ 実行中のプロセスは、入出力完了割込みなどで中断されることがあり、その時に優先度が高いプロセスが待っていればそ のプロセスに切り替わる。 ④ 実行中のプロセスは、待ち状態に入るようなOSサービスコール(SVC)を発行したとき(たとえば入出力待ち、タイマー待 ちなど)は、別の(実行可能な)プロセスに切り替わる 27) プロセスが(実行状態から)待ち状態に入るスイッチ(切替)を引き起こす原因は何か ① プロセスのタイムスライスが消費されて無くなった時 ② プロセスのプログラムが自ら、待ちを引き起こすOSサービスコール(SVC)を発行した時(たとえば入出力を起動して完了 を待つ、タイマーを起動して指定した時間が経過するのを待つ、など) ③ 他に優先度の高いプロセスが登場し(新たに生成されたか、もしくは既存のプロセスの優先度を上げた)、そのプロセスに CPUを譲らなければならない時 ④ プロセスが終了するとき 28) プロセスが待ち状態から実行可能状態に変わる理由は何か ① プロセスが待っていた事象(入出力完了待ちであれば入出力が完了した、タイマー待ちであれば指定した時間が経過し た)が発生した時 ② プロセスが、実行可能キュー(実行可能状態で待っているプロセスの待ち行列)の先頭にあって、今まで実行していたプロ セスからCPUが取上げられたとき ③ プロセスが、タイムスライスを消費したとき ④ プロセスが、待ち状態に入るようなOSサービスコール(SVC)を発行したとき 29) 実行可能状態にあるプロセスから1つ選んで、実行状態にする(ディスパッチする)とき、その1つを選択する仕組・手続きを なんと呼ぶか ① 割り込み処理プログラム(割り込みハンドらー) ② ディスパッチャー ③ スケジューラ ④ イベントハンドラー ≪割込み (ハードウェアの復習)≫ 30) 割込みとは(ハードウェアから見て) ① 割込みが発生すると、その信号が現在実行中のプログラムに伝えられて、プログラムの中で信号を読み取ることが出来る ② 割込みが発生すると、現在実行中のプログラムを最短経路で最後まで実行し、その後割込み処理プログラムを実行させ る ③ 割込みが発生すると、現在実行中のプログラムを強制的に異常終了させ、割込みプログラムを実行させる ④ 割込みが発生すると、現在実行中のプログラムを中断し、その状態を保存した上で、割込みプログラムを実行させる 31) 割込みの要因とは ① 割込みを起こす原因のことで、入出力動作終了、タイマー終了、回路異常、電源異常、演算等の処理異常などがある ② 割込みを起こす原因のことで、CPUへのすべての入力信号がこれに当る 11 ③ 割込みを起こす原因のことで、優先度が高いユーザが実行を開始するときに発生する ④ 割込みを起こす原因のことで、ネットワークから着信したときに発生する 32) 割込み処理プログラムは ① 割込み発生時に割込みを処理するプログラムで、必要な処理を行った後、システムを停止する ② 割込み発生時に割込みを処理するプログラムで、必要な処理を行った後、割り込んだときに保存した状態を復元すること によって元のプログラムに復帰する ③ 割込み発生時に割込みを処理するプログラムで、割込みの原因をユーザプログラムに伝えた後、消滅する ④ 割込み発生時に割込みを処理するプログラムで、必要な処理を行った後、割り込んだプログラムを先頭から再実行する (注) 割込みのハードウェアの仕組で大事なポイントは * 実行中のプログラムを中断するが、割込み処理の後、再開させる。割り込まれたプログラムは、あたかも何もなかったか のように見える * 割込み処理は、特定の番地に置かれた割込み処理プログラムによって行われる。割り込まれるプログラムはユーザアプ リケーションであるが、割込み処理プログラムは普通はOSの一部になる * 割込みの要因の詳細は教科書 p20-21 を参照 33) 割込み処理について、教科書 2.6.2 の記述を読んで、次の中から正しいものを選べ ① 割込み発生(受付)時には割込み処理プログラム(ハンドラー)にジャンプするが、割込み処理プログラムの先頭の命令で、 割込み処理の最後に元のプログラムに復帰するために、それまで実行していた命令のアドレス(PC)の値をメモリに保存する 必要がある ② 割込み発生(受付)時に、それまで実行していた命令のアドレス(PC)は、ハードウェアがメモリへ退避してくれるのでよい が、それ以外の情報、特にフラグレジスタの内容や汎用レジスタの内容を割込み処理プログラム(ハンドラー)の先頭でメモリ へ退避する必要がある ③ 割込み発生(受付)時に、それまで実行していた命令のアドレス(PC)やその他のハードウェア状態(PSW)、汎用レジス タの内容は、ハードウェアがメモリへ退避してくれるのでよいが、それ以外の情報、特に汎用レジスタの内容を割込み処理プ ログラム(ハンドラー)の先頭でメモリへ退避する必要がある ④ 割込み発生(受付)時に、それまで実行していた命令のアドレス(PC)やその他のハードウェア状態(PSW)、汎用レジス タの内容は、ハードウェアが退避してくれるので、割込み処理プログラム(ハンドラー)はすぐに割込みの処理(要因の判定と、 要因に対する処理)を行ってよい (注) p21 のソフトウェア割込みは、「システムコール」(ユーザプログラムがOSの機能を呼出す)を実現するのに使う割込みであ る。わかりにくいので、追加説明をしておく。 まず、システムコールは、ユーザプログラムの中でOSの機能 (たとえば入出力を行うとか、ファイルを読書きするとか、時刻を読 み出すとか、処理の優先度を変えるとか) を (関数・メソッドとして) 呼出して使う仕組である。OSはシステムに1つしかない資 源(プリンタなりファイルシステムなり)を管理しており、ユーザが利用する時には必ずOSを介さなければならない。Java で言えば、 プリンタに書き出す機能 System.out.println()や、システムの知っている時刻を読み出す Calendar クラスの get メソッドといった呼び 出しである。C言語だと、ライブラリの中の関数(printf や gettimeofday)を呼出すことになる。 これらを呼出すとその関数・メソッド の中で、OS内の入出力機能や時刻機能を呼出している。 このようなOSの(ユーザプログラムから呼出すことの出来る)機能は、 特殊な関数・メソッドの形で設けられている。 特殊な関数・メソッドと言ったのは、実は普通のユーザが定義する関数・メソッドの様に直接呼出すと、実行がユーザのセキュリテ ィレベルのままでOSの内部へ突入してしまい、そこに何の保護もないので、ユーザのプログラムが勝手にOSの中の変数を読ん だり書いたりできてしまう。そもそもOSは、ユーザが勝手に内容を書換えることは禁じている。なぜなら、OSはシステム全体に関 わる(共有の)資源を管理しているのであり、勝手に書き換えればOSが壊されて停止したり暴走したりするし、他人のデータに手 を突っ込んで書換えてしまったり出来る。これは困るので、OSの中に入るときはセキュリティの壁を越えなければいけないという ことにし、その壁の入り口の門で十分な検査(このユーザがやってよい操作か、つまりこのユーザがこの操作を行う権限があるか の検査)を行う。それと共に、入り口の場所を1箇所(OS機能の呼び出しの入り口だけ)に制限し、他のOS内部関数を直接呼出 12 すことは出来ないようにしてある。 このセキュリティの壁の門を守るハードウェア機構として、割込み(と「特権モード」)を使っている。 もともと割込みは、ユーザプロ グラムを実行しているときにたとえばプリンタが終了して割込むとすると、割込みで走るプログラムはプリンタを管理するための、 セキュリティ特権の高いOS内のプログラムであるから、割込みでは必ずプログラムの実行セキュリティモードのレベルを「ユーザ レベル」から「特権レベル」に切替える(上げる)操作が伴う。その代わり、割込みの入り口は1箇所に限定されており、その入り口 で権限や操作の矛盾のチェックを行うことが出来るのである。 そのようにして、入出力やタイマーなどのCPU外部の事象(知ら せたいこと)が発生したときに発生する割込みでは、ユーザレベルから特権レベルへの移行をさせるのだが、これをそのまま流用 して、ユーザプログラムがOS内のメソッド・関数を呼出す(=OS機能を呼出す)時にも、割込みの仕組に門の役割をさせる。 具体的には、命令の1つとしてシステムコール (別名 SuperVisor Call、略してSVC命令)という命令をハードウェアで用意し、そ れは単に割込みを起こさせるだけにする。このシステムコール(SVC)命令を実行すると、割込みが起こり、特権モードへ移ると共 に、割込み処理プログラムへジャンプする。割込み原因の解析の結果、SVC命令であることが分かるので、SVCの引数で指示さ れているOS機能のメソッド・関数へジャンプすればよい。 実は、大抵のCPUでは、実行しようとする命令の命令コード(OPコード)が予め定義されたもので無いことを示す「命令コード違 反」という割込みが定義されており、これを使ってSVCを実現しているCPUも多い。要するに、定義されていない命令コードを書 いておけば、それでSVCになる、という仕掛である。(ここの段落は、話の本質では無い。) ≪解答≫ 1) ③ 2) ② 3) ① 4) ② 5) ④ 6) ② 7) ④ 8) ② 9) ③ 10) ① 11) ④ 12) ① 13) ② 14) ④ 15) ④ 16) ① 17) ① 18) ③ 19) ③ 20) ③ 21) ② 22) ③ 23) ① 24) ② 25) ④ 26) ① 27) ② 28) ① 29) ③ 30) ④ (現在実行中のプログラムは、強制終了ではなくて中断する) 31) ① 32) ② 33) ② (おまけ) 1) (基本情報技術者 平成 22 年春 午前問 48) 設計するときに,状態遷移図を用いることが適切なシステムはどれか。 ア 月末及び決算時の棚卸資産を集計処理する在庫棚卸システム イ システム資源の稼働状況を計測し,レポートとして出力するシステム資源稼働状況計測システム ウ 水道の検針データから料金を計算する水道料金計算システム エ 設置したセンサの情報から,温室内の環境を最適に保つ温室制御システム 2) (基本情報技術者 平成 17 年度秋 午前問 49) コンピュータシステムにおけるジョブスケジューリングの特徴のうち,適切 なものはどれか。 (むしろ次回の内容か?) ア CPU に割り当てるジョブを OS が強制的に切り替えるタイムスライス方式では,タイマ割込みが多発するので,スループッ トが低下する。 イ FCFS(first-come first-served)方式のジョブスケジューリングは,ジョブ間に CPU を公平に割り当てるので,スループット や応答時間の保証が可能となる。 ウ 対話型処理とバッチ処理が混在するシステムでは,対話型処理の優先度を高くすることによって,対話型処理の応答性能 の向上が期待できる。 エ 入出力を多用するジョブよりも CPU を多用するジョブの処理優先度を上げた方が,CPU の待ち時間が少なくなるので, 全体のスループットの向上が期待できる。 3) (基本情報技術者 平成 15 年度春 問 34) あるアプリケーションから見て,OS のオーバヘッドと特定できるものはどれか。 ア アプリケーションの割込み処理の実行時間 イ タスクスケジューラの実行時間 ウ ほかのアプリケーションの実行時間 13 エ リエントラントプログラムの実行時間 4) プロセスのメモリ(主記憶)上の割付け(教科書 2.1.3)について、正しい説明を選べ ① コードは命令列、データは固定的に割振られる定数・変数などのデータ、ヒープとスタックは動的に割振られる変数で、ヒ ープは手続き(関数・メソッド)終了後も残る領域、スタックは手続き終了後に無くなる領域である。 ② コードは命令と固定的に割振られる定数・変数、データは動的に割振られる変数、スタックはスタックデータ構造を作ると きに使われる領域、ヒープはそれ以外に使う領域である。 ③ コードはプログラム中の定数、データは変数、ヒープは命令列、スタックは命令・定数・変数以外の目的で割振られる領域 である ④ コードはプログラム中の変数のうち静的なもの、データは変数のうち動的なものをおく領域で、ヒープは命令列、スタック は定数をおく領域である。 5) PCB(教科書 2.1.3[2])について、正しい説明を選べ ① PCBは1つのプロセスに1つ作られ、プロセスの状態遷移を管理する情報を格納する ② PCBは1つのプロセスに1つ作られ、プロセスの実行を管理・制御する情報を格納する ③ PCBはシステムに1つだけあり、実行中のプロセスを管理・制御する情報を格納する ④ PCBはシステムに1つだけあり、実行中と実行可能状態のプロセスを管理・制御する情報を格納する 1) エ 状態遷移は、過去の経緯を状態として記憶しており、それと現在の入力を併せて判断することによって、現在の出力と ともに次の状態を決める。ア、イ、ウはいずれも現在得られる入力(それが過去のデータであっても)をだけに依存する出力を計 算しているので、状態遷移は必要ない。 2) ウ アのタイマ割込みは確かにオーバーヘッドになるが、スループットが低下するほどではないと判断される。エは一般に 逆で、入出力を含む処理を優先させ、空いた時間(=主に入出力を待っているとき)に CPU 中心の処理を行う方が、無駄な待ち がない 3) ア イは本来の仕事の時間ではないが必要な処理である。アは無くすことができれば無くしたい。(イも含める考えもある) 4) ① ①の通りだが、コードとデータはコンパイルの結果決まる部分で、プログラム起動時にメモリへロードされる。ヒープと スタックは起動時には領域だけ確保されており、プログラムが実行をしていくうちに使われていく部分で、言わばメモ用紙のような 使われ方をする。 5) ② ①の「状態遷移を管理する情報」も書かれているが、それだけではなく、プロセスの静的な性質(メモリ空間へのポイン タや優先度など)やコンテクストの退避領域(そのもの、又は領域へのポインタ)も保持するので、②を正しいとしよう。 14