基本情報技術者試験 令和元年度 秋季 午前 問20
メモリ(DRAM)についての問題。
--------------------------
令和元年度 秋期 午前 問20
DRAM の特徴はどれか。
ア
書き込み及び消去を一括又はブロック単位で行う。
イ
データを保持するためのリフレッシュ操作又はアクセス操作が不要である。
ウ
電源が遮断された状態でも、記憶した情報を保持することができる。
エ
メモリセル構造が単純なので高集積化することができ、ビット単価を安くできる。
--------------------------
解説
DRAM についての問題。
平成 31 年度春期の問 21 でメモリについては書いたので、細かな記載は省略。
共通である RAM の部分は Random Access Memory の略(メモリということ)。
"D" なメモリ(DRAM)と "S" なメモリ(SRAM)がある。
ここで D は Dynamic(動的)、S は Static(静的) の略。
DRAM は、
- コンデンサに電荷(電気)が有るか無いかで 1 ビットを表す。
- コンデンサの電気はそのままだと自然放電してしまうので、リフレッシュと呼ばれる動作で電気を戻す必要がある。
- SRAM と比較して動作は低速であるが、メモリセル構造が単純なので安く大容量が実現できる(高集積化できる)。
SRAM は、
- フリップフロップ回路を活用して 1 ビットを表す。
- DRAM のようなリフレッシュ操作がなくても 1 ビットの状態を保持できる(なので Static =静的と覚えるといいかも)。
- DRAM と比較して動作は高速であるが、コンデンサよりも回路が複雑となるので高価になってしまう。
上の通りで、選択肢エ「メモリセル構造が単純なので高集積化することができ、ビット単価を安くできる」が DRAM のことを書いているの正解である。
その他の選択肢について。
選択肢ア「書き込み及び消去を一括又はブロック単位で行う」はフラッシュメモリの特徴になる。
DRAM や SRAM と並びを合わせると、該当するものは EEPROM になる。
Electrically Erasable Programmable Read Only Memory
Read Only(読み専用)なのに Electrically Erasable(消去可能)という違和感。
選択肢イ「データを保持するためのリフレッシュ操作又はアクセス操作が不要である」
は DRAM の特徴とは反対なので間違い。
選択肢ウ「電源が遮断された状態でも、記憶した情報を保持することができる」も DRAM の特徴とは反対なので間違い。
SRAM の特徴に似ているけれど、SRAM も電源が遮断された場合は記憶した情報を保持することはできないので要注意。
メモリといえば半導体不足、いつ解消されるのだろうか。
前後の問題はこちら。
基本情報技術者試験 令和元年度 秋季 午前 問19
バックアップについての問題。
--------------------------
令和元年度 秋期 午前 問19
バックアップ方式の説明のうち、増分バックアップはどれか。ここで、最初のバックアップでは、全てのファイルのバックアップを取得し、OS が管理しているファイル更新を示す情報はリセットされるものとする。
ア
最初のバックアップの後、ファイル更新を示す情報があるファイルだけをバックアップし、ファイル更新を示す情報は変更しないでそのまま残しておく。
イ
最初のバックアップの後、ファイル更新を示す情報に関わらず、全てのファイルをバックアップし、ファイル更新を示す情報はリセットする。
ウ
直前に行ったバックアップの後、ファイル更新を示す情報があるファイルだけをバックアップし、ファイル更新を示す情報はリセットする。
エ
直前に行ったバックアップの後、ファイル更新を示す情報にかかわらず、全てのファイルをバックアップし、ファイル更新を示す情報は変更しないでそのまま残しておく。
--------------------------
解説
増分バックアップと差分バックアップという似たような方法があるので注意が必要。
どちらも最初にフルバックアップ(全てのファイルをバックアップ)をする点は同じで、その後に差がある。
青色のファイルがフルバックアップされた後、翌日に黄色のファイルが追加(更新)され、翌々日に緑色のファイルが追加(更新)されたとする。
まずは増分バックアップの場合について。
翌日と翌々日における増分バックアップの対象になるファイルを赤の点線で囲ってみる。
上の通り、前日のバックアップ(直前のバックアップ)から更新があったファイルのみが増分バックアップの対象になる。
一方の差分バックアップの場合について
同じように翌日と翌々日における差分バックアップの対象になるファイルを赤の点線で囲ってみる。
翌々日のバックアップ対象が、増分バックアップとは異なっていることがわかる。
差分バックアップでは、初日のフルバックアップを基準として、そこから更新があったファイルは常にバックアップの対象となる。
増分バックアップは、
- 直前のバックアップから更新があったファイルがバックアップの対象になる。
- 一回の増分バックアップのサイズは小さくなる。
- リストアする際はフルバックアップと全ての増分バックアップを組み合わせる必要がある(一つでも紛失すると大変なことに)。
差分バックアップは、
- フルバックアップから更新があったファイルがバックアップの対象になる。
- 一回の差分バックアップのサイズは次第に大きくなる。
- リストアする際はフルバックアップと一つだけの差分バックアップを組み合わせれば十分になる。
と説明したところで、各選択肢をみてみる。
選択肢アは「最初のバックアップの後、ファイル更新を示す情報があるファイルだけをバックアップし、ファイル更新を示す情報は変更しないでそのまま残しておく」
最初のバックアップ=フルバックアップである。
更新されたファイルがバックアップされても更新を示す情報は変更されないので、更新があったファイルは毎回バックアップの対象となることがわかる。
これは上の差分バックアップと同じ状況になるので、増分バックアップではない。
選択肢イは「最初のバックアップの後、ファイル更新を示す情報に関わらず、全てのファイルをバックアップし、ファイル更新を示す情報はリセットする」
更新を示す情報を全く気にしていないので、毎回毎回フルバックアップを取得しているだけになる。
毎回長時間のバックアップが発生するが、リストアするときは一番楽ではある。
選択肢ウは「直前に行ったバックアップの後、ファイル更新を示す情報があるファイルだけをバックアップし、ファイル更新を示す情報はリセットする」
毎回のバックアップでファイル更新を示す情報がリセットされているので、一度バックアップされたら、その次のバックアップでは対象にならない。
これは上の増分バックアップと同じ状況になっているので、この問題の正解はこの選択肢ウである。
選択肢エは「直前に行ったバックアップの後、ファイル更新を示す情報にかかわらず、全てのファイルをバックアップし、ファイル更新を示す情報は変更しないでそのまま残しておく」
選択肢イと同じで、更新を示す情報を全く気にしていないので、毎回毎回フルバックアップを取得しているだけになる
更新を示す情報を残しているとあるが、更新を示す情報を気にせずバックアップするので何の意味もない。
前後の問題はこちら。
基本情報技術者試験 令和元年度 秋季 午前 問18
プリエンプティブなスケジューリングについての問題。
--------------------------
令和元年度 秋期 午前 問18
優先度に基づくプリエンプティブなスケジューリングを行うリアルタイム OS で、二つのタスク A、B をスケジューリングする。A の方が B よりも優先度が高い場合にリアルタイム OS が行う動作のうち、適切なものはどれか。
ア
A の実行中に B に起動がかかると、A を実行可能状態にして B を実行する。
イ
A の実行中に B に起動がかかると、A を待ち状態にして B を実行する。
ウ
B の実行中に A に起動がかかると、B を実行可能状態にして A を実行する。
エ
B の実行中に A に起動がかかると、B を待ち状態にして A を実行する。
--------------------------
解説
"プリエンプティブなスケジューリング" では、OS がタスクを強制的に一時停止状態にして、他のタスクを実行状態にできる。
反対に "ノンプリエンプティブなスケジューリング" では OS がタスクを強制的に操作する権限がない。
この場合、各タスクが実行に必要なリソースを自発的に返却することになる。
善意にお任せ。
この問題ではプリエンプティブなスケジューリングなので、実行されているタスク①よりも優先度の高いタスク②が開始された場合、OS がタスク①の実行をやめて、タスク②を実行することになる。
問題にあるタスクの優先度は「タスクA > タスクB」となっている。
そのため、
- タスク B の実行中にタスク A が開始された場合、タスク B の方が優先度が低いため 、OS によってタスク B は一時停止にされてしまう。
- タスク A の実行中にタスク B が開始された場合、タスク A の方が優先度が高いため、そのままタスク A が実行されたままになる。
選択肢アとイは上記の内容と矛盾してしまう(タスク A が止められている)ので、間違い。
残る選択肢ウとエの違いは、一時停止になるタスク B の状態が実行可能状態なのか待ち状態なのかという点になる。
実行可能状態のタスクとは。
- 実行されていたタスクが他に優先度の高いタスクがきたことで追い出された場合はこの実行可能状態になる。
- 使えるリソースさえあれば(他に優先度の高いタスクがいなければ)実行状態になれる。
待ち状態のタスクとは。
- あるタスクが外部とのデータ入出力などで待ちぼうけになった時に、そのタスクがこの待ち状態となって他のタスクにリソースを渡す。
- 使えるリソースがあったとしても実行状態にはなれない(データ入出力などが終わらないと動けない)。
ということで正解は選択肢ウの「B の実行中に A に起動がかかると、B を実行可能状態にして A を実行する。」になる。
OS 上では複数のタスクが実行可能状態、実行状態、待ち状態を入れ替わりながら動作している。
この入れ替わりが(人の時間感覚と比べて)非常に高速なので、複数のタスクが同時に動いているようにみえる。
音楽を再生しながらブラウザでブログを更新しているときは、
といったタスクが高速に、順番に実行状態になることで同時に動いているように見えている。
OS の更新などが始まってしまい動くタスクが増えると、iTunes のタスクが実行状態になる頻度が少なくなり、音楽が途切れ途切れになってしまったりする。
前後の問題はこちら。
基本情報技術者試験 令和元年度 秋季 午前 問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 はある値 "以上" でないといけないはずなので、選択肢アとイは除外される。
- 残る選択肢はエのみになる。
前後の問題はこちら。
基本情報技術者試験 令和元年度 秋季 午前 問16
よくある稼働率の計算問題。無理やり関係させて PC クラスタの話も。
--------------------------
令和元年度 秋期 午前 問16
2 台の処理装置から成るシステムがある。少なくともいずれか一方が正常に動作すればよいときの稼働率と、2 台とも正常に動作しなければならないときの稼働率の差は幾らか。ここで、処理装置の稼働率はいずれも 0.9 とし、処理装置以外の要因は考慮しないものとする。
ア 0.09
イ 0.10
ウ 0.18
エ 0.19
--------------------------
解説
ひとつ前の問題で RAID0 と RAID1 の稼働率を計算して書いたけど、こっちの問題で書けばよかった。
- "少なくともいずれか一方が正常に動作すればよいとき" ≒ RAID1 の状況
- "2 台とも正常に動作しなければならないとき“ ≒ RAID0 の状況
問題が聞いているのは両方の状況における稼働率の差なので、素直に各々の稼働率を計算するところからスタートする。
"少なくともいずれか一方が正常に動作すればよいとき"
処理装置 1 台の稼働率は 0.9 なので、故障率は 0.1 となる。
(少なくとも一方は正常の確率)
= 1 -(2 台とも壊れている確率 = 0.1 × 0.1 = 0.01)
= 0.99
となるので、稼働率は 0.99 であると分かる。
ちなみに全く工夫なしに以下のようにしても計算できる。
あまり意味はないけど、どうしても検算したいときには使えるかも。
(少なくとも一方は正常の確率)
=(2 台とも正常の確率)+(装置 A のみ正常の確率)+(装置 B のみ正常の確率)
=(0.9 × 0.9)+(0.9 × 0.1)+(0.1 × 0.9)
= 0.81 + 0.09 + 0.09
= 0.99
"2 台とも正常に動作しなければならないとき"
こちらは単純に計算できる。
(2 台とも正常の確率)
= 0.9 × 0.9
= 0.81
となるので、稼働率は 0.81 である。
0.99 と 0.81 の差が問題の聞いていることなので、正解は選択肢ウの 0.18 である。
稼働率 0.9 の機器 2 台を冗長化すれば稼働率は 0.99 になる。3 台で冗長化すれば稼働率は 0.999 にもなる。
安価な機器でも複数台で冗長化すれば、高信頼なシステムが作れる。ついでに、どれも壊れていない間は複数台分の性能を使うこともできる。
科学の数値シミュレーションに利用される PC クラスタシステム にもこの考え方が当てはまる。
性能も信頼性も高い特注のサーバーではなく、一般的なサーバーを数百台並べてシステムを構成する。
1 つのシミュレーションはシステムの一部(サーバー 10 台分とか)を確保して実行されるので、その時点で正常稼働しているサーバーが必要な台数だけあれば業務は進めることができる。
数百台もあると 2 日に 1 台くらいは壊れるので頻繁に復旧作業はしているが、利用者の業務(シミュレーション)には影響しない。
運悪くシミュレーション実行中のサーバーが故障すると影響してしまうけど、別のサーバーを確保して再実行すればいい。
業務に必要な物量を保てるなら、毎日何かが壊れる前提でも問題はない。
(運用する人たちは大変だけど)
前後の問題はこちら。
基本情報技術者試験 令和元年度 秋季 午前 問15
RAID についての問題。
--------------------------
令和元年度 秋期 午前 問15
RAID の分類において、ミラーリングを用いることで信頼性を高め、障害発生時には冗長ディスクを用いてデータ復元を行う方式はどれか。
ア RAID1
イ RAID2
ウ RAID3
エ RAID4
--------------------------
解説
RAID(Redundant Array of Independent Disk)
Redundant:冗長
Array:アレイ、配列
Independent:独立した
なので、複数ディスクを並べて冗長な配列を作る仕組み(余計わかりにくい)。
RAID は複数のディスクを纏めて 1 つのディスクに見せる技術である。
ディスクを纏めるときにどのように纏めるかで、RAID0 ~ RAID6(RAID7?)の方式に分かれる。
よく見るのは RAID0、RAID1、RAID5、RAID1+0 あたり。
RAID2、RAID3、RAID4 は仕事でも見たことない。ので、無視する。
RAID の説明のため、以下の様な状況を考えることにする。
あるデータがディスクに書き込みされている。
データは一定のサイズでブロック単位(図では A, B, C, D)に分割され、順番にディスクに書き込まれていく。
この状況でディスクを複数にして、RAID を構成してみる。
まずは RAID0(ストライピング) から。
RAID0 は書き込みの高速化を目的にしている。
図のように、ブロック単位にしたデータを複数のディスクに分散して同時に書き込む。
ディスクが 1 台だった時と比較すると、ディスク当たりに書き込まれるブロックが 4 個から 2 個になっている。
RAID0 のメリットは、
- データの書き込みが高速化される(複数ディスクに分散して同時に書き込むため)。
- RAID でまとめるディスクの容量を合算した、大きな単一のディスクとして扱える。
一方のデメリットは、
- ディスクが 1 台でも壊れるとデータが復元できなくなる(データを構成するブロックのどれかは無くなってしまうため)。
次に RAID1(ミラーリング)について。
RAID1 は信頼性の向上を目的にしている。
ということで、問題の正解は選択肢アの RAID1 である。
図のように、複数のディスクに同じようにデータを書き込む。
ディスクが 1 台だった時と比較すると、各ディスクが同じデータを持つことになるので、冗長なことをしている。
RAID1 のメリットは、
- ディスクが 1 台壊れたとしてもデータが復元できる(各ディスクに全てのブロックが存在しているため)。
一方のデメリットは、
- ディスクが 2 台あっても、ディスク 1 台分の容量しか使えない(複製したデータの保管だけに 1 台分のディスクが消費されるため)。
- ディスクが 2 台あっても、RAID0 のように高速化はされない。
RAID5 や RAID1+0 の説明も書こうと思ったけど、図を作るのが疲れたので省略。。。
- RAID5 はパリティという考え方で、信頼性の向上と高速化を両立している。最低でも 3 台のディスクが必要になる。
- RAID1+0 は、RAID1 の考えでミラーリングした環境を 2 組用意して、RAID0 の考えでそれらに分散して書き込みをするもの。最低でも 4 台のディスクが必要になる。
RAID0 も RAID1 も原理としてはディスクを 3 台、4台と増やしていくことができる。
ただし、増やすほどに RAID0 はデータが消失しやすくなり、RAID1 は不要なほど信頼性が高くなる。
非常に雑な定義ではあるが、障害で 1 年に 1 日使えなくなるディスクを考えてみる。
稼動率は 364日/365日 ≒ 99.726 % とする。
※ディスクの稼動率でこんな考え方は微妙ですが、そこはご容赦を。
RAID0 はどれか 1 台でも壊れたらデータが消失する。
RAID1 はどれか 1 台でも残っていればデータは保たれる。
稼動率を計算すると以下のようになる。
ディスク台数 | 稼動率(RAID0) | 稼動率(RAID1) |
2台 | 0.99452 | 0.999992 |
5台 | 0.98637 | 0.99999999... |
10台 | 0.97293 | 0.99999999... |
RAID1 は 2 台もあれば 1 年で使えない時間が 1 日から 4 分まで短くなる。5 台とかにしたらもう 1 秒にもならない。
RAID0 は 2 台だと 1 年で使えない時間が 1 日から 2 日と倍になる。5 台だと約 5 日 使えなくなる。
RAID0 がもっと劇的に使えなくなる時間増えるかと思ったけどそうはならず、非常につまらない結果である(定義のせい)。
前後の問題はこちら。
基本情報技術者試験 令和元年度 秋季 午前 問14
デイジーチェーン接続についての問題。スター型との比較も。
--------------------------
令和元年度 秋期 午前 問14
次に示す接続のうち、デイジーチェーンと呼ばれる接続方法はどれか。
ア
PC と計測機器とを RS-232C で接続し、PC とプリンタを USB を用いて接続する。
イ
Thunderbolt 接続ポートが 2 口ある 4K ディスプレイ 2 台を、PC の Thunderbolt 接続ポートから 1 台目のディスプレイにケーブルで接続し、さらに、1 台目のディスプレイと 2 台目のディスプレイとの間をケーブルで接続する。
ウ
キーボード、マウス及びプリンタを USB ハブにつなぎ、USB ハブと PC とを接続する。
エ
数台のネットワークカメラ及び PC をネットワークハブに接続する。
--------------------------
解説
複数の機器を数珠つなぎにする(もしくは 1 つの輪にする)ような接続方法のこと。
daisy はヒナギクという意味で、daisy chain はヒナギクの花輪といった意味もある。
機器が数珠つなぎに接続されている様がヒナギクの花輪に似ているから、その様な接続方法をデイジーチェーンと呼ぶとのこと。
"デイジーチェーン" という言葉の響きと "ヒナギクの花輪" というイメージが個人的には全くあわない。
PC の周辺機器についても、PC から各周辺機器が順番に数珠つなぎになっていればデイジーチェーン接続と呼ばれる。
問題にある各選択肢の接続を絵にしてみると次のようになる。
選択肢から除外しやすいのは選択肢ウと選択肢エの 2 つ。
どちらも分岐があって一直線の数珠繋ぎになっていないので、正解ではない。
選択肢アは一直線だよね、と言われそうであるが、選択肢イのように PC "から" 各周辺機器が数珠つなぎになっている接続がデイジーチェーンと呼ばれる。
ということで、正解は選択肢イである。
デイジーチェーンのメリットとしては接続する機器が多くなっても PC 本体に多数のコネクタを必要としない点である。
選択肢イではディスプレイを 2 台繋いでいるが、PC 本体にはコネクタが 1 つあればいい。
一方のデメリットとしては全ての周辺機器との通信が同じ経路を通ることと、故障の影響範囲が(箇所によっては)大きい点である。
選択肢イでは PC とディスプレイ 2 との通信も、PC とディスプレイ 1 との接続ケーブルを通ることになる。機器を増やすと経路の負荷が高まり、応答が遅くなってしまう。
また、ディスプレイ 1 が故障したら、PC からはディスプレイ 2 も使えなくなってしまう。
デイジーチェーン接続でつなぐ機器を増やしすぎるとデメリットの影響がどんどん大きくなるので注意が必要である。
選択肢ウやエはスター型と呼ばれる接続方法になる。
デイジーチェーンのデメリットを(全てではないが)回避できているが、ハブやスイッチなどの多数のポートを備える中継機器が必要になる点がスター型のデメリットになる。
選択肢ウでは中継機器として USB ハブを用いている。
USB ハブには PC からの給電のみで動くバスパワー方式と、USB ハブそのものが電源につながるセルフパワー方式がある。
キーボードやマウス程度であればバスパワー方式でも十分であるが、HDD 等を多数つなげる場合はセルフパワー方式にしないと周辺機器への給電が足りなくなる可能性がでてくる。
選択肢エでは中継機器としてネットワークハブを用いている。
複数のネットワークカメラから同時に PC へ映像データが転送されていると推測できるので、ネットワークハブには接続されているネットワークカメラ台数分のデータ転送を遅延なく処理できる性能が必要になる。
この性能はスイッチング容量という仕様で表示される。
ネットワークハブの各ポート毎の性能がどれだけ高くても、ネットワークハブ内部の転送性能(スイッチング容量)が低いと各ポートの性能が活かせなくなる。
前後の問題はこちら。