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




このページは

ソフ開

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

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

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



問21 音をディジタル化する方法の一つで、音程、音の長さ、音の強弱、音色などを情報として規定しているものはどれか。
Audio Codec’97
MIDI
MP3
PCM
解答
解説 それぞれの用語を説明していきます。

Audio Codec’97:サウンド用のインタフェース規格です。
MIDI(Musical Instruments Digital Interface):電子楽器の演奏データを機器間でデジタル転送するための世界共通規格
MP3:音声データのためのファイル圧縮形式
PCM:PCM(Pulse Code Modulation:パルス符号変調)とは音声などのアナログ信号をディジタル信号に変換する手法

問22 プラズマディスプレイパネルの発光方式の説明として、適切なものはどれか。
ガス放電に伴う発光を利用する。
画面の各ドットを薄膜トランジスタで制御し、光の透過率を変化させる。
電圧を加えると発光する有機化合物を用いている。
電子銃から電子ビームを発射し、蛍光体に当てて発光させる。
解答
解説 ディスプレイの種類を以下にまとめます。

CRT:いわゆる普通のブラウン管のディスプレイ。電子ビームと偏光版を使って画像を作ります。(選択肢エに相当)
PDP:PはプラズマのPで、高い電力が必要となります。(選択肢アに相当)
TFT:TはトランジスタのTで、1つ1つの画素をトランジスタの発光で実現しています。(選択肢イに相当)
有機EL:自らの発光でバックライトの不要なタイプ。次世代に期待されています。(選択肢ウに相当)
液晶:光の透過を画素ごとに制御し、カラーフィルタを用いて色を表現する。自ら発光はしない

問23 仮想記憶管理における主記憶のページ枠が4のとき、プログラムが参照するページ番号によって、次のようにページを書き換える方式はどれか。

画像(問23)を表示できません
FIFO(First In First Out)
LFU(Least Frequently Used)
LIFO(Last In First Out)
LRU(Least Recently Used)
解答
解説 ページ(ブロック)の置換えには幾つかのアルゴリズムがあります。下にまとめます。

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

問題では、ページ内に無いデータが現れた場合には一番古いデータが置き換えられているので、FIFOであるといえます。

問24 スケジューリング方式をプリエンプティブな処理とノンプリエンプティブな処理に区分するとき、適切に分類されている組合せはどれか。
画像(問24ans)を表示できません
解答
解説 プリエンプティブ方式とは、現在主流となっているOSがCPUの割り当てを管理し、タイマーなどを利用しながらマルチタスクを実現する方式です。一方でアプリケーションが自発的に空き時間を解放することによってマルチタスクを実現する方式をノンプリエンプティブ方式といいます。

代表的なスケジューリング方式を下にまとめます。

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

問25 二つのタスクが共用する二つの資源を排他的に使用するとき、デッドロックが発生するおそれがある。このデッドロックの発生を防ぐ方法はどれか。
一つのタスクの優先度を高くする。
資源獲得の順序を両方のタスクで同じにする。
資源獲得の順序を両方のタスクで逆にする。
両方のタスクの優先度を同じにする。
解答
解説 デッドロックとは、下図のように、互いに資源をロックしたまま他の資源を要求することによって、互いに処理が進まなくなってしまう現象です。

デッドロックを表示できません

どちらかに優先度を高くしても、デッドロックを防ぐことはできません。(デッドロック後の回復に役立つことはあります)
デッドロックが起こらないようにするためには、同じ順番で資源を確保することです。どちらも、α→βのようにすれば、互いに待ちあうことはないのでデッドロックは生じません。

問26 主記憶割当てのアルゴリズムが最初適合(first fit)である可変区画方式において、次の条件で領域を要求した場合、割り当てた後の空き領域のリストはどのようになるか。ここで、領域の大きさの単位はkバイトである。

[条件]
(1) 現在の空き領域のリストは200、100、160、140、130である。
(2) 要求する大きさは、順に90、130、140、100である。
(3) 要求する大きさを上回る空き領域を確保したときは、余った領域を、リストの最後に追加する。
(4) そのほかの条件は考慮しないものとする。
100,110,30
130,110,30
160,110
200,10,60
解答
解説 順番に追いかけていきます。

空き領域のリスト[200,100,160,140,130]
90を要求:200を確保して、余った110をリストの最後に追加[100,160,140,130,110]
130を要求:160を確保して、余った30をリストの最後に追加[100,140,130,110,30]
140を要求:140を確保する[100,130,110,30]
100を要求:100を確保する[130,110,30]

よって、最終的に空き領域のリストは[130,110,30]となります。

問27 OSの記憶管理機能a〜cに対応する適切な用語の組合せはどれか。

画像(問27)を表示できません
画像(問27ans)を表示できません
解答
解説 用語は問題文にあるとおりですが、まとめると下のようになります。

オーバレイ:大きな容量のプログラムを主記憶上で使うための入れ替えの仕組みのこと。
ページング:仮想記憶において、メインメモリへのデータの出し入れをすること。
スワッピング:仮想記憶方式におけるデータの入れ替え(スワップインとスワップアウト)を行うこと

問28 マイクロカーネルアーキテクチャを採用したOSの特徴として、適切なものはどれか。
OSが、最小限の機能をもつ中核部分と、それ以外のサブシステムからなる。
OS全体が単一スレッドとして構成されている。
OS内のモジュール間の依存関係が複雑に構成されている。
OSの基本的な部分がマイクロプログラムの組合せで構成されている。
解答
解説 マイクロカーネルとは、OSが提供する機能を最小限のメモリ管理やプロセス管理などに限定し、ファイルシステムなどの他のOS機能はサーバプロセスとして実現されているものをいいます。逆にさまざまな機能を搭載したものをモノリシックカーネルといいます。

問29 クライアントサーバシステムにおいて、各クライアントから直接データベースサーバへ接続するアーキテクチャはどれか。
2層
2層と3層
3層
4層
解答
解説 サーバとはサービスを提供するもので、クライアントとはサービスを依頼する(受け取る)ものです。まず、2層と3層についてまとめます。

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

プレゼンテーション層がクライアントに該当する部分で、ファンクション層とデータベース層がサーバに該当する部分になり、主な機能は以下のようになります。
プレゼンテーション層:クライアントへのインタフェース部分
ファンクション層:データの加工
データベース層:データへのアクセス

問30 M/M/1の待ち行列モデルを用いて、二つのネットワークを接続するゲートウェイの1方向のデータ転送を考える。1秒間にゲートウェイ内で転送処理できるパケット数が150、ゲートウェイに到着するパケット数が120とすると、各パケットのゲートウェイ内平均待ち時間(処理時間を含まない)は約何ミリ秒か。
8.3
21.3
26.7
33.3
解答
解説 まず、問題で用いられているM/M/1モデルについて以下に図示します。

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

次に、重要な値について整理します。
平均到着間隔(Ta)
平均サービス時間(Ts)
とするとき、

平均到着率(λ=1/Ta):単位時間当たりの処理要求数)
平均サービス率(μ=1/Ts):単位時間当たりのサービス可能数)

窓口利用率(ρ)=λ/μ(=λ×Ts)
行列の長さ(L)=ρ/(1−ρ)
サービスを受けるまでの平均待ち時間(Tw)=L×Ts
自分を受け終わる応答時間(Tq)=Tw+Ts

それでは、問題の応答時間を求めます。
窓口利用率=到着率/サービス率なので、ρ=120/150=0.8となります。
行列の長さ=ρ/(1−ρ)なので、L=0.8/0.2=4となります。 平均待ち時間=L×Tsなので、Tw=4×(1/150)=0.0266(秒)となります。

これをミリ秒に直すと、平均待ち時間は約26.7となります。

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

問32 ページング方式の仮想記憶において、主記憶への1回のアクセス時間が300ナノ秒で、主記憶アクセス100万回に1回の割合でページフォールトが発生し、ページフォールト1回当たり200ミリ秒のオーバヘッドを伴うコンピュータがある。主記憶の平均アクセス時間を短縮させる改善策を、効果の高い順に並べたものはどれか。

[改善策]
a 主記憶の1回のアクセス時間はそのままで、ページフォールト発生時の1回当たりのオーバヘッド時間を1/5に短縮する。
b 主記憶の1回のアクセス時間を1/4に短縮する。ただし、ページフォールトの発生率は1.2倍となる。
c 主記憶の1回のアクセス時間を1/3に短縮する。この場合、ページフォールトの発生率は変化しない。
a,b,c
a,c,b
b,a,c
c,b,a
解答
解説 それぞれの改善策について平均アクセス時間を計算していきます。

改善策a:300ナノ秒+(200,000ナノ秒/5)/100万=300ナノ秒+40ナノ秒=340ナノ秒
改善策b:300ナノ秒/4+(200,000ナノ秒×1.2)/100万=75ナノ秒+240ナノ秒=315ナノ秒
改善策c:300ナノ秒/3+200,000ナノ秒/100万=100ナノ秒+200ナノ秒=300ナノ秒

よって、c,b,aの順に効果が高いといえます。

問33 稼働率の等しい装置を直列や並列に組み合わせたとき、システム全体の稼働率の高い順に並べたものはどれか。ここで、個々の装置の稼働率は0より大きく1未満である。

画像(問33)を表示できません
A,B,C
A,C,B
C,A,B
C,B,A
解答
解説 稼働率をpとして3つの稼働率を計算していきます。

A:1−(1−p)(1−p)=1−(1−p)2
B:p{1−(1−p)(1−p)}=p{1−(1−p)2
C:1−(1−直列部分の稼働率)=1−(1−p22

式からだけでは、分かりにくいという場合には、p=0.8として実際に稼働率を求めて見ます。
A:1−(1−0.8)2=1−0.22=1−0.04=0.96
B:0.8×0.96=0.768
C:1−(1−0.64)2=1−0.362=1−0.1296=0.8764

よって、A,C,Bの順に稼働率が高いシステムだといえます。

問34 システムの稼動モデルが図のように表されるとき、システムのMTBFとMTTRを表した式はどれか。ここで、tiはシステムの稼働時間、riはシステムの修理時間を表すものとする(i=1,2,・・・,n)。

画像(問34)を表示できません
画像(問34ans)を表示できません
解答
解説 2つの用語をまとめます。
MTBF(Mean Time Between Failure)は平均故障間隔で故障と故障の間の動作していた時間。
MTTR(Mean Time To Repair)は平均故障時間で、実際に故障していた時間。

つまり、MTBFは、稼動していた時間(=故障と故障の間隔)の平均。MTTRは、故障していた時間の平均となります。
なお、MTBFとMTTRは交互に現れ、MTBF+MTTR=稼働していた時間+故障していた時間=全体の時間となります

問35 システムの信頼性設計に関する記述のうち、適切なものはどれか。
フェールセーフとは、ユーザの誤操作によってシステムがダウンしてしまうことのないように、単純なミスを発生させないようにする設計方法である。
フェールソフトとは、故障が発生した場合でも機能を縮退させることなく稼動を継続する概念である。
フォールトアボイダンスとは、システム構成要素の個々の品質を高めて故障が発生しないようにする概念である。
フォールトトレランスとは、故障が生じてもシステムに重大な影響が出ないように、あらかじめ定められた安全状態にシステムを固定し、全体として安全が維持されるような設計方法である。
解答
解説 重要な高信頼システム設計法についてまとめておきます。

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

問36 一つのグローバルIPアドレスを使って複数のホストが同時にインターネットにアクセスできるようにする仕組みを何と呼ぶか。
DHCP
IPマルチキャスト
NAPT
VPN
解答
解説 それぞれの用語をまとめます。

DHCP(Dynamic Host Configuration Protocol):動的にIPアドレスを割り振るや設定を行うプロトコル。
IPマルチキャスト:複数の相手に同じデータを送信することです。(全員ではありません。特定のグループなどで利用されます)
NAPT( Network Address Port Translation):IPとポート番号をを組み合わせて、1つのグローバルIPアドレスと複数のプライベートIPアドレスを相互変換する。IPマスカレードと呼ばれることもある。
VPN(Virtual Private Network): 通信経路を暗号化して、仮想的に専用回線で接続されている状態を作り出すこと。

問37 メタデータを説明したものはどれか。
集合をメンバ(インスタンス)として扱う“べき集合”
属性がもつことのできる値の範囲
データ管理者が管理し、DBMSには登録しない情報
データの定義情報を記述したデータ
解答
解説 メタデータは、データに関するデータのようなもので、抽象度の高いデータです。(変更日や所有者など)

問38 リポジトリのチェックイン、チェックアウトを説明したものはどれか。
セントラルリポジトリから分散リポジトリへのデータのコピーをチェックアウト、分散リポジトリによるセントラルリポジトリのデータの更新をチェックインと呼ぶ。
リポジトリシステムからのクロスリファレンスの出力をチェックアウト、クロスリファレンスによるデータの修正をチェックインと呼ぶ。
リポジトリシステム内のデータの整合性チェックを、データ登録時に実施することをチェックイン、データ登録後に実施することをチェックアウトと呼ぶ。
リポジトリシステムのバックアップ取得操作をチェックアウト、バックアップからのリカバリ操作をチェックインと呼ぶ。
解答
解説 リポジトリとは、貯蔵庫・倉庫などの意味があり、ファイルやフォルダの一元管理を行うことができる空間のことです。(バージョン管理ソフトウェアなどを使う場合が多いです)これにより、開発効率が向上するなどがあります。代表的なフリーソフトにMercurialやSubversionがあります。

中央のリポジトリ空間から自分のリポジトリ空間へデータを持ってくることをチェックアウト、自分のリポジトリ空間から中央のリポジトリ空間にデータをアップデートすることをチェックインといいます。

問39 目的プログラムの実行時間を短くするためにコンパイラが行う最適化方法として、適切なものはどれか。
繰返し回数の多いループは、繰返し回数がより少ないループを複数回繰り返すように変形する。例えば、10,000回実行されるループは、100回実行されるループを100回繰り返すようにする。
算術式の中で、加算でも乗算でも同じ結果が得られる演算は乗算で行うように変更する。例えば、“X+X”は“2*X”で置き換える。
定数が格納される変数を追跡し、途中で値が変更されないことが確認できれば、その変数を定数で置き換える。
プログラム中の2か所以上で同じ処理を行っている場合は、それらをサブルーチン化し、元のプログラムのそれらの部分をサブルーチン呼出しで置き換える。
解答
解説 コンパイラによる最適化は、プログラム言語で冗長なものを削除したり、実行速度やメモリ容量などが少なくなるようにコンパイルするものです。代表的な技術を以下にまとめます。

関数のインライン展開:関数の呼び出し部分を、その場に展開する
例:
func1(){
 print(1+1);
 func2();

func2(){
 print(2+2);

という二つの関数があるときに、func1からfunc2に呼び出すのではなく、func2の内容をfunc1にそのまま展開する。
func1(){
 print(1+1);
 print(2+2);

ジャンプがなくなるので、高速化にはなりますが、オブジェクトファイルのサイズは大きくなります。



定数の畳み込み:定数や値の変わらない変数などを先に計算しておき、高速化する
例:
a=10*20+30
という式がある場合に、右式を計算してしまう。
a=230
これにより、計算時間と変数領域を減らし、オブジェクトサイズを減らすことができます。



ループ内不変式の移動:ループのないで値が変わらないようなものをループの外へ出す。
例:
n=1
while(n<3){
a=10+20;
n=n+1;

このとき、aは同じ値にも係らず何度も計算されるのので、ループの外へ出す。
n=1
a=10+20;
while(n<3){
n=n+1;

これにより、計算速度が向上しますが、オブジェクトサイズは変わりません。



ループのアンロール:ループを展開し、順次処理にする
例:
n=0
while(n<3){
a[n]=b[n]+1

という場合に、
a[0]=b[0]+1
a[1]=b[1]+1
a[2]=b[2]+1
のような順次処理に展開する。これにより条件の評価とジャンプを消すことができるが、オブジェクトサイズは増える

問40 DHTML(Dynamic HTML)は動的なWebコンテンツを開発するために、HTMLを拡張したものである。追加された要素として、適切なものはどれか。
CGI,DOM,XSL
DOM,スクリプト,スタイルシート
Java,XML,スタイルシート
JavaScript,アプレット、サーブレット
解答
解説 それぞれの用語を以下にまとめます。

CGI(Common Gateway Interface):Webサーバがプログラムを起動して動的に表示内容を生成する仕組み
DOM(Document Object Model):HTML文書等を動的に書き換えるために、アプリケーションから利用するためのAPI
XSL(Extensible Stylesheet Language):XMLなどのスタイルを変更するための言語
スクリプト:アプリケーションの制御を行う簡易的なプログラム
スタイルシート:HTMLなどのスタイルを変更するための言語
Java:代表的なオブジェクト指向のプログラム言語
XML(eXtensible Markup Language):マークアップ言語の一種でタグで要素を区切って記述する。ユーザ自身が独自にタグを作ることができるという特徴がある。
JavaScript:web上で用いられるスクリプト言語(プログラム言語のJavaとは互換性がなく、基本的に別物)
アプレット:サーバからクライアントにダウンロードして動作するJavaのプログラム
サーブレット:サーバ上で動作するものをJavaのプログラム