☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ ★                                 ★ ☆   のんびりやろう!情報処理試験! 〜1問1問コツコツと〜   ☆ ★                                 ★ ☆  2000.7.5 / vol.390 / mag2:3364 / melma!:2687 / total:6051   ☆ ★                                 ★ ☆★☆★☆★☆   秋期試験の願書配布、受付開始!   ☆★☆★☆★☆ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■今日の問題■☆☆(等幅フォントで見てね!) ----------------------------------------------------------------------  多重プログラミングに関する記述として、適切なものはどれか。  ア ジョブとしては多重で処理されるが、シングルタスクで実行する。  イ タスクの実行中に、入出力などを行ったために生じる CPU の空き時間    を利用して、別タスクを並列に実行する。  ウ プログラムの実行中に、自分自身を呼び出して実行するプログラミング    方法である。  エ プログラムを並列に処理するので、ハードウェアとして複数のプロセッ    サとメモリを結合した並列処理システムが必要である。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■解答■(出典:H11.秋 2種 問34) ----------------------------------------------------------------------  イ タスクの実行中に、入出力などを行ったために生じる CPU の空き時間    を利用して、別タスクを並列に実行する。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■解説■ ----------------------------------------------------------------------  引き続き、OS(Operating System) の問題です。  「マルチプログラミング」の質問があったので、これを取り上げました。  多重プログラミング(マルチプログラミング:multiprogramming)とは、  1つの処理装置で複数のプログラムを見かけ上、同時に実行させることです  入出力などを行ったために生じる CPU の空き時間を利用して他のプログラ  ムを並列的に実行させます。 > ア ジョブとしては多重で処理されるが、シングルタスクで実行する。    シングルタスク(single task) とは、1度に1つのタスクしか    実行できない OS をさします。MS-DOS などがこれにあたります。    マルチプログラミングは、マルチタスクです。    マルチタスク(multi task) とは、同時に複数の処理を並行して行う    OS の機能をいいます。CPU の処理時間を短い単位で分けて、    複数のソフトに順番に割り当てることによって、複数の処理を同時に    行っているようにみせてます。 > イ タスクの実行中に、入出力などを行ったために生じる CPU の空き時間 >   を利用して、別タスクを並列に実行する。    これが、正解です。    CPU の処理時間と入出力動作にかかる時間を比較すると、    入出力時間の方が多くかかります。    具体的な値はそれぞれですが、入出力にかかる時間はミリ秒単位で、    処理時間にかかる時間はナノ秒単位ぐらいです。だいぶ差があります。 > ウ プログラムの実行中に、自分自身を呼び出して実行するプログラミング >   方法である。    これは、リカーシブ(recursive) です。訳すと「再帰的」です。    そのプログラム自身から、自分自身を呼び出すプログラムを    再帰的プログラムといいます。 > エ プログラムを並列に処理するので、ハードウェアとして複数のプロセッ >   サとメモリを結合した並列処理システムが必要である。    マルチプログラミングには、並列処理システムは必要ありません。    この選択肢のようなシステムは、マルチプロセッサ(multi-processor)    と呼ばれます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ★これ、おしえてっ!★ vol.388(2000.7.3) の質問に対する回答 ----------------------------------------------------------------------  「この問題がわからない!!!」という、  読者からの質問をみなさんに回答してもらおう!というコーナーです。  vol.388 の質問はこちらです。(出典:H11.春 2種 問35) ----------------------------------------------------------------------  再入可能(リエントラント)プログラムの説明として、最も適切なものは  どれか。  ア 一度実行した後、ロードし直さずに再び実行を繰り返しても、    正しい結果が得られる。  イ 実記憶上のどこのアドレスに配置しても実行することが可能である。  ウ 複数のセグメントに分割されており、セグメント単位にロードして    実行することが可能である。  エ 複数のタスクで並行して実行しても、正しい結果が得られる。 ----------------------------------------------------------------------  今回は、説明しにくい問題だったようで、  回答してくれたのは、中村 魚飛さん のみでした。  この手の問題は、僕が解説を書いたほうが無難のようですね(^^;  それでは、回答です。 > まずは、ちょっと復習といきましょうか。 > 今回は、リユーザブルとリエントラントについてです。 > > まず、リユーザブル。 > > リユーザブル、というものは、「再使用可能」と同義で、いわば、 > >  「実行の際、一旦補助記憶装置から主記憶にロードすれば、 >   再度実行の際に、改めてロードすることなく、主記憶に >   存在するモノを利用できるサブルーチン、もしくは、 >   モジュールのこと」 > > といえます。 > > プログラムを実行する場合は、補助記憶装置から主記憶装置に > ロードして実行しますが、使用頻度が比較的高いモジュールの場合、 > 使用するたびにいちいち補助記憶装置から主記憶装置にロード > していたのでは、時間がかかるし、合理的ではありません。 > そこで、リユーザブルな設計でモジュールを作っておけば、 > それだけ効率よくコンピュータを利用できます。 > > リユーザブルなモジュールの場合の欠点は、同時に複数のタスク > から同じモジュールを呼び出すことは設計思想上できない、という点です。 > というより、そこまで考慮されていない、というわけです。 > > ちなみに、なんで、こんなことをするのか?単純に言えば、 > スループットを向上させるためのものですね。ただ、OLTP、 > すなわち、オンライントランザクション処理形態の場合は、 > 同時に実行する可能性があるだけに、リユーザブルでは、 > まだまだだめです。 > > > 次にリエントラント。 > > リエントラント、というものは、「再入可能」と同義で、いわば、 > >  「複数の処理要求が互いに干渉することなく、同時に処理 >   できるようにしたサブルーチンもしくは、モジュールの >   こと」 > > をいいます。 > > 上の、「同時に処理できる」というのが、この「再入可能」の > 大きな特長の一つです。つまり、 > >  「同時に複数のタスクから呼び出されたときに、呼び出した >   それぞれのタスクに対して正しい処理結果を返す」、 > > ということです。この部分は、重要で、リエントラントな > モジュールとリユーザブルなモジュールとの最大の違いの一つは、 > ここです。 > > リエントラントは、そう、リユーザブルな設計を改良したもの、と > 思ってもよろしいでしょう。リエントラントなモジュールは、 > リユーザブルなモジュールの特徴を備えています。その上で、 > 以下の特徴を持ちます。 > >  リエントラントな設計のモジュールでは、処理手続きのみ > を対象とするプログラム領域とデータ領域を別々に管理します。 > (リユーザブルな設計のモジュールでは、これを要求していない) > そして、 > >  プログラム領域は 複数の要求で共有 >  データ  領域は 複数の処理要求ごとに割り当てる > > ことにより、リエントラントを実現しています。 > > つまり、モジュールそのものは、どのタスクからでも同時実行可能 > ですが、実行の際、対象となるモジュールが扱うデータ領域は、 > 呼び出すタスク毎に持っている必要があります。または、タスク自身が > ワーク領域も含んだデータ領域を対象モジュールに一時的に渡す場合も > あります。 > > > 以下の−囲み部分は、細かいので、初心者は読み飛ばしてもかまいません。 > > −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− > リユーザブルなモジュールの設計思想は、実行要求があったときは、 > 当然実行しますが、実行している途中で新たに同じモジュールの > 実行要求は認めません。基本的に却下されるか、待たされるか、です。 > > マルチプログラミング環境においては、同じモジュールが同時に > 処理要求を受ける場合がありますが、これをちょっと細かくみると、 > あるタスクが「実行状態」になってリユーザブルなモジュールが処理要求を > 受けて実行しているとして、実行途中で実行時間が終了して、 > 「実行可能状態」に遷移して、他のタスクが「実行状態」になったとします > > このときに同じモジュールをコールした場合、リユーザブルなモジュールの > 場合はデータ領域の持ち方がタスク単位で独立してはいないので、 > データ領域をそのまま上書してしまう可能性があります。 > > よって、リユーザブルなモジュールでは、マルチプログラミング環境 > では、常に呼び出すタスクが1つのみという保証がない限り、欠陥を > もつことになります。 > > リエントラントなモジュールは、この部分の設計思想を改良しており、 > つまり、互いにデータ領域の干渉をさせないように、ということで > リエントラントなモジュールのプログラム領域は、処理要求を行う > タスクで共有してもかまわない(瞬間瞬間では、動作しているプログラム > は1つのみであることに注意)のですが、データ領域は、タスク単位 > で管理させることで、データの干渉を防いでいるのです。 > −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− > > リエントラントなモジュールの場合、スループットの向上に寄与 > するのは当然として、更に、同時に複数のタスクが同じモジュールを > 実行できる、という点から、主記憶領域の節約が可能になります。 > > また、同じ理由でマルチタスク環境の使用に耐えられる、という > ところも特長ですね。リユーザブルの設計では、こうはいきません。 > > ちなみに、たまに試験に出ますので、確認しておくと、 > > ・リユーザブルなモジュールは、りエントラントであることを >  保証しません。 > > ・逆に、リエントラントなモジュールは、リユーザブルな >  モジュールであることが保証されます。 > > > では、解答です。たった4行。(をい) > > ア:これは、再使用可能なモジュールの特徴です。 > イ:これは、再配置可能なモジュールの特徴です。 > ウ:セグメンテーションの説明です。 > エ:再入可能なモジュールの特徴です。これが正解。 > > > なお、選択肢の文章は、この問題については、それぞれの説明において > 正しいものですので、これを憶えておくことは非常に有益です。 > > また、関連問題を見てみるに、結構似たような内容の選択肢が多いので、 > 選択肢のチェックをしておくと、この部分は攻略したといっても > 語弊ではないですよ。2種クラスなら、これでもなんとかなります。 > > 当方の説明なんか聞いてられっか!なんて方は、関連問題の選択肢を > 全部チェックしておけば、まあ、なんとかなるでせう。 > > ついでにリロケータブル(再配置可能)なモジュールについて言及すると、 > >  「プログラムを実行するとき、主記憶装置のどの場所に配置されても >   実行できる性質のこと。再配置可能ともいう。プログラム内の >   アドレス指定は相対アドレスになっており、そのプログラムの >   先頭番地からの離れ具合(変位)を示している。実行時には、 >   配置されたプログラムの先頭場所に、この変位を足して、命令実行に >   必要な絶対アドレスを求めている。」 >   日経BP社 『日経BPデジタル大事典 2000-2001年版』CD-ROMより引用 > > > この説明は当方が作った解説より解り易いので、そのまま載せました。 > 著作権法第32条により、問題はなし。当方って、技術屋のクセに技術より > 法律の方が好きだからのう。(要するにひねくれている) > > また、このテの問題では、リカーシブ(再帰的)も選択肢に混じって > いることが多いので、この辺も大注意! > > > さて、関連問題です。 > > 関連問題: > 2種平成12年春第38問 > NSP 平成11年秋第51問 > 1種平成11年春第28問(これ、おしえてっ!) > 2種平成10年春第40問 > PE 平成10年春第20問(比較的高難易度) > 1種平成11年春第28問(比較的高難易度:これ、おしえてっ!) > 2種平成9年春第35問 > > > 演習しておく方が望ましい問題: > 2種平成11年秋第35問 > DSP 平成7年春第12問 > > 演習しておく方が望ましい問題: > (リエントラントとリユーザブルの関係を焦点としている問題) > DSP 平成9年春第52問  どうもありがとうございました。  おそらく、質問をしてくれた方は、ここで登場した言葉がはっきりと  つかめていなかったのでは?と思います。  中村 魚飛さんが書かれていた通り、2種なら「過去問の選択肢」を  見ておくのが良いでしょう。  特に、問題の再入可能(リエントラント)は、よく出ます。  さて、今日はコメント部分も(^^; > 当方の近況ですが、いよいよ詳細設計+コーディング+単体試験+結合試験 > が始まりました。 > え?なんかおかしい?そうです。今回はすっごいイリーガルなパターン > です。前任者!おまいは〜。 > > そういうことで、しばらくは当方が投稿できる確率が低くなります。 > 申し訳無い。  お忙しいところ、いつもいつもありがとうございます。  他の読者の方からも好評ですよ。  今回の反省を活かして、明日は回答しやすい問題を取り上げますね。  みなさんの回答をお待ちしてます! ---------------------------------------------------------------------- 〜お便り、回答をどうもありがとうございました(掲載順)〜  ★回答★   中村 魚飛さん                         〜次回も待ってまーす〜 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼選択肢で勉強しよっ!▼(答えはこのメールの一番下にあります) ---------------------------------------------------------------------- > オーバヘッド(overhead) って?  #ここで取り上げてほしい用語は随時募集中!   試験に直接関係のない IT 関連用語でもOK! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ よみものさーちランキング http://ranking.yomimono.com/cgi-bin/count?43 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━     のんびりやろう!情報処理試験! 〜1問1問コツコツと〜 ----------------------------------------------------------------------  編集・発行:しゅんぜい       shunzei@geocities.co.jp    発送:melma!(旧 clickincome)http://www.melma.com/       :まぐまぐ        http://www.mag2.com/  登録・解除:http://www.geocities.co.jp/SiliconValley/2975/  バックナンバーは、ホームページでダウンロードできます。  ☆立ち読み:http://www.melma.com/mag/89/m00000189/index_bn.html ---------------------------------------------------------------------- ☆ちょっとした誤字、脱字は目をつぶってくださいね(^^; ☆このメールマガジンは毎週日曜日はお休みです。 ☆掲載内容の利用において発生した事故・損害等には一切責任を負いません。  (転載は構いませんが、その旨を明記しておいてくださいね) ☆広告掲載については shunzei@geocities.co.jp まで、お願いします。 ☆メールマガジンの購読の申込・解除は個人の責任で行ってくださいね。  しゅんぜいは一切代行しません! ---------------------------------------------------------------------- ☆答え(読者の方のリクエストです)  オーバヘッド(overhead) とは、昨日(vol.389) の問題で登場しました。  問題文の「OS のオーバヘッドは無視できるものとする」の部分ですね。  オーバヘッド(overhead) とは、ユーザーの利用するプログラムに直接関係 のない処理やその大きさ(時間)をいいます。  言い換えると、OS がプログラムの管理などで利用する CPU の処理時間や メモリ領域の大きさです。  昨日の問題は、CPU のアイドル時間を求める問題でした。言葉がよくわから なくても、オーバヘッドは無視して考えたのでは?(^^;  もちろん、実際はオーバヘッドは無視できません。雑誌などで、この言葉を 見るときは、こんなカンジでしょうか?(^^;  Windows NT から Windows 2000 したら、起動時のオーバヘッドが・・・。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━