はじめての親子ハイキングに挑戦!! >>

どちらも同じように、メモリ領域の隙間を集めて、連続した利用可能なメモリ領域を増やすとありますが、違いを教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

No1 hpsk さんの回答されている通りですが、名前を見てみればイメージしやすいのではないでしょうか。



 メモリコンパクション:記憶領域の圧縮
 ガーベジコレクション:ゴミ収集

使わなくなった領域 (=ゴミ) を解放する (=収集する) のがガーベジコレクションです。
ちなみに、プログラミング言語の機能としてガーベジコレクション (GC と略すことが多いです) と言った場合、使用しない領域をプログラマが意識することなく、自動で解放してくれる機能を指します。
たとえば、Java には GC があるとか、C/C++ には GC がないとか…。

ただし、ゴミを収集しただけでは、使用可能な領域が断片化してしまうことがあります。
この断片化のことをフラグメンテーションと呼びます。
連続した大きな領域が必要になったときに、フラグメンテーションが多数発生していると、必要な領域が確保できないことがあります。
これを解消するのが、メモリコンパクションです。

# MS-Windows 系 OS で、デフラグという機能があると思いますが、
# これはハードディスクのコンパクション (=フラグメンテーションの
# 解消、デフラグメンテーション) を行っているわけです。

本来の意味としては、メモリコンパクションにガーベジコレクションの意味は含まれないと思うのですが、どうなのでしょうか?>詳しい方、フォローあればお願いします!

確かに、情報処理試験の参考書の中には、両者を同じ意味としているものもあったように思います。
しかし、実使用上は上記のような差異があることを覚えておくと良いと思います。
    • good
    • 3

#1です。



> メモリコンパクションにガーベジコレクションの意味は含まれないと思うのですが
含まれないです。全く別物です。
ただ、メモリの整頓という点では共通しているので、情報処理試験レベルでは同一に扱っているのかもしれません。(私は情報処理試験については詳しく知らないのですが。。。)

大雑把な言い方をすれば、散らかった部屋を整頓するときに、
物を部屋の隅に寄せておくのがコンパクション
いらなくなった物を捨てるのがガーベージコレクション
という感じです。
GCだけやっちゃうと、確かに部屋の空間は増えたけど物はあっちこっちに散乱したまま、という状態になりますね。
    • good
    • 3

コンパクションは、burbeさんの仰るとおり、


「メモリ領域の隙間を集めて、連続した利用可能なメモリ領域を増やす」
ことですが、

ガーベジコレクションは、
「二度と使われないことがわかっているメモリ領域を解放して、再利用できるようにすること」
です。メモリの隙間を集めるという作業は含みません。
C言語のmallocはご存知ですか?
mallocした領域が必要なくなったら、freeをしなければいけませんが、それを自動的にやってくれるものだと思えばいいです。

ただし、ガーベジコレクションのアルゴリズムの中には、ついでにコンパクションもやってしまうものもあります。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qブリッジとスイッチングハブの違い

掲題の件についてどなたか教えて頂けないでしょうか?
どちらも、MACアドレスを見てデータの送信先を
決めるという点では同じ物だと思うのですが、
わざわざ違う名前が付いているからには
違う面もあるのではと思って調べていますが
さっぱりわかりません。

理解の仕方だとは思いますが、両者は同じ物だという
ように受け取れる書き方をしているWebサイトも
ありました。

Aベストアンサー

こんにちは
ソコソコ理解されておられるので、手短に書かせていただきますね。

>MACアドレスを見てデータの送信先を決めるという点では同じ物だと思う

ご理解されている内容でOKです。

>わざわざ違う名前が付いているからには違う面もあるのでは

最近では区別していないところも多いですよね。
両者の違いは、Port 数の違いで理解されても良いと思います。

ブリッジは、1対1を基本とする通信です。
スイッチは、n対nのそれぞれの通信で、ブリッジ動作を行います。

歴史的な流れで言うと、ブリッジが先に登場し、その後にスイッチです。

より詳しく勉強される場合は、以下のページが参考になると思います。

頑張ってくださいね。

参考URL:http://www.allied-telesis.co.jp/library/nw_guide/device/switch.html#002

Qインデックスアドレス指定方式とベースアドレス指定方式の違い

アドレス指定方式(アドレシング)についての質問です。
タイトルの通り、インデックスアドレス指定方式とベースアドレス指定方式の違いを教えていただきたいです。

参考書などでは、

●インデックスアドレス指定方式
・命令の番地部とインデックスレジスタの値を加算した値を有効アドレスとする
・インデックスレジスタの内容を変えるだけで別なアドレスの内容が参照できる
●ベースアドレス指定方式
・命令の番地部が指定するアドレスに、ベースレジスタの内容を加算した値を有効アドレスとする
・ベースレジスタの値を変えるだけでプログラムが主記憶装置のどこからでも実行できる(再配置可能)

となっています。
有効アドレス=番地部のアドレス+レジスタの値
となるのが同じで、基準となる値がインデックスアドレス指定方式のほうでは命令の番地部であり、ベースアドレス指定方式のほうはベースレジスタの値、ということまではわかったのですが、この「基準」が違うことでどういう違いがあるのか、具体的にどういう場合にどちらの方式が使われるのかがわかりません。
ベースアドレス指定方式の「再配置可能」という部分もどういう仕組みなのか、よくわからないです。

ご回答、よろしくお願いいたします。

アドレス指定方式(アドレシング)についての質問です。
タイトルの通り、インデックスアドレス指定方式とベースアドレス指定方式の違いを教えていただきたいです。

参考書などでは、

●インデックスアドレス指定方式
・命令の番地部とインデックスレジスタの値を加算した値を有効アドレスとする
・インデックスレジスタの内容を変えるだけで別なアドレスの内容が参照できる
●ベースアドレス指定方式
・命令の番地部が指定するアドレスに、ベースレジスタの内容を加算した値を有効アドレスとする
・ベ...続きを読む

Aベストアンサー

再配置可能には2つの意味があります。
1.(加工すれば)メモリーのどこにでも入れられるプログラム
2.メモリーにローディングしたあと、場所を動かしても動くプログラム

まず前提がいくつかあります。
1.プログラムはローディングされる時にどこに入るか分かりません。
2.ローディングされた時、先頭アドレスがベースレジスターに入れられます。
3.原則として絶対アドレスを捕まえないとメモリーにはアクセスできません。
4.ベースレジスター方式ではどこにローディングされても絶対アドレスが捕まえられます。
5.インデックスレジスター方式ではデータや飛び先の絶対アドレスの取得は困難です。
  そこでリンケージエディターやローダーで命令のアドレス部の書き換えをやるのです。
  インデックスは配列を処理すると考えればいいと思います。

再配置ですがインデックスレジスター方式では1番は通常やっていますが、
2は相当難しいです。
ベースレジスター方式では1も2も簡単にやってのけられます。
単にベースレジスターの書き換えだけで済みますから。

再配置可能には2つの意味があります。
1.(加工すれば)メモリーのどこにでも入れられるプログラム
2.メモリーにローディングしたあと、場所を動かしても動くプログラム

まず前提がいくつかあります。
1.プログラムはローディングされる時にどこに入るか分かりません。
2.ローディングされた時、先頭アドレスがベースレジスターに入れられます。
3.原則として絶対アドレスを捕まえないとメモリーにはアクセスできません。
4.ベースレジスター方式ではどこにローディングされても絶対アドレス...続きを読む

Qメモリキャッシュとディスクキャッシュの違い

よろしくお願いいたします。
キャッシュのことですが、
メモリキャッシュとディスクキャッシュについてなのですが、
これらの違いはなんでしょうか?
例えば、TemporaryInternetFilesに保存されるのは、
ディスクキャッシュで、クリアするとハードディスクの
空き容量が空く。
そして、あるホームページを表示した状態で
TemproraryInternetFilesをクリアしてもまだブラウザに
残っているのはメモリキャッシュに保存されているからである。
と解釈しておりますが、これでよろしいのでしょうか?
用語集など調べたのですが、いまいち自信が持てませんので
アドバイスお願いいたします。

Aベストアンサー

こんばんは。

gaia5 さんは、どうやら、ブラウザ固有の用語について、
ご質問されているように思います。
私は Windows ユーザーなので、知りませんが、
マックの IE や NN にはそういう設定があるんでしょうか。

だから、用語集などで調べられても、
一般的な意味について書かれていますから、
よけいに意味を、混同されていらっしゃるんだと思います。
私からは、本来の意味を説明させていただきます。


「ディスクキャッシュ」
ハードディスク等からファイルを読み込むとき、
読み込んだデータを、一時的にメモリに貯めておき、
次に使うときは、そのメモリから読み込むことによって、
表面的に読み込みを早くすることです。
書き込み時にも利用します。

「メモリキャッシュ」
メモリからデータを読み込むとき、
読み込んだデータを、一時的に非常に高速なメモリに貯めておき、
次に使うときは、その高速なメモリから読み込むことによって、
表面的に読み込みを早くすることです。
書き込み時にも利用します。

「キャッシュメモリ」
メモリキャッシュを行うときに使う、
普通のメモリに比べて、高価で高速なメモリ。
CPU に内蔵されている物や、マザーボードに付ける物があります。


だから、質問の内容を答えさせていただくと、

> 例えば、TemporaryInternetFilesに保存されるのは、
> ディスクキャッシュで、クリアするとハードディスクの
> 空き容量が空く。

一般的には、これをディスクキャッシュとは言いません。
「TemporaryInternetFiles」に保存されるファイルは、
「インターネット一時ファイル」や「Webキャッシュ」
といいます。

> そして、あるホームページを表示した状態で
> TemproraryInternetFilesをクリアしてもまだブラウザに
> 残っているのはメモリキャッシュに保存されているからである。

これも、一般的には、メモリキャッシュとは言いません。
(キャッシュメモリに保存されている可能性はありますが。)
単純に、メモリに保存されていると考えていいです。

しかし、ブラウザのWebキャッシュの設定上の、
メモリキャッシュ、ディスクキャッシュの説明としては、
terra5 さんのおっしゃる内容が正解なんだろうと思います。

それから、sesame さんのおっしゃる、
メモリキャッシュの説明は、間違っていると思います。
仮想メモリやスワッピングの説明に近いと思います。

こんばんは。

gaia5 さんは、どうやら、ブラウザ固有の用語について、
ご質問されているように思います。
私は Windows ユーザーなので、知りませんが、
マックの IE や NN にはそういう設定があるんでしょうか。

だから、用語集などで調べられても、
一般的な意味について書かれていますから、
よけいに意味を、混同されていらっしゃるんだと思います。
私からは、本来の意味を説明させていただきます。


「ディスクキャッシュ」
ハードディスク等からファイルを読み込むとき、
読み込んだデー...続きを読む

Q「スワッピング」と「スラッシング」の違いについて

こんにちは。よろしくお願いします。

「スワッピング」「スラッシング」。
どちらも「メモリが少なくなったとき、ハードディスク上の仮想メモリを使用する」という意味だと思うのですが…。

はっきりした区別を教えてください。

Aベストアンサー

スワッピングにはいくつかの意味があるのですが、一応仮想メモリーに
ついてのことだとして
スワッピング・・・単にメモリーとHDDの入れ替えのこと
スラッシング・・・スワッピングが頻発すること。
  結果としてコンピュータは殆んど仕事をしなくなります。

Qマルチタスクの種類(プリエンプティブ/ノンプリエンプティブ)

プリエンプティブ・マルチタスク、ノンプリエンプティブ・マルチタスクの違いがよくわかりません。もう少しわかりやすく解説してもらえませんか?
Http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%82%BF%E3%82%B9%E3%82%AF

Aベストアンサー

テーブルが1つした無い食堂で、複数の人が食事をする際
テーブルの前に皿を持って並んで

1皿食べ終わってから次の人に変わる、皿が残っている場合
は列の後ろに並び直すのが、ノンプリエンプティブ・マルチ
タスク
#1皿の量が多いとその人が食べ終わるまで他の人の食事が
#できなくなる。

1皿食べ終わっていなくても、時間がくれば強制的に次の人に
変わらされ、列の後ろに並び直すのが、プリエンプティブ・マ
ルチタスク

Qオーバレイ方式と仮想記憶システムの違い

オーバレイ方式は容量が大きくて、一度にローディングできないプログラムをセグメントに分割して必要なセグメントだけをロードして実行する方式。

仮想記憶システムはプログラムを分割して、必要な部分だけを主記憶装置にロードする。

オーバレイ方式は実記憶管理らしいのですが、上記のような感じに考えるとオーバレイ方式も仮想記憶管理になるような気がするのですが、何がどう違うのですか?

Aベストアンサー

No.1の補足です。

> 仮想記憶システムはプログラムを分割して、必要な部分だけを主記憶装置にロードする。

> オーバレイ方式は実記憶管理らしいのですが、上記のような感じに考えると
> オーバレイ方式も仮想記憶管理になるような気がするのですが、何がどう違うのですか?

仮想記憶の説明が中途半端で確かに紛らわしいですね。
仮想記憶の場合、すでに説明したように、プログラムの分割も必要な部分のメモリーへの
ロードも全てハードとOSがアプリケーションに気づかせる事無く勝手に行ないます。

オーバレイ方式ではこれを全てアプリケーションがやらないといけないのです。

次にオーバレイ方式が仮想記憶管理でない証拠をお見せしましょう。
オーバレイ構造の図を使いましょう。
参考URLがdocファイルなのでここにURLを載せられません。
Googleで「コンピュータシステム入門 オーバレイ構造」で検索してください。
問14にオーバレイ構造図があります。

このプログラムの本当の大きさは(A+B+C+D+E+F+G)です。
しかし、実際に使うメモリーの大きさは(A+B+D+F)のように小さいです。
一方、このプログラムを仮想記憶で動かす時には使う仮想メモリーの大きさは
(A+B+C+D+E+F+G)です。
使われる実記憶はこれよりも少ないはずですが実際にいくら使うかは
アプリケーションはノータッチです。

このようにアプリケーションから見た使用メモリー量と実際に使われるメモリー量の間に
差があるものが仮想記憶管理と言われるのです。

No.1の補足です。

> 仮想記憶システムはプログラムを分割して、必要な部分だけを主記憶装置にロードする。

> オーバレイ方式は実記憶管理らしいのですが、上記のような感じに考えると
> オーバレイ方式も仮想記憶管理になるような気がするのですが、何がどう違うのですか?

仮想記憶の説明が中途半端で確かに紛らわしいですね。
仮想記憶の場合、すでに説明したように、プログラムの分割も必要な部分のメモリーへの
ロードも全てハードとOSがアプリケーションに気づかせる事無く勝手に行ないます...続きを読む

Q「いずれか」と「いづれか」どっちが正しい!?

教えて下さいっ!
”どちらか”と言う意味の「いずれか」のかな表記として
「いずれか」と「いづれか」のどちらが正しいのでしょう???

私は「いずれか」だと思うんですが、辞書に「いずれか・いづ--。」と書いてあり、???になってしまいました。
どちらでもいいってことでしょうか?

Aベストアンサー

「いずれか」が正しいです.
「いづれ」は「いずれ」の歴史的かな遣いですので,昔は「いづれ」が使われていましたが,現代では「いずれ」で統一することになっていますので,「いずれ」が正しいです.

Qジョブとタスクの違いは?

基本情報処理試験の勉強をしてるのですが、ジョブとタスクの違いがわかりません。
どなたか教えていただけないでしょうか?

よろしくお願いします。

Aベストアンサー

最初に出くわす、疑問です。
懐かしい言葉です。
皆さん、悩む事項の一つです。

Job Task 日本語に訳すと「仕事」です。
ジョブは、一般的に、コンピュータシステムの外部から認識される仕事の単位で、
コンパイル、リンク、実行はよく使われるジョブを構成するジョブステップと言われる例です。

それとは対照的な、タスクは、コンピュータの中での細分化された仕事の単位です。
これは、コンパイルするためにはコンピュータの中でどんな仕事に切り分けられるかです。
これは、コンピュータの中で発生する仕事の単位です。
例えば、ソースイメージをファイルから「読み込む」という仕事、それを何回かで読み込む仕事、読み込んだソースを分析し、機械語に書き直す仕事、機械語に書き直したファイルを「書き出す」仕事、こういったことをコンピュータの中ではやっている訳です。
こうしてタスクを管理するのは、タスクコントローラと言います。
ジョブを管理するのをジョブコントローラと言い、情報処理では、完全に分離されます。

タスクコントローラに関しては、この後だんだんと理論が深くなっていきます。
CPUを使う仕事と、ファイルを読み書きする仕事といったことです。
タスクスケジューラ、I/O完了待ち合わせ、ディスパッチャー、同期管理といった理論に入っていきます。
特にもう一つぶち当たる「壁」は、プログラム作成における「ルーチン」です。
「リエントラント型」、「リユーザブル型」です。
日本語的には、「再入可能」、「再利用可能」というものです。
特にタスクと関係するのは、ディスパッチャの「リエントラント型」のタスクコントローラといった理論は、最高に面白くなると思います。

応援してます。
がんばって。

最初に出くわす、疑問です。
懐かしい言葉です。
皆さん、悩む事項の一つです。

Job Task 日本語に訳すと「仕事」です。
ジョブは、一般的に、コンピュータシステムの外部から認識される仕事の単位で、
コンパイル、リンク、実行はよく使われるジョブを構成するジョブステップと言われる例です。

それとは対照的な、タスクは、コンピュータの中での細分化された仕事の単位です。
これは、コンパイルするためにはコンピュータの中でどんな仕事に切り分けられるかです。
これは、コンピュータの中で発生する仕事の...続きを読む

Qミドルウエアの具体例を教えてください。

初級シスアドで、OSとアプリケーションソフトの中間に位置するものとしてミドルウエアがあり
 ・データベース管理システム(DBMS)
 ・通信管理システム(LAN制御を含む)
 ・ソフトウエア開発支援ツール
 ・EUCツール
 ・運用管理ツール
説明されています。なんとなく具体例が推測できるものもありますし、ぜんぜんイメージできないものもあります。
そこで、推測が間違っていないか確認したいのと、イメージできないものの場合具体例をあげていただければ助かります。

(1) データベース管理システム(DBMS)
多分、OracleやSQL-SeaverやMySQLのようなものだと思うのですが。
この推測はあってますか?

(2) 通信管理システム(LAN制御を含む)
プラットホームや使用アプリが違う場合のデータのやり取りを行うようなもの・・・というイメージがあります。使用アプリの場合はODBCドライバみたいなものの様な(全然自信ない)、プラットホームとなると実例が浮かんできません。

(3) ソフトウエア開発支援ツール
なんでしょう?プログラミングジェネレータのことでしょうか。
EXCELマクロの自動記録機能なんてのもこれに入るのでしょうか。ひょっとするとEXCELマクロは、次のEUCツールでしょうか?

(4) EUCツール
AccessとかEXCELとかでしょうか。イメージ沸きません。

(5) 運用管理ツール
う~ん・・・なんでしょう?

補足:IMEとかもミドルウエアと考えてよいのだろうか? WEBで調べるとワープロや表計算もミドルウエアと定義しているものもあります。それは少し拡張解釈なような気がします。

いずれにせよ、すっきりした定義と具体例を書いてあるものを見つけられないのです。

宜しくお願いします。

初級シスアドで、OSとアプリケーションソフトの中間に位置するものとしてミドルウエアがあり
 ・データベース管理システム(DBMS)
 ・通信管理システム(LAN制御を含む)
 ・ソフトウエア開発支援ツール
 ・EUCツール
 ・運用管理ツール
説明されています。なんとなく具体例が推測できるものもありますし、ぜんぜんイメージできないものもあります。
そこで、推測が間違っていないか確認したいのと、イメージできないものの場合具体例をあげていただければ助かります。

(1) データベース管理システ...続きを読む

Aベストアンサー

(1) データベース管理システム(DBMS):お書きになられた通りです。
(2) 通信管理システム(LAN制御を含む:TCP/IPドライバー等通信制御を行うアプリケーションです。ファームウェアも該当するでしょう。通常ユーザが操作する類のアプリケーションではありません。
(3) ソフトウエア開発支援ツール:VisualBASIC、C言語、Perl等、亜ぷロケーションを開発するツール、プログラミング言語と言えば分かり易いでしょうか。
(4)EUCツール:エンドユーザが使用するアプリケーションです。
(5)運用管理ツール:クライアントPCの管理ツール、DBシステムの管理ツール、WEB/メールのサーバ管理等、運用機器を管理するツールです。最近では情報漏えいを防止する目的のツールが多数出ています。

Qどうしても基本情報午後問題合格点が欲しい!方法は?

はじめまして。
基本情報処理試験を受けはじめてかれこれ4年経ちます。
社会人の為なかなか時間がとれず、通勤時間の細切れ時間を使って毎日復習(午前)を行っています。午前は得意で700点以上取れた時もありました。
しかし、午後問題がどうしても取れません。一度だけ合格点600を超えたときがありましたが、それっきりです。色々問題集を本屋で見ましたが、おそらく勉強の仕方が悪いと思っています。
尚、私は業務で使っていますアセンブラ2問から先に始め、残りの時間を残りの議事問題やHW問題、設計問題に当てています。時間配分を考えているつもりですが、大抵後半で時間切れ。最後は設計の問題ですが、問題を読む時間すらなくなっている状況です。
要は、現状の力では、限られた時間に解く能力、読解力もすべての午後問題で出ていません。合格した人は簡単そうに話しますが、私にはそれが理解できません。問題見れば解法がすぐ思いつくとも言いますが、どうも?です。
どなたか、私みたいな社会人で上記の様な苦労している人にとっておきの午後得点方法を教えてください。宜しくお願いします。

Aベストアンサー

IT系で管理職をやっている者です。人事も担当しておりまして、本試験は毎年指導に当たっています。
基本情報の午後問でハマる人の共通点は
1.プログラムやアルゴリズムの稼働型がイメージできていない。
2.出題者(IPA)がこの試験で確認したい内容の最も根幹の部分を学習せずに小手先の合格テクニックに走っている。
…の2点です。もちろん合格テクニックで要領良くサクッと合格する人もいますが、何度も落ちる人は経験上間違いなく当てはまると思っています。
ですので、2回以上受けて受からない人には受験要綱熟読させます。
それでIPAが「覚えてこい」と書いているそれぞれの項目についてどんなテキストを使ってどれくらい学習したかを洗い出させます。
9割以上が 3.アルゴリズム / 4.SQL / 7.プログラム設計 の3分野がイマイチよくわからないと言います。
「アルゴリズムが走ってるな、と感じる瞬間ってある?」と聞くと沈黙する人がほとんど。そりゃ受からんよ、と突っ込みます。
何度この流れを繰り返してきたことか…。

すでにお持ちかとは思いますが、「かんたんアルゴリズム解法」(大滝みや子 著)を熟読してください。
CASLはシュミレータを使って実際動かしてますよね?もし動かしていないならばすぐにシュミレータ付きの参考書が売ってますので、購入してみてください。

とにかく「この部分学習しなきゃシスアドと変わらないでしょ?」という部分の学習が欠けているんだと思います。
「問題を見て解答が浮かぶ」=「プログラムやアルゴリズムを見て実際に動いている姿や結果が想像できる」であると思います。

そんなわけで、
1.受験要綱を読み直す
2.受験要綱の各章ごとに自分が今までやってきたことを洗い出す
3.合格テクニックに頼っている個所を探し出す
4.各分野に「定番」書籍があるので、苦手分野はそれを読み倒す
…以上をお勧めします。

IT系で管理職をやっている者です。人事も担当しておりまして、本試験は毎年指導に当たっています。
基本情報の午後問でハマる人の共通点は
1.プログラムやアルゴリズムの稼働型がイメージできていない。
2.出題者(IPA)がこの試験で確認したい内容の最も根幹の部分を学習せずに小手先の合格テクニックに走っている。
…の2点です。もちろん合格テクニックで要領良くサクッと合格する人もいますが、何度も落ちる人は経験上間違いなく当てはまると思っています。
ですので、2回以上受けて受からない人には受...続きを読む


人気Q&Aランキング