ファイルシステムについて

このQ&Aのポイント
  • 基本情報技術者試験の過去問についての質問です。
  • 質問内容は「ハッシュ表を用いたファイルシステムの実現方法」についてです。
  • 具体的には、固定長レコードで、キー部とデータ部からなるファイルシステムについての理解を求めています。
回答を見る
  • ベストアンサー

基本情報 過去問 ファイルシステムについて

こんにちは、2010年10月の基本情報技術者試験を受験して 午後試験で 50.50点だったものです。 趣味でプログラミングをしていて、 JavaScriptでポーカーを再現し、 同じくJavaScriptで音声は出ませんが、 http://sdin.jp/browser/casino/blackjack/ と同様の動作をするブラックジャックを作るくらいです。 ( CGI, サーバーのことはよくわかりません。) 現在 暇な時間をみて、4月の同試験の受験に向けて勉強しているのですが、 わからないことが出てきましたので、質問させていただきます。 以下のサイトをみていただきたいのですが・・・ http://www.rs.kagu.tus.ac.jp/~infoserv/j-siken/H10a2/pm03.html 問4の「ハッシュ表を用いて実現するファイルシステム」 についてなのですが、 (1) 固定長レコードで,各レコードはキー部とデータ部からなる。 とありますが、キー部はファイル名であり、 問題中にはでてきませんが、 データ部は補助記憶装置に格納されている格納位置(ディレクトリ)である、 という解釈でよいのでしょうか? ファイルを検索するとき、「与えられた式で計算したエントリ位置」 にある キー部を捜すと思うのですが、 問題の場合では、ハッシュ表[0]~ハッシュ表[4999]まで走査を行う、 ということでよいのでしょうか? どなたか教えていただけないでしょうか よろしくおねがいします。

noname#173931
noname#173931

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

>キー値を指定すれば、なぜ直接アクセスが可能になるのでしょうか。 問題文〔ハッシュ表を用いて実現するファイルシステムの説明〕に次のように書いてあります。 -------- (3)レコードのキー値を格納する位置(エントリ位置)は,次の式で求める。   エントリ位置 = キー値をエントリ個数で割った余り (5)レコードのデータ部へのアクセスは,エントリ位置によって一意に決まる。 -------- ---------------------------------------- >SQLをつかって、データを操作することもできないように >思われますが・・・違うのでしょうか。 データ部の値をどのように操作するかはまったく別の話です。 例えば,5000件の社員データが格納された社員表があり,次のようなSQL文でアクセスするとします。 SELECT 社員名,性別,生年月日,所属部 FROM 社員表 WHERE 社員番号 = 10202 このとき,社員番号という属性に索引(index)が設定されていない場合は5000件全件を対象として順に走査しながら社員番号=10202の行を見つけねばならないのに対し,社員番号に索引(index)が設定されていれば社員番号=10202の行に即座にアクセスできることを質問者はご存じですか? そして索引が有ろうが無かろうが,データを操作するためのSQL文は上記のまま変化はありません。(索引は別途,CREATE INDEX 文で設定しておくものなので) 今回の問4は,そのような「データ部に高速アクセスするための内部的な仕組み」に関する問いであり,データ部の値をどう操作するかについては不問にしています。 ---------------------------------------- >問題文のような、ファイルの用途というのは、 >どういったものになるのでしょうか。 ハッシュ表は「キー値の取りうる範囲より,データ総数の方が少ない場合」に用いられます。 例えば,社員番号の取りうる範囲が0000~4999であり,その社員番号と1対1に対応する社員が5000人いるならば,ハッシュ関数など用いなくても,   エントリ位置 = 社員番号 とすればよいわけです。 では,社員番号が6桁であり,取りうる範囲が000000~999999だとしてみます。データを格納するために100万件分の空き領域を確保せねばならないのでしょうか? 100万人の社員がいるなら広大なその空き領域を確保する必要があります。しかし社員数が5000人しかいないなら(すなわち,社員番号の全範囲が利用されているわけではなく,歯抜けが多いなら)必要なデータ領域の大きさは200分の1で済むはずです。そこでこの問いでは次のようなハッシュ関数を使いました。   エントリ位置 = 社員番号をエントリ個数(=5000)で割った余り 社員番号の利用状況が歯抜けであるとはいえ,5000で割った余りが同じになる社員番号が複数使われている可能性はあります。 ハッシュの採用により,キー値を指定すれば極めて高速にデータ部にアクセスできるという大きな利点がありますが,キー値が異なるのにエントリ位置が同じになるという異常の発生(シノニムレコードといいます)という副作用は避けられません。そこでハッシュではシノニムへの対処が必須となります。これは問題文(4)で説明されています。 http://eow.alc.co.jp/synonym/

noname#173931
質問者

お礼

毎回丁寧に解説していただき、ありがとうございます。 とくに、用途についての解説はよく理解することができました。 また、別の過去問で分からないことが出てきたときには、 お忙しい時でなければよろしくお願いします。 貴重な時間をさいての回答、ありがとうございました。

その他の回答 (1)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

>キー部はファイル名であり、 >データ部は補助記憶装置に格納されている格納位置(ディレクトリ)である、 >という解釈でよいのでしょうか? 違います。 「ハッシュ表には【レコードの】キー値を格納する」と書いてありますから, キー部( 200) データ部(佐藤 一郎, 男, 1991/01/01生, 技術部) キー部( 5201) データ部(鈴木 二郎, 男, 1992/02/02生, 営業部) キー部(10202) データ部(高橋 三郎, 男, 1993/03/03生, 総務部) のように,キー部1つとデータ部1つを合わせた1組で1レコードとなります。 つまり「ハッシュ表[0]~ハッシュ表[4999]」と「データ部[0]~データ部[4999]」を合わせて全体で「1個のファイル」となります。 各行が1個のファイル(すなわち,全体で5000個のファイル情報)ではありません。 >ハッシュ表[0]~ハッシュ表[4999]まで走査を行う、 >ということでよいのでしょうか? 違います。   > 設問1 キー値が 10005 のレコードを格納しよう とすると,   > 設問2 取り出すデータのキー値 → k   > 設問3 キー指定による と書いてあるように,キー値を指定してデータ部に「直接アクセス」する用途を想定したファイルシステムの例となります。 問題文(3)(4)で示されたハッシュ関数で求められたそのエントリ位置に直接アクセスしに行きますから,走査(一次元的に [0]~[4999] を順になぞること)はおこないません。

noname#173931
質問者

お礼

さっそく回答していただきありがとうございます。 全体で一つのファイルになるのですか。 解釈がちがっているときも指摘していただき、 とても参考になります。 もしよければ、教えていただきたいのですが、 キー値を指定すれば、なぜ直接アクセスが可能になるのでしょうか。 ファイル内の「番地(アドレスのようなもの)」にレコードが一意に 格納されるからでしょうか。 そのキー値から、ほぼ一意に、番地が決まる、 ということで、よろしいでしょうか。 問題文のような、ファイルの用途というのは、 どういったものになるのでしょうか。 アクセスするのにはキー値のみが必要という気がしますが、 SQLをつかって、データを操作することもできないように 思われますが・・・違うのでしょうか。 それと、また、なにかわからないことが出てきたら、 お忙しい時でなければ、よろしくお願いします。 貴重な時間をさいての回答ありがとうございました。

関連するQ&A

  • 基本情報 過去問 スケジューラについて

    こんにちは、2010年10月の基本情報技術者試験を受験して 午後試験で 50.50点だったものです。 趣味でプログラミングをしていて、 JavaScriptでポーカーを再現し、 同じくJavaScriptで音声は出ませんが、 http://sdin.jp/browser/casino/blackjack/ と同様の動作をするブラックジャックを作るくらいです。 ( CGI, サーバーのことはよくわかりません。) 現在 暇な時間をみて、4月の同試験の受験に向けて勉強しているのですが、 わからないことが出てきましたので、質問させていただきます。 以下のサイトをみていただきたいのですが・・・ http://www.rs.kagu.tus.ac.jp/~infoserv/j-siken/H12a2/pm03.html 問3を 図を描きながら解いてみて、答えあわせをしたところ、 (b) の正解が、ページ内のセレクトボックスで参照できるとおり (カ) であるところを、(オ)と答えてしまいました。 それ以外は合っていたのですが、自分の描いた図に間違いがあるのでは・・・ そして、ということは、それいがいのところも、 たまたま正解しただけなのでは・・・と思ってしまうのですが、 図のどこが悪いのかわからないでいます。 見にくい図ですが、添付しましたので、見ていただいて、 どこが悪いのか指摘していただけないでしょうか。 よろしくおねがいします。

  • 基本情報 過去問について 

    こんにちは、2010年10月の基本情報技術者試験を受験して 午後試験で 50.50点だったものです。 趣味でプログラミングをしていて、 JavaScriptでポーカーを再現し、 同じくJavaScriptで音声は出ませんが、 http://sdin.jp/browser/casino/blackjack/ と同様の動作をするブラックジャックを作るくらいです。 ( CGI, サーバーのことはよくわかりません。) 現在 暇な時間をみて、4月の同試験の受験に向けて勉強しているのですが、 わからないことが出てきましたので、質問させていただきます。 以下のサイトをみていただきたいのですが・・・ http://www.rs.kagu.tus.ac.jp/~infoserv/j-siken/H12b2/pm03.html 問3について質問させていただきたいのですが、 正直申しまして、問題の意味がよくわからないでいます。 いくつか教えていただきたいのですが… (1)   「局所変数をスタック領域に割り当て」、   「スタックは上位アドレス(番地の大きいほう)から   下位に向かって使用される」とありますが、   スタックポインタが図で見て、下位アドレスの位置にある、   ということは、スタックの下位(小さい番地)から   データが取り出される、ということでしょうか? (2)   原子プログラム1の先頭で s が宣言されていますが、   大域変数であり、データ領域に割り当てられるので、   スタックには格納されない、ということで   よろしいでしょうか? (3)   問題文中の「コード領域」、「スタック領域」、   「データ領域」というのは、コンピュータ上の   どこにあるものなのでしょうか? (4)   問題文中の「原子プログラム1」は主たる関数   ともいうべきもので、「原子プログラム2」は   その補助的な関数ということでしょうか? お手数ですが、どなたか教えていただけないでしょうか? よろしくお願いします。

  • 基本情報 過去問 データディレクトリについて

    こんにちは、2010年10月の基本情報技術者試験を受験して 午後試験で 50.50点だったものです。 趣味でプログラミングをしていて、 JavaScriptでポーカーを再現し、 同じくJavaScriptで音声は出ませんが、 http://sdin.jp/browser/casino/blackjack/ と同様の動作をするブラックジャックを作るくらいです。 ( CGI, サーバーのことはよくわかりません。) 現在 暇な時間をみて、4月の同試験の受験に向けて勉強しているのですが、 わからないことが出てきましたので、質問させていただきます。 以下のサイトをみていただきたいのですが・・・ http://www.rs.kagu.tus.ac.jp/~infoserv/j-siken/H11b2/pm16.html 問題文中に、 「属性データベースのデータディレクトリは, データベース管理プログラムが主記憶に常駐させている。 顧客元帳データベースと特別顧客データベースのレコードを読み込む前に, データディレクトリを読み込むために ディスクから 1 回の入力を必要とする。 ログファイルは順ファイルであり, トランザクションごとにディスクに対して 1 回の出力を必要とする。」 とありますが、 「データディレクトリ」というのは、どのようなものなのでしょうか? ハードディスクなどの階層的な、ディレクトリのことでしょうか。 それとも、情報処理試験の参考書などに載っている 、 「ファイル編成法」に書かれている、ファイル内の、データの位置を示すもの((1)) なのでしょうか。 もし、(1)の場合であれば、顧客属性データベースの 「ファイルの」各顧客のデータの格納場所があらかじめ、 主記憶に読み込まれている、ということでしょうか。 それと、 設問2を解いていて、 表を完成させたら、以下のようになったのですが、        | dd入力 | db,ファイル入力 | db,ファイル出力 | ------------------------------------------------------    属性  |  0   |      1      |    0     |  ------------------------------------------------------    元帳  |  1   |      1      |    1     |  ------------------------------------------------------    特別  |  1   |      1      |    1     |  3  ------------------------------------------------------    ログ  |  0    |      0      |    1     |  ------------------------------------------------------    合計  |      |            |          | 8 正解を見たら合っているのですが、これでよいのでしょうか? 初歩的な質問ですいませんが、どなたか、解説していただけないでしょうか。 よろしくおねがいします。

  • 基本情報、過去問、データディレクトリについて

    こんにちは、2010年10月の基本情報技術者試験を受験して 午後試験で 50.50点だったものです。 趣味でプログラミングをしていて、 JavaScriptでポーカーを再現し、 同じくJavaScriptで音声は出ませんが、 http://sdin.jp/browser/casino/blackjack/ と同様の動作をするブラックジャックを作るくらいです。 ( CGI, サーバーのことはよくわかりません。) 現在 暇な時間をみて、4月の同試験の受験に向けて勉強しているのですが、 わからないことが出てきましたので、質問させていただきます。 以下のサイトをみていただきたいのですが・・・ http://www.rs.kagu.tus.ac.jp/~infoserv/j-siken/H11b2/pm16.html 問題文中に、 「属性データベースのデータディレクトリは, データベース管理プログラムが主記憶に常駐させている。 顧客元帳データベースと特別顧客データベースのレコードを読み込む前に, データディレクトリを読み込むために ディスクから 1 回の入力を必要とする。 ログファイルは順ファイルであり, トランザクションごとにディスクに対して 1 回の出力を必要とする。」 とありますが、 「データディレクトリ」というのは、どのようなものなのでしょうか? ハードディスクなどの階層的な、ディレクトリのことでしょうか。 それとも、情報処理試験の参考書などに載っている 、 「ファイル編成法」に書かれている、ファイル内の、データの位置を示すもの((1)) なのでしょうか。 もし、(1)の場合であれば、顧客属性データベースの 「ファイルの」各顧客のデータの格納場所があらかじめ、 主記憶に読み込まれている、ということでしょうか。 それと、 設問2を解いていて、 表を完成させたら、以下のようになったのですが、        | dd入力 | db,ファイル入力 | db,ファイル出力 | ------------------------------------------------------    属性  |  0   |      1      |    0     |  ------------------------------------------------------    元帳  |  1   |      1      |    1     |  ------------------------------------------------------    特別  |  1   |      1      |    1     |  3  ------------------------------------------------------    ログ  |  0    |      0      |    1     |  ------------------------------------------------------    合計  |      |            |          | 8 正解を見たら合っているのですが、これでよいのでしょうか? 初歩的な質問ですいませんが、どなたか、解説していただけないでしょうか。 よろしくおねがいします。

  • 基本情報試験の過去問がわかりません。

    http://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H17b2/am21.html 基本情報試験の過去問で、URLの問23がわかりません。 これは何かの公式に当てはまるのでしょうか? 解き方は、どのようにやるか教えてください。

  • 基本情報、過去問について

    こんにちは、2010年10月の基本情報技術者試験を受験して 午後試験で 50.50点だったものです。 趣味でプログラミングをしていて、 JavaScriptでポーカーを再現し、 同じくJavaScriptで音声は出ませんが、 http://sdin.jp/browser/casino/blackjack/ と同様の動作をするブラックジャックを作るくらいです。 ( CGI, サーバーのことはよくわかりません。) 現在 暇な時間をみて、4月の同試験の受験に向けて勉強しているのですが、 わからないことが出てきましたので、質問させていただきます。 下記の問題についてなのですが、 シノニムレコードの発生する可能性があるファイルアクセスはどれか。 ア 区分編成ファイルへのレコードの追加 イ 索引順編成ファイルのレコードの更新 ウ 順編成ファイルのレコードの更新 エ 直接編成ファイルへのレコードの追加 初見でこの問題を解いたところ間違えてしまったのですが、 正解は エ らしいのですが、いくつか質問させていただきます。 (1) インターネットで調べてみたのですが、、 直接編成ファイルは「間接アドレス方式」で ハッシュ関数などでアドレスを変換した場合 同じハッシュ値になる場合にシノニムレコードが発生する、 上記の理解でよろしいでしょうか? (2) それと、索引編成ファイルについても調べたのですが、 索引領域ファイルは階層構造になっている目次  (マスタ索引、シリンダ索引、トラック索引の索引領域) と、 データを格納する基本データ領域 の二つで構成されている、 とありましたが、(詳しいことはわかりません) 調べたところによりますと、 索引編成ファイルも直接アクセス可能とあったのですが、 シノニムレコードは発生しないのでしょうか。 データへのアクセスの方法がハッシュ関数などを使わない 別の方法なのでしょうか? それは二分探索のようなものなのでしょうか? (3) これらのファイル編成の方法に出てくる「ファイル」とは データベースのファイルを指すのでしょうか。 ほかのファイルのこともいうのでしょうか? どなたかご存知の方教えていただけないでしょうか? よろしくお願いします。

  • 基本情報 H8 問15、16について

    こんにちは、2010年10月の基本情報技術者試験を受験して 午後試験で 50.50点だったものです。 趣味でプログラミングをしていて、 Java で以下のサイトを参考にして、同様のゲームを作り、 http://www.crew.sfc.keio.ac.jp/~turkey/packman/ JavaScript でポーカーを再現するくらいです。 現在 暇な時間をみて、7月の同試験の受験に向けて勉強しているのですが、 わからないことが出てきましたので、質問させていただきます。 以下のサイトをみていただきたいのですが・・・ http://www.rs.kagu.tus.ac.jp/~infoserv/j-siken/H8a2/af15.html http://www.rs.kagu.tus.ac.jp/~infoserv/j-siken/H8a2/af16.html (a)  問15については設問4を間違えてしまったのですが、  (正解はアのところを、ウと答えてしまいました)  ステップ4でファイルYに出力する際、  目的の処理はマスタファイルの更新ですので、  「出力区分1」のレコードだけを出力しているのでしょうか?  あるいは、すでに「出力区分」では整列済みですので、  整列キーは「営業所コード」のみでよい、ということでしょうか。 (b)  問16についてなのですが、設問2を間違えてしまいました。  (b,c-イ、キ のところ、 エ、キ と答えてしまいました。)  宛先作成モジュールのところで、  「売上伝票の終わりまで (1) 」という実行条件だったので、  設問のところでは、必要ないのかなと思ってしまいました。  もし、顧客処理のところで (1) の条件がない場合、  どのような不具合が生じるのでしょうか? もしよければ、教えていただけないでしょうか? よろしくお願いします。

  • 基本情報技術者試験 過去問について

    こんにちは、2010年10月の基本情報技術者試験を受験して 午後試験で 50.50点だったものです。 趣味でプログラミングをしていて、 JavaScriptでポーカーを再現し、 同じくJavaScriptで音声は出ませんが、 http://sdin.jp/browser/casino/blackjack/ と同様の動作をするブラックジャックを作るくらいです。 ( CGI, サーバーのことはよくわかりません。) 現在 暇な時間をみて、4月の同試験の受験に向けて勉強しているのですが、 わからないことが出てきましたので、質問させていただきます。 以下のサイトをみていただきたいのですが・・・ http://www.rs.kagu.tus.ac.jp/~infoserv/j-siken/H11a2/pm03.html 問4の 設問2がよくわからないのですが・・・  正解は ウ なのですが、  ここで、記述されている 「正常値については、戻り値を求める 4 種類の計算式が   正しいかどうかを確認するデータ」  とはこの問題の場合ではどのようなデータになるのか、  例をしめしていただけないでしょうか。    設問1 のブラックボックステストのデータとどのように異なるのか、  教えていただけないでしょうか?  参考書などには、ホワイトボックステストの種類として  「命令網羅」  「分岐網羅(判定条件網羅)」  「分岐条件網羅(条件網羅)」  「複数条件網羅」  とありますが、自分の頭の中では  「条件を網羅すること」と、「計算式が正しいかどうか確認すること」  がうまく理解できません。 どなたか教えていただけないでしょうか よろしくお願いします。

  • CASLII(基本情報)の過去問がわかりません!

    現在、基本情報技術者試験突破のため、CASLIIの過去問を解いているのですが、理解できなくて困ってます。 平成13年春期の問8です。 http://www.rs.kagu.sut.ac.jp/~infoserv/j-siken/H13a2/pm08.html 特に6行目のシフト演算命令以降が何をしてるのかがさっぱりです。。。 教えて頂けると嬉しいです・・・ お願いします!!

  • 基本情報技術者試験の過去問について

    こんにちは、2010年10月の基本情報技術者試験を受験して 午後試験で 50.50点だったものです。 趣味でプログラミングをしていて、 JavaScriptでポーカーを再現し、 同じくJavaScriptで音声は出ませんが、 http://sdin.jp/browser/casino/blackjack/ と同様の動作をするブラックジャックを作るくらいです。 ( CGI, サーバーのことはよくわかりません。) 現在 暇な時間をみて、4月の同試験の受験に向けて勉強しているのですが、 わからないことが出てきましたので、質問させていただきます。 以下のサイトをみていただきたいのですが・・・ http://www.rs.kagu.tus.ac.jp/~infoserv/j-siken/H11a2/pm03.html 問4の 設問2がよくわからないのですが・・・  正解は ウ なのですが、  ここで、記述されている  「正常値については、戻り値を求める 4 種類の計算式が   正しいかどうかを確認するデータ」  とはこの問題の場合ではどのようなデータになるのか、  例をしめしていただけないでしょうか。    設問1 のブラックボックステストのデータとどのように異なるのか、  教えていただけないでしょうか?  参考書などには、ホワイトボックステストの種類として  「命令網羅」  「分岐網羅(判定条件網羅)」  「分岐条件網羅(条件網羅)」  「複数条件網羅」  とありますが、自分の頭の中では  「条件を網羅すること」と、「計算式が正しいかどうか確認すること」  がうまく理解できません。 どなたか教えていただけないでしょうか よろしくお願いします。

専門家に質問してみよう