このページでは、しゅんぜい氏の発行されているメルマガのうち「ソフトウェア開発(1種)」について
編集して掲載しています。
プロセススケジューリング方式(H10. 1種 問23)
プロセススケジューリング方式に関する記述のうち、ラウンドロビン方式 の説明として正しいものはどれか。 ア 各プロセスに優先順位が付けられる。後に到着したプロセスの優先 順位が処理中のプロセスよりも高ければ、処理中のものを中断し、 到着プロセスを処理する。 イ 各プロセスの処理時間に比例して、タイムクォンタム(CPU 割当て 時間)を変更する。 ウ 各プロセスを待ち行列に置かれた順にタイムクォンタムずつ処理し、 終了しないときは同じ優先順位の待ち行列の最後尾につなぐ。 エ 入出力の終了やコマンド入力などの割込みを引き金にして、次に実行 するプロセスを決める。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■解答■(出典:H10. 1種 問23) ---------------------------------------------------------------------- ウ 各プロセスを待ち行列に置かれた順にタイムクォンタムずつ処理し、 終了しないときは同じ優先順位の待ち行列の最後尾につなぐ。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■解説■ ---------------------------------------------------------------------- 先週に引き続き、OS(Operating System) の関する問題です。 今日は、ラウンドロビン方式に関する問題でした。 これも、ソフトウェア開発技術者レベルの問題になります。ここ数日は ソフトウェア開発向けに出題してみました。いかがでしたか? ラウンドロビン(round robin) 方式とは、各プロセスの待ち行列の先頭に 一定の処理時間(タイムクォンタム)を与え、その時間を使い切った プロセスを待ち行列の最後尾に移動させて、処理を行う方式です。 ここで出てきた、タイムクォンタム(time quantum) は、タイムスライス (time slice) と同じ意味です。 ちなみに、語源は「小鳥がちょこまか動く」ということから来ているようで す。 選択肢を見ていきましょう。 > ア 各プロセスに優先順位が付けられる。後に到着したプロセスの優先順位 > が処理中のプロセスよりも高ければ、処理中のものを中断し、 > 到着プロセスを処理する。 これは、プリエンプション(preemption) 方式の説明です。 これに対して、いったん処理を開始したら終了まで、連続して 実行する方式のことをノンプリエンプション(non preemption) 方式 といいます。 #プリエンプティブ(preemptive) プリエンプション(preemption) 品詞の違いですね(^^; > イ 各プロセスの処理時間に比例して、タイムクォンタム(CPU 割当て > 時間)を変更する。 これは多重待ち行列方式の説明です。 ラウンドロビン方式に優先度を付け加えた方式です。 優先度の高いものから短い時間を割当てていき、優先度の低いもの には、徐々に長い時間を割当てていく方式です。 > ウ 各プロセスを待ち行列に置かれた順にタイムクォンタムずつ処理し、 > 終了しないときは同じ優先順位の待ち行列の最後尾につなぐ。 これが、ラウンドロビンの説明です。 > エ 入出力の終了やコマンド入力などの割込みを引き金にして、次に > 実行するプロセスを決める。 これは、昨日やったイベントドリブン方式の説明です。 http://www.melma.com/mag/89/m00000189/a00000531.html
再帰的関数(H11. 1種 問8) 非負の整数 n に対して次のように定義された関数 F(n)、G(n) がある。 F(5) の値は幾らか。 F(n): if n <= 1 then 1 else n * G(n - 1) G(n): if n = 0 then 0 else n + F(n - 1) ア 50 イ 65 ウ 100 エ 120 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■解答■(出典:H11. 1種 問8) ---------------------------------------------------------------------- イ 65 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■解説■ ---------------------------------------------------------------------- 引き続き、数学特集をやっています。 今日は、再帰的に計算する関数の問題でした。 再帰的関数というのは、ある関数が自分自身を繰り返し呼び出す関数を いいます。 ちょっとややっこしくなりましたが、問題を見ていきましょう。 > 非負の整数 n に対して次のように定義された関数 F(n)、G(n) がある。 > F(5) の値は幾らか。 > > F(n): if n <= 1 then 1 else n * G(n - 1) > G(n): if n = 0 then 0 else n + F(n - 1) 非負の整数とは、マイナスじゃないということです。 この問題は F(5) の値を、問題に書いてある F(n) と G(n) の式から 求めればいいということです。 F(5) を知りたいので F(n) という関数に n = 5 を代入します。 > F(n): if n <= 1 then 1 else n * G(n - 1) 単語の意味からこの式の意味を読み取れば > n が1以下なら 1 そうじゃなければ n * G(n - 1) を計算する。 という式になっています。 今は、n = 5 ですから F(n) = n * G(n - 1) より F(5) = 5 * G(5 - 1) = 5 * G(4) になりますね。 ここで、今度は G(4) がわからないので、同じように G(n) を見てみると > G(n): if n = 0 then 0 else n + F(n - 1) なので > n が0なら 0 そうじゃなければ n + F(n - 1) を計算する。 となっているので、G(n) = n + F(n - 1) より G(4) = 4 + F(4 - 1) = 4 + F(3) となります。ここでは、F(3) が出てきています。 あとは、これを繰り返していけば答えは出てきます。 F(5) = 5 * G(4) = 5 * ( 4 + F(3) ) = 5 * ( 4 + ( 3 * G(2) ) ) = 5 * ( 4 + ( 3 * ( 2 + F(1) ) ) ) ここで、F(1) = 1 なので、 F(5) = 5 * ( 4 + ( 3 * ( 2 + 1 ) ) ) = 5 * ( 4 + ( 3 * 3 ) ) = 5 * ( 4 + 9 ) = 5 * 13 = 65 よって、正解は「イ」になります。
RAID(出典:H12. 1種 問17) 従来の磁気ディスク装置と比較したときの RAID の特徴に関する記述 のうち、適切なものはどれか。 ア 個々の磁気ディスクのデータ転送速度が高速になる。 イ 個々の磁気ディスクの容量の合計よりも、はるかに大きい容量を 実現できる。 ウ 多数の磁気ディスクをアクセスする必要があるので、データのアクセス 時間が長くなる。 エ 多数の磁気ディスクの併用によって、ディスク系の性能、信頼性の向上 が期待できる。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■解答■(出典:H12. 1種 問17) ---------------------------------------------------------------------- エ 多数の磁気ディスクの併用によって、ディスク系の性能、信頼性の向上 が期待できる。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■解説■ ---------------------------------------------------------------------- 引き続き、アーキテクチャ特集です。 今日は、ハードディスクに関する話として、RAID の問題でした。 RAID(Redundant Arrays of Inexpensive Disks) とは、 複数の磁気ディスク装置を使って信頼性が高く、高速な大容量記憶媒体を 実現する技術のことです。一つのファイルを複数のディスクに並列処理で 同時に読み書きすることによって、高速化を実現するものです。 かみ砕いて言えば、たくさんのハードディスクを使って、高速化や信頼性を 高めよう!という話です。 この RAID には、RAID 0 から RAID 5 の6つのレベルがあります。 RAID 0:データを分割保存する(ストライピング(striping)) データを複数のドライブに分散させて、同時に読み書きすることで アクセス速度を高めます。 RAID 1:データを複製保存する(ミラーリング(mirroring)) 同一データを複数のドライブに分散して書き込み、単体のドライブ よりも信頼性を向上させます。 RAID 2:データの修復情報としてハミングコード(ECC) を利用する チェック用ハードディスクを別に用意し、データ訂正まで 行えるようにしたものです。 ECC は Error Correcting Code の略です。 RAID 3 / RAID 4 / RAID 5: データの修復情報としてパリティを利用する。 (パリティチェック(parity check)) RAID 3 ではバイト単位、RAID 4 ではブロック単位で、データを 分割して記憶します。パリティビット用ハードディスクを別に用意 して記録し、データ破壊時の修復を可能にします。 また、RAID 5 では、パリティビット記録用ハードディスクは 特定しないで、各ハードディスクで分担して、エラーチェックを 行います。誤り訂正符合を各ディスクに分散することで、 一つのディスクに障害が発生したときでも、システムとしての機能 を果たします。 ソフトウェア開発レベルとしては、各RAID のレベルの内容もある程度 知っておいても損はないと思います。平成11年の1種では「RAID 5 の 特徴は?」という問題が出題されていました。 さらに、下の「これ、おしえてっ!」もやってみると良いでしょう。 (RAID の解説もこっちの方がしっかりしてるという話も) http://www.melma.com/mag/89/m00000189/a00000389.html 基本情報や初級シスアドレベルとしては「複数の磁気ディスク装置を使って 信頼性が高く、高速な大容量記憶媒体を実現する技術」とわかっていれば 良いでしょう。
事象応答分析(H13. ソフトウェア開発 問49) ソフトウェアの要求分析に関する記述のうち、事象応答分析の説明として 適切なものはどれか。 ア 外界の事象に応じて、時間の流れとともにシステムが応答するという 一連の動作を分析するための手法である。 イ システムの改善案を検討する場合などに、ある事象について思いつく 様々な着想を視覚的なイメージ図にまとめ、参加者がこの図を基に 別の視点に立った新しい発想を生み出すことを支援するための方法 である。 ウ システムの機能を入力データ及び出力データの両面から洗い出すための 分析方法であり、四つの要素(データ、情報、機能、条件)の相互関係 を定義する。 エ システムの対象をモデル化する際に、実体と関連によって、 その構造を分析するための方法である。 ---------------------------------------------------------------------- それでは、みなさんの回答を紹介します。 > 事象応答分析とは、システムを事象発生とその応答という観点でとらえ、 > 分析を行う技法。よって正解はア > > イは、川喜田二郎氏により考案された、現状志向型アプローチに基づく > 技法で「KJ法」。 > > ウは、システムの機能を入力データ及び出力データの両面から洗い出す > ための分析方法ということで、「機能分析」 > > エは、「構造分析」 そうですね。「ア」で良いでしょう。その他の選択肢も良いと思います。 KJ法はシスアドでよく出ますよ>みなさん どうもありがとうございました。 > ○ア 事象応答分析. > > イ KJ法. > > ウ 機能分析. > システムの機能を入力データから出力情報への変換とみなす. > > エ 実体−関係(E-R)分析のこと.この前段階として,帳票・書類などを > もとにしてデータ構造を分析する,「データ構造分析」がある. > > うーん.実はよく分からないので調べてみました. > # いやーインターネットって便利だなぁ. > > http://www.unisystem.co.jp/~uscsen/jouhou/develop1.htm > 情報 処理 虎 の 巻 開発 の 巻 1 「要求へのアプローチ」 > # 概説です. > > http://www.dab.hi-ho.ne.jp/kaya7/contents/dic/dic001.html > Control+「用語」 > # かなり充実した用語集です. > > http://lab.mgmt.waseda.ac.jp/sdev/1999/05/ > 第5回 情報システム分析設計 (1) > # 講義用の資料のようです. 最近は常時接続の方も増えていると思うので、回答に URL があるのは とても参考になると思います。 どうもありがとうございました。