平成24年度 春期 応用情報技術者試験 問1−20 解答編




このページは

応用情報

(応用情報技術者試験)

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

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




問1 任意のオペランドに対するブール演算Aの結果とブール演算Bの結果が互いに否定の関係にあるとき、AはBの(又は、BはAの)相補演算であるという。排他的論理和の相補演算はどれか。
画像(問1ans)を表示できません
解答
解説 相補演算とは、いわゆる否定の関係をいいます。つまり、排他的論理和の否定はどれかという問題です。排他的論理和は以下のような真理値表になります。

A EX−OR B
00
0
01
1
10
1
11
0

よって、これを否定するので以下のようになります。

NOT(A EX−OR B)
00
1
01
0
10
0
11
1
これは、入力が同じ時に出力があるので、等価回路になっているといえます。

問2 M/M/1の待ち行列モデルにおいて、一定時間内に到着する客数の分布はどれか。
一様分布
指数分布
正規分布
ポアソン分布
解答
解説 M/M/1モデルの最初のMはサービスを受けるものの到着頻度はポアソン分布に従うという意味で、次のMはサービス時間は指数分布に従うという意味で、最後の1は窓口の個数を表しています。図にすると以下のようになります。

MM1モデルを表示できません

なお、待ち行列には行列の長さは無限(サービスを受けに来たものはあふれない)という仮定があります。

問3 次のBNFで定義される<BNF>に合致するものはどれか。

<DNA>::=<コドン>|<DNA><コドン>
<コドン>::=<塩基><塩基><塩基>
<塩基>::=A|T|G|C
AC
ACGCG
AGC
ATGC
解答
解説 BNF(Backus Naur Form)とは文脈自由言語を定義する言語で、正規表現などを記述するのに用いられています。式の意味は、左式を右式で置き換えることができるという意味です。「|」はORをあらわしています。<DNA>の右式に<DNA>が含まれていますが、これは再帰的な表現です。

式は<DNA>は必ず、<コドン>を含みます。そして、<コドン>は<塩基>の3つによってあらわされます。<塩基>は一つの英文字で表されるので、<コドン>は3つの英文字になります。よって、3の倍数の英文字列になることがわかります。

問4 Unicode文字列をUTF−8でエンコードすると、各文字のエンコード結果の先頭バイトは2進表示が0又は11で始まり、それ以降のバイトは10で始まる。16進数表示された次のデータは何文字のUnicode文字列をエンコードしたものか。
10
11
12
解答
解説 2進数に直した時に先頭が0で始まる16進数は「0,1,2,3,4,5,6,7」で、11で始まる16進数は「C,D,E,F」です。(一方で、10で始まるのは「8,9,10,11,12」です。)

よって、先頭がこれらの文字で始まるのは「CF,E3,E7,33,2E,31,34,E3,E3」の9個となり、元は9文字であったといえます。

問5 図のように16ビットのデータを4×4の正方形状に並べ、行と列にパリティビットを付加することによって何ビットまでの誤りを訂正できるか。ここで、図の網掛け部分はパリティビットを表す。

画像(問5)を表示できません
解答
解説 1ビットの誤りの場合は問題なく訂正できますが、以下のような2ビットの誤りはどちらも、同じパリティの状態になってしまうので、2ビットは誤り検出はできますが、訂正はできない場合があります。

画像(問5kai)を表示できません

問6 A,B,Cの順序で入力されるデータがある。各データについてスタックへの挿入と取出しを1回ずつ行うことができる場合、データの出力順序は何通りあるか。

画像(問6)を表示できません
解答
解説 まず、A,B,Cのすべての組み合わせは以下の6通りです。これについて順番に出力できるか考えます。

A,B,C:Aを出力、Bを出力、Cを出力 → 可能
A,C,B:Aを出力、Bをスタックに積む、Cを出力、Bを取り出す → 可能
B,A,C:Aをスタックに積む、Bを出力、Aを取り出す、Cを出力 → 可能
B,C,A:Aをスタックに積む、Bを出力、Cを出力、Aを取り出す → 可能
C,A,B:Aをスタックに積む、Bをスタックに積む、Cを出力、Aを先に出力できない → 不可能
C,B,A:Aをスタックに積む、Bをスタックに積む、Cを出力、Bを取り出す、Aを取り出す → 可能

よって、5通りが可能であるといえます。

問7 次の手順はシェルソートによる整列を示している。データ列7,2,8,3,1,9,4,5,6を手順(1)〜(4)に従って整列するとき、手順(3)を何回繰り返して完了するか。ここで、[ ]は、小数点以下を切り捨てた結果を表す。

[手順]
(1) [データ数÷3]→Hとする。
(2) データ列を、互いにH要素分だけ離れた要素の集まりからなる部分列とし、それぞれの部分列を、挿入法を用いて整列する。
(3) [H÷3]→Hとする。
(4) Hが0であればデータ列の整列は完了し、0でなければ(2)に戻る。
解答
解説 シェルソートとは、ある一定間隔おきに取り出した要素から成る部分列をそれぞれ整列し,更に間隔を詰めて同様の操作を行い,間隔が1になるまでこれを繰り返すことで、値を整列させる手法です。

順番に追いかけていきます。
1回目
(1)9÷3=3→H
(2)(7,3,4)(2,1,5)(8,9,6)→(3,4,7)(1,2,5)(6,8,9)
(3)3÷3=1→H
(4)H=0でないので、(2)へ戻る

2回目
(2)(3,4,7,1,2,5,6,8,9)→(1,2,3,4,5,6,7,8,9)
(3)1÷3=0→H
(4)H=0なので、完了

よって、(3)は2回実行されています。

問8 関数gcd(m、n)が次のように定義されている。m=135、n=35のとき、gcd(m、n)は何回呼ばれるか。ここで、最初のgcd(135,35)の呼び出しも、1回に数えるものとする。また、m、n(m>n≧0)は整数とし、m mod nはmをnで割った余りを返すものとする。

画像(問8)を表示できません
解答
解説 順番に追いかけていきます。

1回目:gcd(135,35)を呼び出す。
2回目:gcd(135,35)の中で、gcd(35,30)を呼び出す。
3回目:gcd(35,30)の中で、gcd(30,5)を呼び出す。
4回目:gcd(30,5)の中で、gcd(5,0)を呼び出す。
gcd(5,0)は、5を返すので、4回呼び出される。

問9 相異なるn個のデータが昇順に整列された表がある。この表をm個のデータごとのブロックに分割し、各ブロックの最後尾のデータだけを線形探索することによって、目的のデータの存在するブロックを探し出す。次に、当該ブロック内を線形探索して目的のデータを探し出す。このときの平均比較回数を表す式はどれか。ここで、mは十分に大きくnはmの倍数とし、目的のデータは必ず表の中に存在するものとする。
m+n/m
m/2+n/2m
n/m
n/2m
解答
解説 内容を整理すると、以下のようになります。

全体でn個のデータがある。
データはm個ごとにブロック化されている。
各ブロックのデー多数はn/mである。
データは、まずmこごとに大まかに探し、その後見つかったデータのあるブロックを1個ずつ調べる。

このことにより、まずm個を調べますが、平均なのでmの半分(m/2)で見つかると予想できます。
次に、このブロックを調べますが、平均なのでn/mの半分(n/2m)で見つかると予想できます。

よって、m/2+n/2mとなります。

問10 キャッシュメモリにおけるダイレクトマップ方式の説明として、適切なものはどれか。
アドレスが連続した二つ以上のメモリブロックを格納するセクタを、キャッシュ内の任意のロケーションに割り当てる。
一つのメモリブロックをキャッシュ内の単一のロケーションに割り当てる。
メモリブロックをキャッシュ内の任意のロケーションに割り当てる。
メモリブロックをキャッシュ内の二つ以上の配置可能なロケーションに割り当てる。
解答
解説 キャッシュメモリはデータをライン(あるいはブロック)と呼ぶある程度まとまった単位で管理します。

例えば4ビットを1つのラインとしてまとめて管理する場合は、その上位ビットを保存しておきます。この上位のアドレスをフレームアドレス、下位のアドレスをエントリアドレスといいます。これによりフレームアドレスをまず検索し、その後エントリアドレスを検索することで、高速化できます。
(例:10100000〜10101111は、1010を上位ビットとして保存しておきます。)
このフレームアドレスバッファが複数ある場合は、複数のデータを格納できます。このときのバッファの個数をセット数(ウェイ)と呼びます。このような構造により、局所的に連続したデータにアクセスする場合に高速に処理できます。

これを踏まえて、キャッシュメモリの方式を下にまとめます。

ダイレクトマッピング方式:メモリ空間と1対1で割り当てる方式。すべてのメモリ領域を1対1でカバーするのでヒット率が低い(選択肢イ)
フルアソシアティブ方式:任意のメモリ空間と対応付ける方法。使用率が高いところを自由に持ってこれるので、ヒット率が高い反面オーバヘッドが大きい(選択肢ウ)
セットアソシアティブ方式:上の二つの間のような方法。ある程度区切った空間を自由に対応付けることができる。通常セット数nに対して、nウェイセットアソシアティブという(選択肢エ)


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

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

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

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

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

問12 同じ命令セットをもつコンピュータAとBがある。それぞれのCPUクロック周期、及びあるプログラムを実行したときのCPI(Cycles Per Instruction)は、表のとおりである。そのプログラムを実行したとき、コンピュータAの処理時間は、コンピュータBの処理時間の処理時間の何倍になるか。

画像(問12)を表示できません
1/32
1/2
解答
解説 CPI(Clocks Per Instruction)とは、1命令当たりのクロック数をいいます。

コンピュータAは、CPUクロック周期が1ナノ秒で、CPIが4なので、4ナノ秒で1命令を処理できるといえます。
コンピュータBは、CPUクロック周期が4ナノ秒で、CPIが0.5なので、2ナノ秒で1命令を処理できるといえます。

つまり、BはAの2倍の性能をもっているということなので、AはBの処理時間の2倍の時間がかかるといえます。

問13 キャッシュメモリを搭載したCPUの書込み動作において、主記憶及びキャッシュメモリに関し、コヒーレンシ(一貫性)の対策が必要な書込み方式はどれか。
ライトスルー
ライトバック
ライトバッファ
ライトプロテクト
解答
解説 キャッシュメモリは、主記憶とCPUのレジスタの速度の差を埋めるために用いられるものです。データをキャッシュメモリと主記憶の同時に書き込むライトスルー方式と、退避するときのみ書き込むライトバック方式があります。退避時のみに書込みを行うライトバックは、主記憶の内容とキャッシュメモリの内容が一致しない場合があるので、整合性をとる必要があります。

なお、ライトバッファとはライトスルー方式において、主記憶とキャッシュメモリの間に置かれるバッファのことです。ライトプロテクトは書込み禁止の機構のことです。

問14 RAIDの分類において、ミラーリングを用いることで信頼性を高め、障害時には冗長ディスクを用いてデータ復元を行う方式はどれか。
RAID1
RAID2
RAID3
RAID4
解答
解説 RAID(Redundant Arrays of Inexpensive Disks あるいはRedundant Arrays of Independent Disks)とは、複数のHDDを1台の高信頼性のHDDとして利用する技術のことです。RAID1〜6は冗長ビットをどこに配置するかで決まります。代表的なRAIDの例を下に示します。

RAID0(ストライピング):複数のHDDに分散してデータを書き込む(冗長性はない)
RAID1(ミラーリング):複数のHDDに同じデータを書き込む
RAID2:ビット単位での専用誤り訂正符号ドライブをもつ
RAID3:ビット/バイト単位での専用パリティドライブをもつ
RAID4:ブロック単位での専用パリティドライブをもつ
RAID5:ブロック単位で冗長データをもつが、特定のドライブに冗長データを書き込むということはしない
RAID6:ブロック単位・複数パリティを分散して書き込む

また、複数の技術を組み合わせた、RAID1+0、RAID0+1、RAID5+0、RAID0+5、RAID5+1、RAID1+5などもあります。

問15 ストアドプロシージャの特長を生かして通信回数を減らしたシステムをクライアントサーバイシステムで実現するとき、クライアントとサーバの機能分担構成はどれか。ここで、データベースアクセス層はDB層、ファンクション層はFN層、プレゼンテーション層はPR層とそれぞれ略す。
画像(問15ans)を表示できません
解答
解説 まず、ストアドプロシージャ機能とは、データベースサーバにおいて、あらかじめ使用頻度の高い命令群をサーバ側に用意しておくことで、わずかな引数のやり取りだけでSQL文などを実行する機能のことです。インデックスの見直しや再編成では、検索速度は上がりますがネットワークの負荷は低下しません。

次に、3つの層の役割を以下にまとめます。
プレゼンテーション層:クライアントへのインタフェース部分
ファンクション層:データの加工
データベース層:データへのアクセス

今回の場合は、DB層はサーバ、プレゼンテーション層はクライアントに属します。データの加工などを担当するファンクション層はどちらにもまたがるといえます。

問16 クラスタリングで、処理を実行しているノードXに障害が発生すると、他のノードYに処理が引き継がれる。元のノードXの障害が復旧した後、再びノードYから処理を引き継ぐことを何というか。
フェールオーバ
フェールバック
フォールダウン
フォールバック
解答
解説 重要な高信頼システム設計法についてまとめておきます。

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

フォールダウンは、通信が失敗した時に、伝送速度を下げながらデータを再送することです。
フォールバックは、通信障害時などに、性能を下げてでも、通信を行うことです。

問17 信頼度関数がR1(t)及びR2(t)である2台の装置からなるシステム全体の信頼度関数に関する記述のうち、適切なものはどれか。ここで、信頼度関数とは時刻tにおいて装置が正常に稼動する確率である。
直列に接続した場合、R1(t)+R2(t)である。
直列に接続した場合、R1(t)×R2(t)である。
並列に接続した場合、R1(t)+R2(t)である。
並列に接続した場合、R1(t)×R2(t)である。
解答
解説 直列接続と並列接続の稼働率の計算を以下にまとめます。

直列接続:全体の稼働率=Aが稼動している確率×Bが稼動している確率=a×b
並列接続:全体の稼働率=AもBも稼動していない確率=1−Aが稼動していない確率×Bが稼動していない確率=1−(1−a)×(1−b)

問18 スループットの説明として、適切なものはどれか。
ジョブがシステムに投入されてからその結果が完全に得られるまでの経過時間のことであり、入出力の速度やオーバヘッド時間などに影響される。
ジョブの稼働率のことであり、“ジョブの稼働時間÷運用時間”で求められる。
ジョブの同時実行可能数のことであり、使用されるシステムの資源によって上限が決まる。
単位時間当たりのジョブの処理件数のことであり、スプーリングはスループットの向上に役立つ。
解答
解説 スループットとは、単位時間当たりの処理量のことで、スプーリングとは、一度高速な磁気ディスクなどに蓄えておき、その後出力することで、処理効率を上げる方式です。なお、選択肢アは、ターンアラウンドタイムの説明です。

問19 あるクライアントサーバシステムにおいて、クライアントから要求された1件の検索を処理するために、サーバで平均100万命令が実行される。1件の検索につき、ネットワーク内で転送されるデータは、平均2×105バイトである。このサーバの性能は100MIPSであり、ネットワークの転送速度は、8×107ビット/秒である。このシステムにおいて、1秒間に処理できる検索要求は何件か。ここで、処理できる件数は、サーバとネットワークの処理能力だけで決まるものとする。また、1バイトは8ビットとする。
50
100
200
400
解答
解説 まず、サーバでの処理時間を計算します。サーバでの命令数は100万で100MIPSで処理をするので、100万/100×100万=0.01となり、1秒間に100件処理できることが分かります。次に、ネットワークの転送速度を計算します。転送データ量は200kバイトで転送速度は、80Mビット/秒=10Mバイト/秒です。つまり、200kバイト/10Mバイトで0.02秒となり、1秒間に50件転送できることになります。サーバでは100件処理できても、転送は50件しかできないので、転送がボルトネックとなり、50件が正解となります。

問20 二つのタスクの優先度と各タスクを単独で実行した場合のCPUと入出力装置(I/O)の動作順序と処理時間は、表のとおりである。二つのタスクが同時に実行可能状態になってから、全てのタスクの実行が終了するまでの経過時間は何ミリ秒か。ここで、CPUは1個であり、I/Oの同時動作はできないものとし、OSのオーバヘッドは考慮しないものとする。また、表の( )内の数字は処理時間を示すものとする。

画像(問20)を表示できません
19
20
21
22
解答
解説 時間順に処理を追いかけていくと以下のようになります。

画像(問20kai)を表示できません

よって、最初のタスクの開始から全ての終了まで22ミリ秒かかるといえます。