平成19年度 春期 ソフトウェア開発技術者試験 問21−40 解答編




このページは

ソフ開

(ソフトウェア開発技術者試験)

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

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



問21 DMAの説明として、適切なものはどれか。
CPUが磁気ディスクと主記憶とのデータの受渡しを行う転送方式である。
主記憶の入出力専用アドレス空間に入出力装置のレジスタを割り当てる方式である。
専用の制御回路が入出力装置や主記憶などの間のデータ転送を行う方式である。
複数の命令の実行ステージを部分的にオーバラップさせて同時に処理し、全体としての処理時間を短くする方式である。
解答
解説 DMA(Direct Memory Access)とは、CPUを介さず、メモリ間、メモリとI/Oデバイス間で直接データを転送することです。そしてDMAコントローラは、DMAを制御するものをいいます。CPUの指示を待つ時間等を高速化でき、アクセス速度の向上につながります。

問22 スーパコンピュータの特徴として、適切なものはどれか。
処理装置内の演算器で一度に扱えるビット数を非常に大きくして、文字列処理の性能向上を図っている。
大容量の磁気ディスク装置と仮想記憶技術を用いることによって、非常に大きなメモリ空間を実現し、性能向上を図っている。
特定の応用分野に特化したハードウェア回路を個別に用意し、目的に応じて組み合わせることによって、性能向上を図っている。
ベクトル命令を備えたプロセッサを数個〜十数個、又はマイクロプロセッサを数百〜数千個結合することによって、性能向上を図っている。
解答
解説 スーパーコンピュータは、配列での演算を一度に行えるベクトル命令を備えている場合が多いです。これにより繰返し行われる行列計算などを高速化をおこなっています。選択肢ウのような形態をエンジニアリングワークステーションといいます。

問23 仮想記憶のページ置換えアルゴリズムの一つであるFIFOの特徴として、適切なものはどれか。
LRUアルゴリズムよりも置き換えるページを決定する処理に時間がかかる。
LRUアルゴリズムよりもページフォールトの回数が少なくなる。
ある種のページ参照列に対して、割当て主記憶量を増やすと、かえってページフォールトの回数が増加する。
ページサイズを小さくすると、ページフォールトの回数が減る。
解答
解説 まず、ページ(ブロック)の置換えのアルゴリズムについて以下にまとめます。

NRU(Not Recently Used):最近使われていないものから順に置き換える
LRU(Least Recently Used):最後に参照されてから最も時間が経過したものから順に置き換える
LFU(Least Frequently Used):最も使用頻度の低いものから順に置き換える
FIFO(First In First Out):最初に読んだものから順に置き換える
LIFO(Last in First Out)は、最後に入れたものを最初に使うというもので、再帰プログラムやスタックとかかわりが深いものです。ページの置換えには使われません。

次に、選択肢についてみていきます。
選択肢ア:LRUのほうが参照情報を調べるので、時間がかかるといえます。
選択肢イ:ページフォールトの回数が少なくなるという保証はありません。
選択肢ウ:Beladyの例外と呼ばれる現象です。
選択肢エ:主記憶のページ数を小さくすると、ページフォールトの回数は増えます。


問24 仮想記憶システムにおいて主記憶の容量が十分でない場合、プログラムの多重度を増加させるとシステムのオーバヘッドが増加し、アプリケーションのプロセッサ使用率が減少する状態を表すものはどれか。
スラッシング
フラグメンテーション
ページング
ボトルネック
解答
解説 選択肢の用語を以下にまとめます。

スラッシング:仮想記憶方式において、実メモリの容量が少なく、データの入れ替え(スワップインとスワップアウト)ばかりに時間がとられ、処理が進まないこと。
フラグメンテーション:ファイルが断片化され、HDDの様々な部分に格納され、ファイルを読み出すのに時間がかかること。
ページング:仮想記憶において、メインメモリへのデータの出し入れをすること。
ボルトネック:処理や業務の効率が悪くかったり、能力が低いことで、他の部分に悪影響を与えている部分

問25 三つのタスクA〜Cを同時に実行させた場合の途中のスケジュール状況が次のとおりであるとき、各タスクの優先度の関係を示したものはどれか。ここで、“待ち”は、タスクが実行可能状態にあり、CPUの割当て待ちであることを意味する。また、X>Yは、Xの方がYよりも優先度が高いことを表すものとする。

画像(問25)を表示できません
A>B>C
B>C>A
C>A>B
C>B>A
解答
解説 まず、説明のため以下のように時間に番号をふります。

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

Aにおいて、タスクAが待ちでタスクCがCPUを使用しているので、タスクA<タスクCであることがわかります。
Bにおいて、タスクA,Cが待ちでタスクBがCPUを使用しているので、タスクA,C<タスクBであることがわかります。

よって、タスクA<タスクC<タスクBであることがわかります。

問26 ジョブとジョブステップの説明のうち、適切なものはどれか。
ジョブはコンピュータで実行されるひとまとまりの処理であり、一つ以上のジョブステップから構成される。更にジョブステップは、CPUの割当てを受ける単位であるタスク又はプロセスから構成される。
ジョブは“実行”、“実行可能”又は“待ち”のいずれかの状態をとり、この状態をジョブステップと呼ぶ。ジョブステップは割込みによって切り替わる。
ジョブはバッチ処理で用いられる概念である。オンライン処理に当てはめると、ジョブはプロセスに、ジョブステップはスレッドに相当する。
ジョブは、リーダ、イニシエータ、ターミネータ、ライタの順に実行される。これらの各処理を、ジョブステップと呼ぶ。
解答
解説 ジョブとは処理の単位のことで、ジョブステップはジョブを分解したものをいいます。ジョブステップはさらにCPUへの割当て単位でであるタスクなどのから構成されます。

問27 ラウンドロビン方式のタスクスケジューリングの説明として、適切なものはどれか。
一定時間ごとにタイマ割込みを発生させ、実行可能の待ち時間の先頭のタスクにCPU資源を割り当てる。
各タスクの優先度に従ってCPU資源を割り当てる。
処理時間の短いタスクから順にCPU資源を割り当てる。
何らかの割込みが発生したときに、直ちに起動する必要のあるタスクにCPU資源を割り当てる。
解答
解説 代表的なスケジューリング方式を下にまとめます。

ラウンドロビン方式:タスクの切り替えに多少のオーバヘッドがかかりますが、すべてのタスクに順番にCPUの使用権がわたります。このCPU時間をタイムクォンタムといいます。
到着順方式:リアルタイム性は失われますが、投入したタスクはいつかは処理してもらえます。
処理時間順方式:残りの処理時間が短いものに優先的にスケジューリングする方式
優先順位方式:単純に優先度の高いものを実行する方式で、待ち続けるタスクが発生(スタベーション)する可能性がある。待った時間に応じて優先順位を上げる(エイジング)を行うことでこれを回避している。

選択肢アはラウンドロビン方式の説明です。
選択肢イは優先度順位方式方式の説明です。
選択肢ウは処理時間順方式方式の説明です。
選択肢エはイベントドリブン(による割り込み)の説明です。

問28 UNIXにおいて複数のコマンドでデータを連続的に処理するときに、コマンド間でデータを受け渡す仕組みはどれか。
スレッド
ソケット
デーモン
パイプ
解答
解説 それぞれの用語を以下にまとめます。

スレッド:プログラムの中で並列処理等を行うそれぞれの小さいプログラムのこと
ソケット:プログラム同士やネットワークで情報をやり取りする際の抽象的なAPIのこと
デーモン:制御端末を持たず、バックグラウンドで特定の入力や条件を監視しているプログラムのこと
パイプ:『ls|grep txt』のように、『|』の左で実行された結果を右側の入力として利用すること

また、パイプと同じく良く使われるものとしてリダイレクトがあります。これは、『ls>log.txt』のようにすることで、標準出力(通常はディスプレイ)をファイルに変更するなどが可能です。『<』を使うことで標準入力を切り替えることもできます。

問29 3層クライアントサーバシステムの特徴として、適切なものはどれか。
GUIツールの利用によって比較的簡単にプログラムを作成でき、プロトタイピング開発やエンドユーザコンピューティングに適する。
各層間の相互依存度が比較的少ないので、開発作業を層ごとに並行して行うことができる。
業務処理とデータベース処理の分離ができないので、クライアント側のアプリケーションの拡張の仕方によってはデータベースアクセス要求が増加し、レスポンスが遅くなる。
業務ロジックに変更が生じた場合、すべてのクライアントにインストールされたプログラムを入れ替える必要がある。
解答
解説 サーバとはサービスを提供するもので、クライアントとはサービスを依頼する(受け取る)ものです。

2層:サーバとクライアントの2つ
3層:プレゼンテーション層・ファンクション層(アプリケーション層)・データベース層の3つ

プレゼンテーション層がクライアントに該当する部分で、ファンクション層とデータベース層がサーバに該当する部分になります。

問30 垂直機能分散システムの特徴のうち、適切なものはどれか。
クライアントとサーバの関係のように、プロセッサ間に階層又は従属関係が存在する。
システムの効率を向上させるために、同じアプリケーションを実行する幾つかのプロセッサ間で負荷を分散する。
単独でも機能する複数のコンピュータシステムを、ほぼ対等な関係でネットワークに接続し、データを含めて資源を共有する。
負荷を分散させるために、アプリケーションごとに、ネットワーク内のどのプロセッサで実行するかをあらかじめ決めておく。
解答
解説 まず、各種分散システムについてまとめます。

垂直分散:クライアントとサーバのように、階層関係や従属関係により処理を分ける
水平分散:P2Pネットワークのように、同等の立場のシステムがそれぞれの処理を行う
機能分散:システムの機能をそれぞれが担当する
負荷分散:システムの負荷を複数のマシンに分散させる

それぞれの選択肢は以下のようになります。 選択肢ア:垂直機能分散システム
選択肢イ:水平負荷分散システム
選択肢ウ:水平分散システム
選択肢エ:水平機能分散システム

問31 ファイバチャネルを用いたSAN装置の特徴はどれか。
クライアントに対しては、LANに接続されたファイルサーバとして機能する。
異なる異種のサーバやクライアント間で、データをファイル単位で共有できる。
サーバやLANを介さずに、データのバックアップが可能である。
モバイルPCからも、インターネットを介して任意の場所から接続可能である。
解答
解説 SAN(Storage Area Network)とは、LANとは別に、外部記憶装置間および記憶装置などのストレージとコンピュータの間を専用のネットワークによって接続する形態です。通信には、ファイバチャネルプロトコルなどが用いられます。

また、NAS(Network Attached Storage)とは、コンピュータネットワークに直接接続して使用するファイルサーバやストレージをいいます。

問32 ピアツーピアにおけるデータ探索技術のうち、フラッディングの説明はどれか。
インデックスサーバに、求めるデータのノード情報検索クエリを発行する方式である。
分散配置したインデックスサーバに、求めるデータの位置情報としてハッシュ値とノード情報の組を保持する方式である。
求めるデータのハッシュ値に最も近いハッシュ値をもつノードに、経路制御表に従ってクエリを伝搬させていく方式である。
隣接ノードに対してデータ検索クエリを発行し、求めるデータが存在するノードに行き着くまで、連鎖的に伝搬させていく方式である。
解答
解説 フラッディングとは、洪水というの意味で、隣接しているノードに検索クエリを発行し、バケツリレーのように情報を伝えていく方法をいいます。ピアツーピアにおいてはすべての情報を管理しているサーバがないので、このように個々のノード間が協調することで、情報をやりとりしています。

問33 1件のデータについて、読取りに40ミリ秒、CPU処理に30ミリ秒、書込みに50ミリ秒かかるプログラムがある。このプログラムで、n件目の書込みに併せてn+1件目のCPU処理とn+2件目の読取りを並行して行うと、1分当たりの最大データ処理件数は幾つか。ここで、OSのオーバヘッドは考慮しないものとする。
500
666
750
1200
解答
解説 この問題は、パイプラインに関する問題です。まず、パイプラインの概念を以下にまとめます。

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

つぎに、処理の流れを少し書き出してみます。
1.1件目の読み出し
2.1件目のCPU処理
3.1件目の書き込み、2件目の読み出し
4.2件目の書き込み、3件目のCPU処理、4件目の読み出し
5.3件目の書き込み、4件目のCPU処理、5件目の読み出し

つまり、40ミリ秒+30ミリ秒+50ミリ秒×nが1分(60000ミリ秒)以下になるようにnをできるだけ大きくしたいということです。
また、40、30は60000に比べて十分小さいので無視して計算しても大丈夫です。
60000/50=1,200となります。

問34 通信回線を使用したデータ転送システムにM/M/1の待ち行列モデルが適用すると、平均回線待ち時間、平均伝送時間、回線利用率の関係は次の式で表すことができる。

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


回線利用率が0%から徐々に上がっていく場合、平均回転待ち時間が平均伝送時間よりも最初に長くなるのは、回線利用率が何%を超えたときか。
40
50
60
70
解答
解説 まずは、待ち行列モデルのイメージを以下に図示します。

待ち行列を表示できません

それでは問題に戻ります。この式は、a=b×α (0≦α)という形をしています。このとき、αがどんな値ならa≧bになるかという風に変換することができます。
αが1ならばa=bとなるので、回線使用率/(1−回線使用率)=1となる値を計算します。

X/(1−X)=1
1−X=X
1=2X
X=0.5
よって、回線使用率が50%のときに等しくなるといえます。

問35 東京〜福岡を結ぶネットワークがある。このネットワークの信頼性を向上させるために、東京〜大阪〜福岡を結ぶ破線の迂回回線を追加した。迂回回線追加後の新しいネットワークが図に示す構成であるとき、東京〜福岡の稼働率は幾らか。ここで、回線の稼働率は、東京〜福岡、東京〜大阪、大阪〜福岡のすべてが0.9とする。

画像(問35)を表示できません
0.729
0.810
0.981
0.999
解答
解説 上のラインの稼働率は0.9×0.9=0.81、下のラインの稼働率は0.9です。全体としては、これらの並列となりますので、1−(1−0.81)×(1−0.9)=1−0.19×0.1=1−0.019=0.981となります。

問36 コンピュータシステムの信頼性を高める技術に関する記述として、適切なものはどれか。
フェールセーフは、構成部品の信頼性を高めて、故障が起きないようにする技術である。
フェールソフトは、ソフトウェアに起因するシステムフォールトに対処するための技術である。
フォールトアボイダンスは、構成部品に故障が発生しても運用を継続できるようにする技術である。
フォールトトレランスは、システムを構成する重要部品を多重化して、故障に備える技術である。
解答
解説 重要な高信頼システム設計についてまとめておきます。

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

問37 XML文章を別の文章構造をもつXML文章やHTML文章などに変換するための仕様はどれか。
CSS
DTD
XLink
XSLT
解答
解説 それぞれの用語を以下にまとめます。

CSS(Cascading Style Sheets)は、HTMLなどで記述されたページを装飾するのに利用されます。
DTD(Document Type Definition:文書型定義)は、マークアップ言語において、文章構造を定義するための言語です。
XLink(XML Linking Language:XMLリンク付け言語)は、XMLドキュメント同士のリンクを定義するための仕様です。
XSLT(XSL Transformations)は、W3Cにより標準化されたXML文書の変換用言語です。

問38 J2EE(Java 2 Platform,Enterprise Edition)の構成技術の一つはどれか。
EAI
JavaScript
Servlet
UDDI
解答
解説 Javaに関する重要な用語をいくつか下にまとめておきます。

Javaアプリケーション:単独で動作する一般的なJavaで書かれたプログラム
Javaアプレット:サーバからクライアントにダウンロードして動作するJavaのプログラム
Javaサーブレット:サーバ上で動作するものをJavaのプログラム
JavaBeans:アプリケーションを部品化し、再利用することで開発効率を向上させる規約

EAI(Enterprise Application Integration):複数のプロセスやデータを統合して効率を向上させることです。
JavaScript:web上で用いられるスクリプト言語の一種。(プログラム言語のJavaとは互換性がなく、基本的に別物)
UDDI(Universal Description, Discovery and Integration):Webサービス用の検索システムのこと。現在はあまり利用されていない。

問39 OSS(Open Source Software)の特徴のうち、適切なものはどれか。ただし、OSSはOSI(Open Source Initiative)によるOSD(The Open Source Definition)の定義に基づくものとする。
OSSはフリーソフトと同様に無償で入手できるが、商用システムの開発への利用は禁止されている。
OSSをパッケージ化したり、自社のソフトウェアを組み合わせたりして、有償で販売することができる。
システム開発で利用できるようにソースコードで入手できるが、利用者がある数以上になるとライセンス料が発生する。
複製と改良は自由にできるが、改良したソフトウェアを再頒布することはできない。
解答
解説 一般的にOSS(オープンソースソフトウェア)はOSI(Open Source Initiative)が定義したOSD(The Open Source Definition)の以下の10個の条件を満たしたものをさします。

1. 自由な再頒布ができること
2. ソースコードを入手できること
3. 派生物が存在でき、派生物に同じライセンスを適用できること
4. 差分情報の配布を認める場合には、同一性の保持を要求してもかまわない
5. 個人やグループを差別しないこと
6. 適用領域に基づいた差別をしないこと
7. 再配布において追加ライセンスを必要としないこと
8. 特定製品に依存しないこと
9. 同じ媒体で配布される他のソフトウェアを制限しないこと
10. 技術的な中立を保っていること

なお、著作権は放棄されておらず、著作権が放棄されたソフトをパブリックドメインソフトといいます。さらに無償である義務もありません。 条件5、6により制限的な配布はできません。

選択肢イ:商用システムの利用も可能です。
選択肢ウ:利用者数とライセンス料は関係ありません。
選択肢エ:プログラムの再配布を行うことは可能です。

問40 ソフトウェアの再利用技術のうち、リバースエンジニアリングを説明したものはどれか。
既存のプログラムから、そのプログラムの仕様を導き出す技術である。
既存のプログラムから導き出された仕様を修正して、プログラムを開発する技術である。
既存のプログラムを部品化し、それらの部品を利用して、プログラムを開発する技術である。
クラスライブラリにある既存のクラスを再利用しながら、プログラムを開発する技術である。
解答
解説 現在動いているプログラムから、その設計書などを作成する手法をリバースエンジニアリングといいます。市場の製品をリバースエンジニアリングをすることは、一般的には禁止されていることが多いです。リバースエンジニアリングの後、その設計書を元にフォワードエンジニアリングで製品を作成します。