![]()
平成27年 春期 基本情報技術者 午後 問02
問02 4問選択
言語処理系に関する次の記述を読んで,設問1〜3に答えよ。 言語処理系とは,プログラム言語(以下,言語という)の文法に従って記述された原始プログラムを 読み取り,目的とする計算機で実行するための変換をするか,又は逐次解釈しながら実行するための ソフトウェアである。 設問1 言語処理系の種類には,インタプリタやコンパイラなどがある。 インタプリタによる実行では,原始プログラムを入力して,逐次解釈しながら実行する(以下, インタプリタ方式という)。コンパイラによる実行では,原始プログラムを入力して, 目的とする計算機で実行できるプログラム(以下,実行形式プログラムという)に変換し, その実行形式プログラムを実行する(以下,コンパイラ方式という)。 インタプリタ方式とコンパイラ方式を比較したとき,コンパイラ方式の 利点として最も適切な答えを,解答群の中から選べ。 解答群 イ 原始プログラムを変更して,直ちに実行できる。 ウ 実行途中に異常が発生した場合,原始プログラムのどこでどのような原因によって異常が 発生したのかを確認しやすい。 エ 目的とする計算機に対応して,実行時間を短縮するための最適化が図れる。 設問2 次の記述中の ![]()
原始プログラムを,ソフトウェアによって仮想的に構築した計算機(以下,仮想計算機という)で
実行できるコード(以下,中間コードという)に変換し,仮想計算機上で中間コードを
インタプリタ方式で実行する方法がある。言語 X で記述された原始プログラムを
中間コードに変換し,仮想計算機 V のインタプリタで実行する例を,図1に示す。
ここで,異なる OS やハードウェア上で動作する仮想計算機 V を用意することによって,
![]() 図1 仮想計算機によるインタプリタ方式の実行例 〔図1の説明〕 (1) 言語 X で記述された原始プログラムを,仮想計算機 V で実行できる中間コードに変換する(図1 @)。 (2) 中間コードに変換されたプログラムを仮想計算機Vに入力し,V のインタプリタで 逐次解釈しながら実行する(図1 A)。 a に関する解答群 イ 特定の OS やハードウェアに依存する ウ 特定のハードウェアの性能を引き出す エ 特定のハードウェアのメモリ使用量を低減する
設問3 次の記述中の ![]() 仮想計算機Vにおけるインタプリタ方式による実行時に,繰り返し実行される処理などの 情報(以下,プロファイル情報という)を収集しておき,その内容を解析して, 特定の処理の中間コードをプログラムの実行途中で実行形式プログラムに変換し, 以後の実行に実行形式プログラムを利用する方法として,図2のような動的コンパイル方式がある。 実行形式プログラムを実行途中から利用することによって,以後のプログラムの実行性能の向上が 期待できるので,Java などの言語処理系で採用されている方式である。
![]() 図2 動的コンパイル方式を適用した処理の流れ 〔図2の説明〕 (1) 主プログラムと主プログラムから呼び出される関数 F 中間コードに 変換されたプログラムがある。 (2) 仮想計算機 V のインタプリタは,中間コードを逐次解釈しながら実行する (図2@)。このとき,関数Fが呼び出される回数を プロファイル情報として収集する(図2A)。 (3) 仮想計算機 V は,関数 F が呼び出される都度,プロファイル情報を解析し, 関数 F を実行形式プログラムに変換するかどうかを判定する。 (4) (3)で変換すると判定した場合,仮想計算機 V は,動的コンパイラを 起動して関数 F を実行形式プログラムに変換する(図2B)。 (5) (4) で関数 F を変換した後は,関数 F が呼び出されたときには 実行形式プログラムが実行される(図2C)。
動的コンパイル方式を適用する場合には,実行時間に加えて動的コンパイラの起動時間や
コンパイル時間を考慮する必要がある。図2に示す関数 F を,インタプリタ方式で実行した場合と,
動的コンパイル方式で実行した場合の実行時間について考える。
ここで,各方式の実行条件は,次の条件に示すとおりである。
主プログラムから関数 F の呼出し回数が 400 回のとき,インタプリタ方式の場合の
実行時間は 〔条件〕
エ 0.246 オ 0.4 カ 0.406
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
|