基本情報技術者試験 -10ページ目

直接編成ファイルや、ハッシュ表探索では,

キー値をアドレス変換して、レコードの格納場所を定めます。

その際、データの格納位置をハッシュ関数によって計算するので、

なるべくその結果である、ハッシュ値の重複(シノニム)が起こらないように

設計する必要があります。

ハッシュ値に偏りがないように、格納アドレスが競合することが最も少ない分布は

一様分布で,ハッシュ値のすべての値が同じ確率で発生するように

等距離分布になるため,競合が起きにくく理想的と言えます。




基本情報技術者 平成25年秋期

午前問19


直接編成ファイルにおけるレコードのキー値を

格納アドレスに変換したハッシュ値の分布として,

理想的なものはどれか。


ア.一様分布
イ.幾何分布
ウ.二項分布
エ.ポアソン分布

【解説】

ハッシュ値が重複すると、格納アドレスの重複(シノニム)が発生するので、

ハッシュ法では同じハッシュ値の発生確率ができるだけ低くなっていることが理想です。




【正答】ア

レコードを記録媒体上にどのようにして配置するか、
またどのようにアクセスするかには、いろいろな方法があります。

これをファイル編成法といい、
一般的に
順編成、区分編成、直接編成、索引編成
の 4つのファイル編成法が使われます。


■ 順編成

 ファイルの先頭からレコードを連続して記録していく方式

レコードが連続して記録され、格納効率が良いのですが、

どのレコードがどの位置にあるかを示す制御情報が一切含まれていません。


特定のレコードへアクセスするためには、

直接アクセスすることはできなくて、

先頭レコードから順に読み込んでいく必要があります。

順次アクセス)


レコードの追加、削除をする場合は、ファイルを再作成しなければなりません。


■ 直接編成

 キー値を使い、レコードの格納するアドレスに変換して

格納場所、参照箇所にアクセスする方式を使います。


順編成とは異なり、

レコード記録順を問わないため、

レコードの追加や削除は容易であるという長所があります。

 キー値からアドレスに変換する際、

キー値をそのままアドレスに適用する場合や、

キー値とアドレスの変換表などを用いる場合は、直接アドレス方式といいます。

キー値から直接、アドレスを導くので、大量のデータ処理には向いていません。

ハッシュ関数など、

何らかの計算をしてアドレス変換を行う方式を、間接アドレス方式といいます。

ハッシングによりアドレスを分散することができるので、

大量のデータ処理に向いていますが

異なるキー値でも同じアドレスを指してしまう場合(シノニム)があるので、

別途、対策が必要です。




■ 区分編成


 1つのファイルの中に

メンバと呼ばれる、いくつかの領域に区分けした順編成で構成されているデータ群の領域と、

メンバが位置するアドレス情報を管理するディレクトリから構成されます。


レコードを更新する場合に、メンバ単位で再作成すればよいので、

順編成よりは処理効率が良い。

■ 索引編成

 索引情報が集められた索引領域

レコードが記録される基本データ領域

基本データ領域からあふれたレコードを記録するあふれ領域から構成されます。


順次アクセス、直接アクセスどちらでも可能です。

あふれ領域を用意することで、レコードの追加や削除にも柔軟に対応できるようになっています。

ただし、構造が複雑なため、

記録効率はあまりよくありません。


レコードの追加削除を繰り返すことで、

あふれ領域のデータが増大して、記録効率やアクセス時間が悪化した場合は、

再編成を行い、ファイル構造を作り直す必要があります。



(参考引用:徹底研究! 情報処理試験

実行状態: タスクがCPUを占有し、処理を実行している状態
実行可能状態: 実行準備が完了しており、CPUの割り当てを待っている状態
待ち状態: 入出力待ちなどですぐにCPU処理を行うことができない状態


タスク管理において、主記憶上の複数のタスクの中からひとつのタスクを選び、

CPUタイムを与えて処理を実行させます。

優先度がより高いタスクが CPUタイム・入出力タイムを 与えられることになります。


基本情報技術者 平成25年秋期

午前問18


優先度に基づくプリエンプティブなスケジューリングを行うリアルタイムOSで,

二つのタスクA,Bをスケジューリングする。

Aの方がBより優先度が高い場合に

リアルタイムOSが行う動作のうち,適切なものはどれか。


ア. Aの実行中にBに起動がかかると,Aを実行可能状態にしてBを実行する。


イ. Aの実行中にBに起動がかかると,Aを待ち状態にしてBを実行する。


ウ. Bの実行中にAに起動がかかると,Bを実行可能状態にしてAを実行する。


エ. Bの実行中にAに起動がかかると,Bを待ち状態にしてAを実行する。



【解説】

●Aの実行中にBに起動がかかると、

Aの優先度が高いので、Bは 実行可能状態になり、Aの実行を続けます。


●Bの実行中にAに起動がかかると,

Aの優先度が高いので、Bは 実行可能状態になります。

【正答】 ウ