平成22年度 秋期 応用情報技術者試験 問1−20 問題編




このページは

応用情報

(応用情報技術者試験)

解答と解説のページです。

問題だけで勉強したい方は目次へ戻ってください


問1 後置表記法(逆ポーランド表記法)では、例えば、式Y=(A−B)×CをYAB−C×=と表現する。次の式を後置表記法で表現したものはどれか。

Y=(A+B)×(C−(D÷E))

YAB+C−DE÷×=
YAB+CDE÷−×=
YAB+EDC÷−×=
YBA+CD−E÷×=
解答
解説 逆ポーランド記法とは、後置表記法とも呼ばれ、演算子を対象の後ろに記述する手法です。スタックを使うことで実現でき、括弧が不要なのでコンパイラなどで利用されています。

優先度の高い部分から順に逆ポーランド記法に変換して行きます。

@A+BとD÷Eを変換する
Y=(AB+)×(C−DE÷)
AC−DE÷を変換する
Y=(AB+)×(CDE÷−)
BAB+とCDE÷−を変換する
Y=AB+CDE÷−×
C『=』を変換する
YAB+CDE÷−×=

なお他の選択肢は以下のようになります。
選択肢イ:Y=((A+B)−C)×(D÷E)
選択肢ウ:Y=(A+B)×(E−(D÷C))
選択肢エ:Y=(A+B)×(C−D)÷E)

問2 a,b,c,dの4文字からなるメッセージを符号化してビット列にする方法としてア〜エの4通りを考えた。この表はa,b,c,dの各文字1文字を符号化するときのビット列を表している。メッセージ中でのa,b,c,dの出現頻度は、それぞれ50%、30%、10%、10%であることが分かっている。符号化されたビット列から元のメッセージが一意に復号可能であって、ビット列の長さが最も短くなるものはどれか。
画像(問2ans)を表示できません
解答
解説 まず、一意に復号できるかどうかを考えます。

選択肢ア:aa(00)とc(00)などが同じになり、一意に復号できません。
選択肢イ:bc(0110)とada(0110)などが同じになり、一意に復号できません。
選択肢ウ:一意に復号できます。
選択肢エ:一意に復号できます。

つぎに、一意に復号できる選択肢ウと選択肢エの平均ビット列を求めます。
選択肢ウ:0.5×1ビット+0.3×2ビット+0.1×3ビット+0.1×3ビット=0.5+0.6+0.3+0.3=1.7ビット
選択肢エ:0.5×2ビット+0.3×2ビット+0.1×2ビット+0.1×2ビット=1+0.6+0.2+0.2=2ビット

なお、このように出現頻度の多いものにビット数の短いものを割り当てる方法を、ハフマン符号化といいます。

問3 PCM伝送方式によって音声をサンプリング(標本化)して8ビットのディジタルデータに変換し、圧縮処理しないで転送したところ、転送速度は64,000ビット/秒であった。このときサンプリング間隔は何マイクロ秒か。
15.6
46.8
125
128
解答
解説 PCM(Pulse Code Modulation:パルス符号変調)とは音声などのアナログ信号をディジタル信号に変換する手法の一つです。
まず、アナログデータ(時間も振幅も連続)をディジタルデータに変換するためには、標本化→量子化→符号化という作業を行います。各作業を簡単に以下にまとめます。

標本化:時間を離散化する。(一般的には最大周波数の2倍で行います)
量子化:振幅を離散化する。
符号化:量子化したデータを特定の符号に対応付けする。

符号化と量子化は、多くのサンプリングポイントを取ることで、よりオリジナルに近いデータを作り出すことができます(データ量は多くなります)

それでは、計算していきます。
64000/8=8000回サンプリングポイントがあります。、
つまり、1/8000=0.000125=125マイクロ秒となります。

問4 ロボットなどの制御システムを構成するアクチュエータの機能として、適切なものはどれか。
動きを測定する。
動きを制御するための計算・判断を行う。
機械・機構を物理的に動かす。
制御システムを駆動するエネルギーを供給する。
解答
解説 アクチュエータはものを動かしたり、制御したりするパーツでロボットの関節部の駆動などに利用されます。言い方を変えると、電気エネルギー等を物理運動に変換する部分をいいます。

問5 先頭ポインタと末尾ポインタをもち、多くのデータがポインタでつながった単方向の線形リストの処理のうち、先頭ポインタ、末尾ポインタ又は各データのポインタをたどる回数が最も多いものはどれか。ここで、単方向のリストは先頭ポインタからつながっているものとし、追加データはポインタをたどらなくても参照できるものとする。
先頭にデータを追加する処理
先頭のデータを削除する処理
末尾にデータを追加する処理
末尾のデータを削除する処理
解答
解説 まず、今回のリスト状のデータ構造を以下に図示します。

リストを表示できません

これを元に、各選択肢のポインタ参照回数を考えていきます。ポインタの書き換えは回数に入らないので注意しましょう。
選択肢ア:先頭のポインタを追加データに書き換える。追加データのポインタを現在先頭のデータのポインタに書き換える。(参照0回、書き換え2回)
選択肢イ:先頭のポインタを「先頭→先頭のデータ2番目のデータ」でたどった2番目のデータに書き換えます。(参照2回、書き換え1回)
選択肢ウ:「末尾→末尾のデータ」でたどった、現在末尾のデータを追加でのポインタに書き換える。末尾のポインタを追加したデータに書き換える(参照1回、書き換え2回)
選択肢エ:「先頭→先頭のデータ→2番目のデータ ・・・ 末尾から2番目のデータ」でたどった、末尾から2番目のポインタをnil(無し)に書き換える。末尾のポインタを今たどった、末尾から2番目のデータに書き換える。(参照データ個数−1回、書き換え2回)

リスト構造は、ポインタを書き換えるという方法で追加、変更、削除を表します。データそのものを消すわけではないので注意しましょう。

問6 探索表の構成法を例とともにa〜cに示す。探索の平均計算量が最も小さい探索手法の組合せはどれか。ここで、探索表のコードの空欄は表の空きを示す。

画像(問6)を表示できません
画像(問6ans)を表示できません
解答
解説 まず、3つの探索法についてまとめます。データ量をnとしたときのオーダ(検索時間)もあわせてまとめます。

2分探索:ソートされているデータに対して、中間値と目的とを比較することで、大きいグループと小さいグループに分け、1回の検索で探索範囲を半分にしていく。オーダはlog2
線形探索:上から一つずつ比較していく方法。オーダはn
ハッシュ検索:ハッシュ関数を使って、格納場所を決める方法。ハッシュ値が同じになる衝突(シノニム)などがなければ、1度で検索場所が決まります。オーダは1

それでは、それぞれの表に適した検索法を考えます。
表a:コードが順番にならんでいる(ソートされている)ので、線形探索よりも2分探索のほうが高速に検索ができるので、2分探索を利用します。
表b:コードに規則性がないが、使用頻度順にならんでいるということは、上にあるものほど発見しやすいので、線形探索を利用します。
表c:ハッシュにより場所を決めているので、同じ関数を利用して求めるのが一番よいので、ハッシュ表探索を利用します。

問7 正の整数Mに対して、次の二つの流れ図に示すアルゴリズムを実行したとき、結果xの値が等しくなるようにしたい。aに入れる条件として、適切なものはどれか。

画像(問7)を表示できません
n<M
n>M−1
n>M
n>M+1
解答
解説 まず、左の流れ図をみると、xに1を入れた後、nをMから1まで動かし、Mの階乗を計算しています。これと同じものを右の流れ図で行うためには、x×Mとなるまでnを増やす必要があります。右の流れ図は階乗を計算した後に、終了の判定が行われるのでn=n+1が行われてからMとの比較が行われます。つまり、M+1のときにループを抜けるようにする必要があります。

分かりにくい方は、実際に値を入れて計算してみるといいと思います。
今『M=3』として計算してみましょう。

1回目
1→x
1→n
1×1→x
n=n+1=2
続ける(n=2)

2回目
1×2→x
n=n+1=3
続ける(n=3)

3回目
2×3→x
n=n+1=4
終わる(n=4)

選択肢ア:n<3では、一番最初のループで抜けてしまいます。
選択肢イ:4>3−1では、その前にループを抜けてしまいます。
選択肢ウ:4>3で確かにYESとなり、ループを抜けることができます。
選択肢エ:4>3+1ではNOでまだループは続きます。

よって、正解はウとなります。

問8 再入可能(リエントラント)プログラムに関する記述のうち、適切なものはどれか。
再入可能プログラムは、逐次再使用可能プログラムから呼び出すことはできない。
再入可能プログラムは、呼出し元ごとに確保された記憶領域に局所変数が割り当てられる。
実行途中で待ち状態が発生するプログラムは、再入可能プログラムではない。
逐次再使用可能なプログラムは、再入可能プログラムでもある。
解答
解説 プログラムの性質について以下にまとめます。

再入可能(リエントラント):同時、非同期的に呼び出されても互いに干渉せずに動作できる性質
再帰(リカーシブル):自分自身を呼び出すことができる性質
再使用可能(リユーザブル):終わったプログラムを再ロードすることなく、また、使うことができる性質
再配置可能(リロケータブル):メモリ上のどの番地に呼び出されても使用することができる性質

再入可能は、個々のプロセスが独自に値を保有するため、データ部分をプロセスごとに持つ必要あります。

問9 動作クロック周波数が700MHzのCPUで、命令の実行に必要なクロック数及びその命令の出現率が表に示す値である場合、このCPUの性能は約何MIPSか。

画像(問9)を表示できません
10
50
70
100
解答
解説 まず、MIPSは、1秒間に何百万個の命令が実行できるかを表しています。次に、命令実行に必要な平均クロック数を求めると4×0.3+8×0.6+10×0.1=7となります。よって、7命令を700MHzで実行すると、1秒間に700M/7=100MIPSとなります。

問10 スーパスカラの説明はどれか。
処理すべきベクトルの長さがベクトルレジスタより長い場合、ベクトルレジスタ長の組に分割して処理を繰り返す方式である。
パイプラインを更に細分化することによって、高速化を図る方式である。
複数のパイプラインを用い、同時に複数の命令を実行可能にすることによって、高速化を図る方式である。
命令語を長く取り、一つの命令で複数の機能ユニットを同時に制御することによって、高速化を図る方法である。
解答
解説 スーパースカラ(スーパースケーラ)方式は、パイプライン技術の応用的な技術です。パイプラインとは、下の図のように命令の段階を少しずつずらして多重化する方式です。

パイプラインを表示できません

これを応用して、命令パイプライン上で複数の命令を同時に実行する方式をスーパースカラ方式といいます。例を図示します。

スーパースカラを表示できません

選択肢アは、ベクトルプロセッサの説明です。
選択肢イは、スーパーパイプラインの説明です。
選択肢エは、VLIW(Very Long Instruction Word)の説明です。

問11 容量がaMバイトでアクセス時間がxナノ秒のキャッシュメモリと、容量がbMバイトでアクセス時間がyナノ秒の主記憶をもつシステムにおいて、CPUからみた、主記憶とキャッシュメモリとを合わせた平均アクセス時間を表す式はどれか。ここで、読み込みたいデータがキャッシュメモリに存在しない確率をrとし、キャッシュメモリ管理に関するオーバヘッドは無視できるものとする。
画像(問11ans)を表示できません
解答
解説 キャッシュメモリは、主記憶装置(=メインメモリ)とCPUとの処理能力の速度の差を埋めるために用いられるメモリです。メインメモリはまず、キャッシュメモリにデータを探しに行き、そのデータがある場合は、キャッシュメモリから、ない場合はメインメモリからデータを読み出します。よって、存在しない確率 ×メインメモリの読み込み速度+存在する確率×キャッシュメモリの読み込み速度となります。両者の容量はアクセス速度には関係がありません。

問12 DMAコントローラの説明として適切なものはどれか。
MPUでは時間がかかる積和演算を、高速に行う。
仮想メモリ機能、メモリ保護機能などのメモリ管理機能を提供する。
動作クロックに合わせてカウントするカウントレジスタをもち、それによって時間の経過を保持する。
メモリと入出力装置との間、又はメモリとメモリとの間でのデータ交換を、MPUを介さずに行う。
解答
解説 DMA(Direct Memory Access)とは、CPUを介さず、メモリ間、メモリとI/Oデバイス間で直接データを転送することで、DMAコントローラは、DMAを制御するものをいいます。CPUの指示を待つ時間等を高速化でき、アクセス速度の向上につながります。

選択肢アは、DSP(Digital Signal Processor)の説明です。
選択肢イは、MMU(Memory Management Unit:メモリ管理ユニット)の説明です。
選択肢ウは、カウンタやタイマの説明です。

問13 マイクロホンから入力された音声信号をメモリに記憶する機能と、メモリに記憶された音声データをスピーカから出力する機能とをもつディジタル録音・再生システムに関する記述のうち、適切なものはどれか。
A/D変換器の出力及びD/A変換器の入力を、メモリのデータ線に接続する。
音質はサンプリング周波数で決まり、量子化ビット数は関係しない。
録音時にはD/A変換、再生時にはA/D変換を行う。
録音と再生とを同時に行わないならば、1個のA/D変換器だけで録音も再生もできる。
解答
解説 まず変換機(コンバータ)について確認します。A/D変換機はアナログデータをディジタルデータに変換し、D/A変換機はディジタルデータをアナログデータに変換します。

マイクロホンから入力された信号は、アナログデータなのでメモリに記憶するためにはA/D変換機を利用します。
メモリから出力する信号は、ディジタルデータなのでスピーカに出力するには、D/A変換機を利用します。

選択肢イ:音質はサンプリング周波数と量子化ビット数に依存します。(一般にサンプリング周波数は最大周波数の2倍でとります)
選択肢ウ:録音時にA/D変換、再生時にD/A変換をします。(利用する変換が逆です)
選択肢エ:基本的にA/D変換とD/A変換は構造が違うので、一方で他方を代用することはできません。

問14 商品検索と発注入力を行うWebシステムについて、時間帯別のトランザクション数を表1に、TPS(Transaction Per Second)と必要なCPU数の関係を表2に示す。このWebシステムに必要なCPU数は最低幾つか。ここで、OSのオーバヘッドなどの処理については無視でき、トランザクションはそれぞれの時間帯の中で均等に発生するものとする。

画像(問14)を表示できません
解答
解説 必要なCPU数を求めるには、最も処理量が多いときに何個のCPUが必要かをもとめます。

一番処理量が多いのは、11:00〜12:00の時間帯でトランザクション数は48000+24000=72000件です。TPSは1秒間に処理できるトランザクションの量をあらわします。72000件のトランザクションを1時間(=3600秒)で処理するので、TPSは72000/3600=20件/秒となります。

TPSが20以下は2個のCPUが必要となっているので、選択肢イが正解となります。

問15 システムの経済性を評価する場合、TCOの評価項目から除外されるものはどれか。
システム管理やセキュリティ管理などの管理コスト
システムに入力された売上データを分析する販売管理コスト
ハードウェアやソフトウェアなどの導入コスト
ヘルプデスクや利用者教育などのサポートコスト
解答
解説 TCO(Total Cost of Ownership)は、システムの導入から運用、保守・メンテナンス、教育までを含めたトータルコストのことです。

選択肢ウのような導入費や選択肢エのような運用費、選択肢エのような教育費などはTCOに含まれます。データ分析のソフトなどはメインのシステムからは離れますので、TCOには含まれません。

問16 システムの信頼性向上技術に関する記述のうち、適切なものはどれか。
故障が発生したときに、あらかじめ指定された安全な状態にシステムを保つことをフェールソフトという。
故障が発生したときに、あらかじめ指定されている縮小した範囲のサービスを提供することをフォールトマスキングという。
故障が発生したときに、その影響が誤りとなって外部にでないように訂正することをフェールセーフという。
故障が発生したときに対処するのではなく、品質管理などを通じてシステム構成要素の信頼性を高めることをフォールトアボイダンスという。
解答
解説 重要なシステム設計法についてまとめておきます。

フォールトトレラント:障害時に全体が停止するということなく、動作し続けるようなシステムを設計すること。
フォールトアボイダンス:システムの構成要素の信頼性を高め, 元から故障が極力発生しないように設計すること。
フォールトマスキング:障害が発生したときに、その部分を他の機器から隠蔽したり、自律回復するように設計すること。
フェールセーフ:障害が発生した場合、常に安全側に制御・停止すること。
フェールソフト:障害が発生した場合、故障した個所を切り離すなどして、稼動を続けること。
フールプルーフ:ユーザが誤った操作をした場合、危険に晒されることがないように、事前に安全策を行うこと。

選択肢アは、フェールセーフの説明です。
選択肢イは、フェールソフトの説明です。
選択肢ウは、フォールトマスキングの説明です。

問17 3台の装置X〜Zを接続したシステムA,Bの稼動率について、適切なものはどれか。ここで、3台の装置の稼働率は、いずれも0より大きく1より小さいものとする。

画像(問17)を表示できません
各装置の稼働率の値によって、AとBの稼働率のどちらが高いかは変化する。
常にAとBの稼働率は等しい。
常にAの稼働率が高い。
常にBの稼働率が高い。
解答
解説 3台の装置X,Y,Zの稼働率をそれぞれx、y、zとして、全体の稼働率を計算し比較して見ます。

A:XとYの並列部×z={1−(1−x)×(1−y)}z
B:1−(1−XとYの直列部)×(1−z)=1−(1−xy)×(1−z)

次に、それぞれを展開して比較しやすいようにします。×は省略します。
A:z−(1−x)(1−y)z=z−(1−x−y+xy)z=z−(z−xz−yz+xyz)=z−z+xz+yz−xyz=xz+yz−xyz
B:1−(1−xy−z+xyz)=1−1+xy+z−xyz=xy+z−xyz

xz+yz−xyzとxy+z−xyz:まず、両方にxyzを加えて−xyzを除きます。
xz+yzとyz+z:つぎに、両方からxzを引いて+xzを除きます。
xzとz

x、zはともに1より小さいのでxz<z(0.a,0.b<0.a×0.b)となります。(接続的な意味を考えると{xとzの直列}と{z}の稼働率はzのほうが高いという意味です。)よってBの稼働率のほうが常に稼働率は高くなります。

問18 五つのタスクA〜Eの優先度と、各タスクを単独で実行した場合のCPUと入出力装置(I/O)の動作順序と処理時間は、表のとおりである。優先度“高”のタスクAとB〜Eのどのタスクを組み合わせれば、組み合わせたタスクが同時に実行を開始してから、両方のタスクの実行が終了するまでの間のCPUの遊休時間をゼロにできるか。ここで、I/Oは競合せず、OSのオーバヘッドは無視できるものとする。また、表の( )内の数字は処理時間を表すものとする。
画像(問18ans)を表示できません
解答
解説 遊休時間が最小ではなく、ゼロという仮定があるのでそれを利用した高速な解法を考えます。

遊休時間がないということは、2つのタスクが同時にI/O処理にならないということです。(両方ともI/OになるとCPUに遊休時間が発生します。)これを踏まえて、どのようにCPUとI/Oが実行されていくかを以下にまとめます。

1.タスクAの1回目のCPU
2.優先度が低いタスクの1回目のCPUとタスクAの1回目のI/O
3.タスクAの2回目のCPUと優先度の低いタスクの1回目のI/O
4.優先度の低いタスクの2回目のCPUとタスクAの2回目のI/O
5.タスクAの3回目のCPUと優先度の低いタスクの2回目のI/O
6.優先度の低いタスクの3回目のCPU
CPUの時間<I/Oの時間が途中で発生するとI/O待ちとなります。よって常にCPU≧I/Oとなるように選べばよいということになります。

タスクB
1.タスクAのCPU→3
2.タスクBのCPU→2、タスクAのI/O→3
この時点でCPU<I/Oとなったので、遊休時間が発生する。

タスクC
1.タスクAのCPU→3
2.タスクCのCPU→3、タスクAのI/O→3
3.タスクAのCPU→3、タスクCのI/O→2
4.タスクCのCPU→2、タスクAのI/O→3
この時点でCPU<I/Oとなったので、遊休時間が発生する。

タスクD
1.タスクAのCPU→3
2.タスクDのCPU→3、タスクAのI/O→3
3.タスクAのCPU→3、タスクDのI/O→2
4.タスクDのCPU→3、タスクAのI/O→3
5.タスクAのCPU→2、タスクDのI/O→1
6.タスクDのCPU→4
すべてにおいて、CPU≧I/Oだったので遊休時間はない。

タスクE
1.タスクAのCPU→3
2.タスクEのCPU→3、タスクAのI/O→3
3.タスクAのCPU→3、タスクEのI/O→4
この時点でCPU<I/Oとなったので、遊休時間が発生する。


わからない場合は、以下のようにタスクAと他のタスクのCPU,I/Oの時間を表や図にして回答してもよいと思います。

画像(問18a)を表示できません

問19 ほとんどのプログラムの大きさがページサイズの半分以下のシステムにおいて、ページサイズを半分にしたときに予想されるものはどれか。ここで、このシステムは主記憶が不足しがちで、多重度やスループットなどはシステム性能の限界で運用しているものとする。
ページサイズが小さくなるので、領域管理などのオーバヘッドが減少する。
ページ内に余裕がなくなるので、ページ置換えによってシステム性能が低下する。
ページ内の無駄な空き領域が減少するので、主記憶不足が緩和される。
ページフォールトの回数が増加するので、システム性能が低下する。
解答
解説 ページとは、仮想記憶方式において、固定長のデータサイズであり、これを単位にデータ(ページ)の入れ替えを行います。

たとえば、ページサイズを4Kバイトとしている場合は、1Kバイトでも、4Kバイトでも同じく1ページ(4Kバイト)使用します。このとき、ページサイズを2Kバイトに変更すると、1Kバイトのときは、1ページ(2Kバイト)で十分ですし、4Kバイトのときは2ページ(4Kバイト)使用します。このように、ページサイズを小さくすると、小さい単位でデータをやりとりすることができるので、主記憶上の無駄な領域を減らすことができます。一方で管理するページ数が多くなり、オーバヘッドが増加する要因となります。

問20 UNIXのデーモンに関する記述のうち、最も適切なものはどれか。
OSがアプリケーション間の連携機能として提供するサービスであり、これを使うと表計算ソフトで作成したグラフをワープロソフトの文書に取り込むことが可能になる。
OSがアプリケーションに対して呼出し方式で提供するシステムサービスであり、呼出し方式が同じであれば、アプリケーションはOSの差を意識しなくてもよい。
OSと同時又は必要に応じて起動され、バックグラウンドで常に動作しており、プリントキューからの印刷を管理したり、通信などの機能を提供する。
OSと利用者のインタフェースを提供するプログラムであり、利用者がログインすると指定されたものが起動される。
解答
解説 デーモンとは、メモリに常駐してバックグラウンドで作業を行うプロセスをいいます。デーモンは特定のイベントや処理要求を待ち、必要になったら実行されます。サーバなどでよく利用され、プロトコルの後にdをつける慣例があります。(httpd、sshdなど)デーモンは、基本的に制御端末から切り離されています。

選択肢アは、クリップボードの説明です。
選択肢イは、システムコール(あるいはAPIの一種)の説明です。
選択肢エは、シェルの説明です。(bashやtcsh、zsh等さまざまな種類があります。)