この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は エ

解説

バッファサイズの設計に関する問題です。送信タスクは1秒当たり S のデータをバッファに書き込み、受信タスクは1秒当たり R のデータをバッファから取り出します。問題の条件から送信の方が速い(S > R)ため、バッファには1秒当たり S − R のデータが取り出されずに溜まっていきます。送信は T 秒間連続して行われるので、送信終了時点でバッファに溜まるデータ量は最大で (S − R) × T になります。バッファがあふれない(オーバフローしない)ためには、バッファサイズ L がこの最大蓄積量以上であればよいので、L ≧ (S − R) × T が求める関係式です。エが正解です。この種の問題は「単位時間当たりの増加量(入る速さ − 出る速さ)× 継続時間 = 蓄積量」という水槽の水位のようなモデルで考えると直感的に理解できます。なお「次の転送開始までの時間間隔は十分にある」という条件は、次の転送までにバッファが空になることを保証するためのもので、1回の転送 T 秒だけを考えればよいことを意味します。

なぜ他の選択肢は違うのか

選択肢 ア
L < (R − S) × T は二重に誤っています。まず R − S は受信速度から送信速度を引いた値ですが、本問では S > R なので負になり、データ蓄積量を表しません。さらに不等号が < では「バッファが必要量より小さい」ことを許してしまい、あふれない条件として逆方向です。式の意味(何が1秒に溜まるか)を確認すれば除外できます。
選択肢 イ
(S − R) × T という蓄積量の式は正しいのですが、不等号の向きが逆です。L < (S − R) × T は「バッファサイズが最大蓄積量より小さい」ことを意味し、これではバッファが確実にあふれてしまいます。あふれないためにはバッファが蓄積量を受け止められる大きさ、すなわち L ≧ 蓄積量でなければなりません。
選択肢 ウ
不等号 ≧ の向きは正しいものの、蓄積量の式が R − S と逆になっています。S > R の条件下では R − S は負の値なので、(R − S) × T も負となり、L ≧ 負の値はどんなバッファサイズでも常に成立してしまいます。これでは設計の制約として機能しません。「入る方から出る方を引く」という増加量の向きを正しく押さえることが大切です。

解くときのポイント

バッファ問題は水槽モデルで「(入る速さ−出る速さ)×時間=溜まる量」。あふれない条件はバッファ≧溜まる量。引き算の向きと不等号の向きを2段階でチェックする。