基本情報技術者試験 令和元年度 秋季 午前 問17
バッファについての計算問題。
--------------------------
令和元年度 秋期 午前 問17
図の送信タスクから受信タスクに T 秒間連続してデータを送信する。1 秒当たりの送信量を S、1 秒あたりの受信量を R としたとき、バッファがオーバフローしないバッファサイズ L を表す関係式として適切なものはどれか。ここで、受信タスクよりも送信タスクの方が転送速度は速く、次の転送開始までの時間間隔は十分にあるものとする。
ア
イ
ウ
エ
--------------------------
解説
バッファは buffer という単語が起源になる。
buffer:緩衝材、緩衝器
バッファは処理速度の差を吸収するために利用する。
送信タスクから出力されるデータ量 S と、受信タスクが受け取れるデータ量 R の大小を矢印の太さで表してみている。
仮にバッファが存在しなくてデータ量 S が直接受信タスクに向かってしまう場合、受信タスクがデータを処理しきれなくなって溢れたデータが消えてしまう。
プリンターで印刷する場合がいい例になる。
送信タスク=PC。受信タスク=プリンター。
PC からプリンターに印刷データを送信することはほぼ一瞬で終わるが、プリンターが印刷するには数秒~数十秒はかかる。
この処理速度の差を吸収するためには PC からの印刷データをどこかに溜めておく必要があり、そのためにバッファが使われる。
印刷の場合データ置き場をスプールと呼ぶので厳密にはバッファとは違うのかもしれないけれど、使用する目的は同じはず。
このバッファも無制限に容量を用意できる訳ではないので、この問題のように実際の利用を想定して適度なバッファのサイズを設計しておく必要がある。
(お金をかければ大容量のバッファを用意できるが、無駄な出費になる。)
問題文を順番に読み解いていく。
- 「図の送信タスクから受信タスクに T 秒間連続してデータを送信する。1 秒当たりの送信量を S、1 秒あたりの受信量を R としたとき」
1 秒にバッファに S という量のデータがはいってきて、同じく 1 秒でバッファから R というデータがでていく。
(送信:Send で "S"、受信:Recieve で "R" にしているのだろう)
なので、1 秒で の量のデータがバッファに溜まる。
これが T 秒間連続で続くので、T 秒後のバッファには だけのデータが溜まっていることになる。
- 「バッファがオーバフローしないバッファサイズ L を表す関係式として適切なものはどれか」
バッファがオーバフローしないようにするには、T 秒間のデータ送信でバッファに溜まるデータ量 よりもバッファサイズ L が大きければいい。
ということで、 が適切な関係式となるため、正解は選択肢エとなる。
- 「ここで、受信タスクよりも送信タスクの方が転送速度は速く、」
これは問題を成立させるための前提条件。
の関係ですよ。といっている。
仮に反対で の場合、送られたデータをその都度処理しきれるのでバッファはいらなくなってしまう。
- 「次の転送開始までの時間間隔は十分にあるものとする」
これも問題を成立させるための前提条件。
T 秒間のデータ送信が終わった後に、次のデータ送信までにバッファに溜まったデータがゼロになるための十分な時間間隔があるということ。
仮にそうではない場合、バッファにデータが残っている状態で次の T 秒間のデータ送信が始まるため、 よりも多くのデータがバッファに溜まることになる。
現実ではバッファが空になる前に次のデータが飛んでくることもあるだろうから、実際のシステムを検討する際はしっかりと考慮する必要がある。
ちなみにこの問題は以下の様な解き方もできる。
- 問題文から であるため、 はマイナスとなってしまう。バッファサイズ L は正の数となるはずなので、選択肢アとウは除外される。
- バッファサイズ L はある値 "以上" でないといけないはずなので、選択肢アとイは除外される。
- 残る選択肢はエのみになる。
前後の問題はこちら。